Update policy rules
In this example we will explain some more details around the policy configuartions. Guardian can connect to an external identity manager to retrieve user details information. When a user creates an appeal using the policy given below, Guardian will connect to http://youridentitymanager.com/api/users/{user_id} for taking the user information defined in the iam_schema within the policy.
Policy Example
id: my-second-policy
iam:
  provider: http
  config:
    url: http://youridentitymanager.com/api/users/{user_id}
  schema:
    email: email
    name: fullName
    company: companyName
steps:
  - name: employee_check
    description: only allow employee to access our resources
    strategy: auto
    approve_if: $appeal.creator.company == "Company Name"
  - name: resource_owner_approval
    description: resource owner approval. Will skip this for playground dataset
    strategy: manual
    when: not ($appeal.resource.type == "dataset" && $appeal.resource.urn == "my-bq-project:playground")
    approvers:
      - $appeal.resource.details.owner
Explanation
For the approval, a user's appeal will follow the steps employee_check and resource_owner_approval in the same order.
The first step is an auto strategy which checks the pre-defined condition that the employee who is requesting for the access belongs to the same company. Until then the status of the appeal will be pending for the first step(employee_check), and blocked for the second step(resource_owner_approval).
Once this is approved, the status is updated to approved and pending for the two steps respectively. The when field contains the condition for which the step can be skipped. In this case, if the appeal is for a playground dataset, the resource owner approval is not required, otherwise owner's approval is required to get the status of appeal to active.