Skip to main content

Setup Authorization Policy

Before we can start storing secrets into the newly created Secret Ring, we must define our access policy. This access policy will determine the resources and permissions that users will need to authorize with to recover secrets.

This section will assume you are using the Zanzi Authorization GRPC Service that is included in the example docker-compose.yaml file from the previous step. If you are using the SourceHub ACP module instead, you can reference the Create a SourceHub ACP Policy doc.

Create a Policy

The Zanzi Authorization GRPC Service is a Zanzibar based global decentralized authorization system. Developers write policies using our Relation-Based Access Control (RelBAC) DSL, which allows you to define resources, relations, and permissions.

  • Resources: Generic container for some kind of "thing" you wish to gate access to or provide authorization for. It can be anything from a secret on Orbis, a document on DefraDB, or any other resource.

  • Relation: Named connections between resources. Similar to a database table that might have relations between its schema types, so does the SourceHub ACP module. This allows us to create expressive policies that go beyond traditional Role-Based or Attribute-based access control.

  • Permissions: Computed queries over resources, relations, and even other permissions (they're recursive!).

Secret Resource Policy

Here we are going to create a basic policy to govern access to our secrets in Orbis.

Create a file named orbis-policy.yaml and paste the following:

name: Orbis Secret Policy

resources:

secret:
relations:
owner:
types:
- actor
collaborator:
types:
- actor

permissions:
read:
expr: owner + collaborator
edit:
expr: owner
delete:
expr: owner

Now that we have our policy defined, we can upload it to the Zanzi service

orbisd client policy create -f orbis-policy.yaml

Which will return back the created policy ID. We can confirm the policy has been created by using the policy describe command.

orbisd client policy describe <policy-id>