openfga @ v1.3.8
integrity
- size
- 702.6 KiB
- downloaded
- last checked
- overlays
- go
- detected
- go module github.com/openfga/openfga
release notes
[BREAKING] this release introduced protobuf API changes to the gRPC API to accommodate changes for the up and coming Conditional Relationship Tuples feature. No changes to the OpenAPI specification for the HTTP API have changed. gRPC clients that are referencing the old protobuf definitions are not compatible with this release and future releases >= v1.3.8. To upgrade to this release please update your existing OpenFGA gRPC clients to the latest protobuf API definitions. Failing to do so can lead to message and field level incompatibilities with existing clients.
Added
-
Experimental support for ABAC Conditional Relationships.
To enable experimental support for ABAC Conditional Relationships you can pass the
enable-conditionsexperimental flag. For example,openfga run --experimentals=enable-conditions. The upcomingv1.4.0release will introduce official support for this new feature. For more information please see our official blog post. Thev1.4.0release will have more official documentation on openfga.dev.⚠️ If you enable experimental support for ABAC and introduce models and/or relationship tuples into the system and then choose to rollback to a prior release, then you may experience unintended side-effects. Care should be taken!
Read on for more information.
If you introduce a model with a condition defined in a relation's type restriction(s) and then rollback to a prior OpenFGA release, then the model will be treated as though the conditioned type restriction did not exist.
model schema 1.1 type user type document relations define viewer: [user with somecondition] condition somecondition(x: int) { x < 100 }and then you rollback to
v1.3.7or earlier, then the model above will be treated equivalently tomodel schema 1.1 type user type document relations define viewer: [user]Likewise, if you write a relationship tuple with a condition and then rollback to a prior release, then the tuple will be treated as an unconditioned tuple.
- document:1#viewer@user:jon, {condition: "somecondition"}will be treated equivalently to
document:1#viewer@user:joninv1.3.7or earlier. That is,Check(document:1#viewer@user:jon)would return{allowed: true}even though at the tuple was introduced it was conditioned. -
Minimum datastore schema revision check in the server's health check (#1166)
Each OpenFGA release from here forward will explicitly reference a minimum datastore schema version that is required to run that specific release of OpenFGA. If OpenFGA operators have not migrated up to that revision then the server's health checks will fail.
-
Username/password configuration overrides for the
openfga migrateentrypoint (#1133). Thanks for the contribution @martin31821!Similar to the server's main entrypoint
openfga run, you can now override the datastore username and password with environment variables. when running theopenfga migrateutility. -
Healthcheck definitions in Dockerfile (#1134). Thanks @Siddhant-K-code!
Changed
-
Database iterators yielded by the RelationshipTupleReader storage interface now accept a
contextparameter which allows iteration to be promptly terminated (#1055)We have noticed improvements in query performance by adding this because once a resolution path has been found we more quickly cancel any further evaluation by terminating the iterators promptly.
-
Improved tuple validation peformance with precomputation of TTUs (#1171)
-
Refactored the commands in the
pkg/server/commandspackage to uniformly use the Options builder pattern (#1142). Thanks for the contribution @ilaleksin! -
Upgraded to Go
1.21.4(#1143). Thanks @tranngoclam!
Fixed
download
curl -fL -o v1.3.8.zip https://ratatoskr.space/pkg/openfga/v1.3.8.zip
printf '%s %s\n' 'fb7a7c3d260eb3402a20e792c262df0ac17f352aa1cc3428d9305ef1558adb4f' 'v1.3.8.zip' | sha256sum -c -
$url = "https://ratatoskr.space/pkg/openfga/v1.3.8.zip"
$out = "v1.3.8.zip"
Invoke-WebRequest -Uri $url -OutFile $out
if ((Get-FileHash $out -Algorithm SHA256).Hash.ToLowerInvariant() -ne "fb7a7c3d260eb3402a20e792c262df0ac17f352aa1cc3428d9305ef1558adb4f") { throw "sha256 mismatch" }
curl -fL -o v1.3.8.tar.gz https://ratatoskr.space/pkg/openfga/v1.3.8.tar.gz
printf '%s %s\n' 'ef38e9a0240eea0a4455e6dcb265f71df771f108f57a4011b64ef557f48c4064' 'v1.3.8.tar.gz' | sha256sum -c -
$url = "https://ratatoskr.space/pkg/openfga/v1.3.8.tar.gz"
$out = "v1.3.8.tar.gz"
Invoke-WebRequest -Uri $url -OutFile $out
if ((Get-FileHash $out -Algorithm SHA256).Hash.ToLowerInvariant() -ne "ef38e9a0240eea0a4455e6dcb265f71df771f108f57a4011b64ef557f48c4064") { throw "sha256 mismatch" }
download via yggdrasil mesh
curl -fL -o v1.3.8.zip http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/openfga/v1.3.8.zip
printf '%s %s\n' 'fb7a7c3d260eb3402a20e792c262df0ac17f352aa1cc3428d9305ef1558adb4f' 'v1.3.8.zip' | sha256sum -c -
$url = "http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/openfga/v1.3.8.zip"
$out = "v1.3.8.zip"
Invoke-WebRequest -Uri $url -OutFile $out
if ((Get-FileHash $out -Algorithm SHA256).Hash.ToLowerInvariant() -ne "fb7a7c3d260eb3402a20e792c262df0ac17f352aa1cc3428d9305ef1558adb4f") { throw "sha256 mismatch" }
curl -fL -o v1.3.8.tar.gz http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/openfga/v1.3.8.tar.gz
printf '%s %s\n' 'ef38e9a0240eea0a4455e6dcb265f71df771f108f57a4011b64ef557f48c4064' 'v1.3.8.tar.gz' | sha256sum -c -
$url = "http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/openfga/v1.3.8.tar.gz"
$out = "v1.3.8.tar.gz"
Invoke-WebRequest -Uri $url -OutFile $out
if ((Get-FileHash $out -Algorithm SHA256).Hash.ToLowerInvariant() -ne "ef38e9a0240eea0a4455e6dcb265f71df771f108f57a4011b64ef557f48c4064") { throw "sha256 mismatch" }
| artifact | format | size | hashes |
|---|---|---|---|
| v1.3.8.zip | zip | 703.3 KiB |
blake3-24 302eb7d72e8d090762a93959444c5b5f96e34978a4cefaf1
sha256 fb7a7c3d260eb3402a20e792c262df0ac17f352aa1cc3428d9305ef1558adb4f
sha1 bd90f642a313a9b5b6e0a20feddaccf3698d8da2
|
| v1.3.8.tar.gz | tar.gz | 582.9 KiB |
blake3-24 bb7292277bfb5253dfe0c29ee2f8edfe1c22c6e7f64f4235
sha256 ef38e9a0240eea0a4455e6dcb265f71df771f108f57a4011b64ef557f48c4064
sha1 fe67bdb526e59e7c48dbaecab8bb5df4c37c6d9e
|
go module archive
module zip with the module path rewritten to this mirror; fetched by go get through the
GOPROXY route
| artifact | format | size | hashes |
|---|---|---|---|
| v1.3.8.zip | zip | 707.4 KiB |
blake3-24 d97ec9e3e629ae238b113b56c84daba0ec0a6f35ceb24cd9
sha256 ed376c98e4b2c253badfba6710e895e64eaaf2fe5cefd72e417441807492a13a
sha1 b46e5f4a7c53d7b3593cc277c26ee9dd6b5330a7
|
install
http_archive(
name = "openfga",
urls = ["https://ratatoskr.space/pkg/openfga/v1.3.8.tar.gz"],
integrity = "sha256-7zjpoCQO6gpEVebcsmX3Hfdx8Qj1ekARtk71V/SMQGQ=",
strip_prefix = "openfga-v1.3.8",
)
.url = "https://ratatoskr.space/pkg/openfga/v1.3.8.tar.gz",
GOPROXY=https://ratatoskr.space GOSUMDB=off go get ratatoskr.space/pkg/openfga@v1.3.8
install via yggdrasil mesh
http_archive(
name = "openfga",
urls = ["http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/openfga/v1.3.8.tar.gz"],
integrity = "sha256-7zjpoCQO6gpEVebcsmX3Hfdx8Qj1ekARtk71V/SMQGQ=",
strip_prefix = "openfga-v1.3.8",
)
.url = "http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/openfga/v1.3.8.tar.gz",
GOPROXY=http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg GOSUMDB=off GOINSECURE=14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/* go get 14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/openfga@v1.3.8