mirror of
https://github.com/microsoft/regorus.git
synced 2026-08-05 02:16:11 +00:00
Dependencies updated: - cc: 1.2.29 -> 1.2.31 - chrono-tz: 0.10.3 -> 0.10.4 - clap: 4.5.40 -> 4.5.42 - clap_builder: 4.5.40 -> 4.5.42 - clap_derive: 4.5.40 -> 4.5.41 - phf: 0.11.3 -> 0.12.1 - phf_shared: 0.11.3 -> 0.12.1 - rand: 0.9.1 -> 0.9.2 - rb-sys: 0.9.116 -> 0.9.117 - rb-sys-build: 0.9.116 -> 0.9.117 - redox_syscall: 0.5.13 -> 0.5.17 - rustix: 1.0.7 -> 1.0.8 - serde_json: 1.0.140 -> 1.0.142 - windows-targets: 0.53.2 -> 0.53.3 - winnow: 0.7.11 -> 0.7.12 Removed obsolete build dependencies: - chrono-tz-build, parse-zoneinfo, phf_codegen, phf_generator, rand_core Updated in: main, ffi, java, python, ruby, and wasm bindings Added *.sln to .gitignore to exclude Visual Studio solution files Also fix python publishing pipeline by removing non-existent dependency. Signed-off-by: Anand Krishnamoorthi <anakrish@microsoft.com>
regorus
Regorus is
- Rego-Rus(t) - A fast, light-weight Rego interpreter written in Rust.
- Rigorous - A rigorous enforcer of well-defined Rego semantics.
Regorus can be used in Python via regorus package. (It is not yet available in PyPI, but can be manually built.)
See Repository.
To build this binding, see building
Usage
import regorus
# Create engine
engine = regorus.Engine()
# Load policies
engine.add_policy_from_file('../../tests/aci/framework.rego')
engine.add_policy_from_file('../../tests/aci/api.rego')
engine.add_policy_from_file('../../tests/aci/policy.rego')
# Add policy data
data = {
"metadata": {
"devices": {
"/run/layers/p0-layer0": "1b80f120dbd88e4355d6241b519c3e25290215c469516b49dece9cf07175a766",
"/run/layers/p0-layer1": "e769d7487cc314d3ee748a4440805317c19262c7acd2fdbdb0d47d2e4613a15c",
"/run/layers/p0-layer2": "eb36921e1f82af46dfe248ef8f1b3afb6a5230a64181d960d10237a08cd73c79",
"/run/layers/p0-layer3": "41d64cdeb347bf236b4c13b7403b633ff11f1cf94dbc7cf881a44d6da88c5156",
"/run/layers/p0-layer4": "4dedae42847c704da891a28c25d32201a1ae440bce2aecccfa8e6f03b97a6a6c",
"/run/layers/p0-layer5": "fe84c9d5bfddd07a2624d00333cf13c1a9c941f3a261f13ead44fc6a93bc0e7a"
}
}
}
engine.add_data(data)
# Set input
input = {
"containerID": "container0",
"layerPaths": [
"/run/layers/p0-layer0",
"/run/layers/p0-layer1",
"/run/layers/p0-layer2",
"/run/layers/p0-layer3",
"/run/layers/p0-layer4",
"/run/layers/p0-layer5"
],
"target": "/run/gcs/c/container0/rootfs"
}
engine.set_input(input)
# Eval rule
value = engine.eval_rule('data.framework.mount_overlay')
# Print value
print(value)