CLI
Guardian is a command line tool used to interact with the main guardian service. Follow the installation and configuration guides to set up the CLI tool for Guardian.
List of Commands
Guardian CLI supports many commands. To get a list of all the commands, follow these steps. Enter the following code into the terminal:
$ guardian
# or
$ guardian --help
List of all availiable commands are as follows:
CORE COMMANDS
  appeal      Manage appeals
  policy      Manage policies
  provider    Manage providers
  resource    Manage resources
ADDITIONAL COMMANDS
  completion  Generate shell completion scripts
  config      Manage client configurations
  help        Help about any command
  job         Manage jobs
  reference   Show command reference
  server      Server management
  version     Print version information
To know the usage of any of the core commands use the following syntax:
$ guardian <command> <subcommand> --help
Managing Policies
Policies are used to define governance rules of the data access. Policies command allows us to list, create or update policies.
What is inside?
Enter the following code into the terminal:
$ guardian policy
The output is the following:
Available Commands:
  apply       Apply a policy config
  create      Create a new policy
  edit        Edit a policy
  init        Creates a policy template
  list        List and filter access policies
  plan        Show changes from the new policy
  view        View a policy
Policy Init
This command is used to create a policy template with a given file name. Check policy reference for more details on the policy configuration.
Syntax for making the policy initialization file.
$ guardian policy init --file=<output-name>
flags required
-f, --file string   File name for the policy config
Example Configurations
We can configure a policy file policy.yaml as shown below.
# policy.yaml
id: my_policy
steps:
  - name: manager_approval
    description: Manager approval for sensitive data
    when: $appeal.resource.details.is_sensitive == true
    strategy: manual
    approvers:
      - $appeal.creator.manager_email
  - name: resource_owner_approval
    description: Approval from resource admin/owner
    strategy: manual
    approvers:
      - $appeal.resource.details.owner
Now, we can create a policy using the create command as given below.
Create Policy
The create command is used to register a new policy. For this we have to define our policy file, which would be passed as a flag to the create command.
Policy has version to ensure each appeal has a reference to an applied policy when it's created. A policy is created with an initial version equal to 1.
Usage guardian policy create [flags]
Flags required:
-f, --file string   Path to the policy config
$ guardian policy create --file=<file-path>
The output is the following:
policy created with id: my_policy
List Policies
To get a list and filter of all the avaliable access policies present in the Guardian database, use the list command as explained here.
Enter the following code into the terminal:
$ guardian policy list
The output is the following:
  ID             VERSION  DESCRIPTION                             STEPS
  my_policy       1        two step policy for tableau workbooks   manager_approval,resource_owner_approval
Edit Policy
To update an existing policy present in the Guardian' database using a file, use the edit command as explained here. Updating a policy actually means creating a new policy with the same id but the version gets incremented by 1. Both the new and previous policies still can be used by providers.
Usage :
$ guardian policy edit --file=<file-path>
An example update of the policy.yaml file is given below:
id: my_policy
steps:
  - name: supervisor_approval
    strategy: manual
    approvers:
    - $appeal.resource.details.supervisor
  - name: head_approval
    strategy: manual
    approvers:
    - $appeal.resource.details.owner
Now to update the policy defined here.
$ guardian policies edit --file policy.yaml
The output is the following:
policy updated
Note that on update of a policy it's version is also updated. We can verify this by listing all the policies.
  ID             VERSION  DESCRIPTION                                       STEPS
  my_policy     2        two step policy for tableau workbooks             supervisor_approval,resource_owner_approval
View Policy
View a policy. Display the ID, name, and other information about a policy.
Usgae:
$ guardian policy view <policy-id> --version=<policy-version>
Flags
-o, --output string    Print output with the selected format (default "yaml")
-v, --version string   Version of the policy
Apply Policy
Apply a policy config.Create or edit a policy from a file.
Usage:
$ guardian policy apply --file=<file-path>
Flags -f, --file string Path to the policy config
Plan Policy
Show changes from the new policy. This will not actually apply the policy config.
Usage:
$ guardian policy plan --file=<file-path>
flags
-f, --file string   Path to the policy config
Managing Providers
Providers command allows us to list, create or update providers.
- What is inside?
 
Enter the following code into the terminal:
$ guardian providers
The output is the following:
Available Commands:
  apply       Apply a provider
  create      Register a new provider
  edit        Edit a provider
  init        Creates a provider template
  list        List and filter providers
  plan        Show changes from the new provider
  view        View a provider details
Provider Init
This command is used to creates a provider template. Following this define the provider's config file, which would be passed as a flag to the create command. Check provider reference for more details on the configuration.
Syntax for making the initialization file.
guardian provider init [flags]
Flags required :
-f, --file string   File name for the policy config
Example Configurations
We can configure a provider.yaml file for tableau provider as shown below.
type: tableau
urn: 691acb66-27ef-4b4f-9222-f07052e6ffg0
labels:
  entity: gojek
  landscape: id
credentials:
  host: https://prod-apnortheast-a.online.tableau.com
  username: user@test.com
  password: password@123
  content_url: guardiantestsite
appeal:
  allow_active_access_extension_in: 7d
resources:
  - type: metric
    policy:
      id: policy_20
      version: 1
    roles:
      - id: read
        name: Read
        permissions:
          - name: Read:Allow
      - id: write
        name: Write
        permissions:
          - name: Write:Allow
To register a new provider use the create command as shown below.
Create Provider
The create command is used to register a new provider on the Guardian database.
Usage  guardian provider create [flags]
Flags required and usage:
-f, --file string   Path to the provider config
$ guardian providers create --file provider.yaml
Output is of the following form:
provider created with id: 26
List Providers
To get a list of all the providers present in the Guardian' database, use the list command as explained here.
Enter the following code into the terminal:
$ guardian providers list
The output is the following:
  ID  TYPE     URN
  21  tableau  691acb66-27ef-4b4f-9222-f07052e6ffc2
  22  tableau  691acb66-27ef-4b4f-9222-f07052e6ffc8
  26  tableau  691acb66-27ef-4b4f-9222-f07052e6ffg0
  24  tableau  691acb66-27ef-4b4f-9222-f07052e6ffd0
Edit Provider
To update an existing provider present in the Guardian' database, use the edit command as explained here. Update the provider.yaml file with required changes.
Usage : $ guardian provider edit <provider-id> --file <file-path>
Flags required :
-f, --file string   Path to the provider config
The output is the following:
provider updated
Plan Provider
This command is to show the changes from the new provider. This command will not actually apply the provider config.
Usage : $ guardian provider plan [flags]
Flags required :
-f, --file string   Path to the provider config
View Provider
This command is used to view a provider details. Displays the ID, name, and other information about a provider.
Usage : $ guardian provider view <provider-id> [flags]
Flags required :
-o, --output string   Print output with the selected format (default "yaml")
Apply Provider
Apply a provider. It is used to create or edit a provider from a file.
Usage : $ guardian provider apply [flags]
Flags required :
-f, --file string   Path to the provider config
$ guardian provider apply --file <file-path>
Managing Resources
Resources command allows us to list and set metadata of resources.
- What is inside?
 
Enter the following code into the terminal:
$ guardian resources
The output is the following:
Available Commands:
  list        List resources
  set         Store new metadata for a resource
  view        View a resource details
List Resources
It fetches the list of all the resources in the Guardian's database.
Enter the following code into the terminal:
$ guardian resource list
$ guardian resource list --provider-type=bigquery --type=dataset
$ guardian resource list --details=key1.key2:value --details=key1.key3:value
List resources flags:
-D, --deleted                Show deleted resources
-d, --details stringArray    Filter by details object values. Example: --details=key1.key2:value
-n, --name string            Filter by name
-T, --provider-type string   Filter by provider type
-U, --provider-urn string    Filter by provider urn
-t, --type string            Filter by type
-u, --urn string             Filter by urn
The output is the following form:
ID    PROVIDER                              TYPE        URN                                   NAME
3552  tableau                               view        8a48df6d-bb5c-438f-a038-35149011e1b5  Flight Delays
      691acb66-27ef-4b4f-9222-f07052e6ffc2
4704  tableau                               metric      a408051f-c394-4a73-8f33-7bf7ba001d99  my-test-metric-ishan
      691acb66-27ef-4b4f-9222-f07052e6ffc2
3792  tableau                               workbook    7c940f8b-34c7-44af-9998-b95deef54edd  Regional
      691acb66-27ef-4b4f-9222-f07052e6ffc8
3802  tableau                               view        3bd3acd1-0681-458b-9566-0519ba844519  Overview
      691acb66-27ef-4b4f-9222-f07052e6ffc8
3807  tableau                               view        703c58f2-5b7f-46ba-bf96-9f4b473e4da8  Commission Model
      691acb66-27ef-4b4f-9222-f07052e6ffc8
5614  tableau                               view        7342fec1-4092-4bd4-abf4-8e531fe0f8ad  Stocks
      691acb66-27ef-4b4f-9222-f07052e6ffd0
Set Resource
Store new metadata for a resource. Guardian allows users to add metadata to the resources. This can be useful when configuring the approval steps in the policy that needs information from metadata e.g. “owners” as the approvers.
$ guardian resource set <resource-id> --filePath=<file-path>
This command supports the following flags:
-f, --file string   updated resource file path
Here is an example below:
$ guardian resource set --id={{resource_id}} --values=<key1>=<value1> --values=<key2>=<value2>
View Resource
View a resource details
$ guardian resource view <resource-id> --output=json --metadata=true
This command supports the following flags:
-m, --metadata   Set if you want to see metadata, default: false
Managing Appeals
Appeals command allows us to list, create, list and reject appeal.
What is inside?
Enter the following code into the terminal:
$ guardian appeals
The output is the following:
Available Commands:
  approve     Approve an approval step
  cancel      Cancel an appeal
  create      Create a new appeal
  list        List and filter appeals
  reject      Reject an approval step
  revoke      Revoke an active access/appeal
  status      Approval status of an appeal
Create Appeal
It helps us to create a new appeal.
Here are some examples given below:
$ guardian appeal create
$ guardian appeal create --account=<account-id> --type=<account-type> --resource=<resource-id> --role=<role> --description="<description>"
This command supports the following flags:
-a, --account string       Email of the account to appeal
    --description string   The description of the appeal
-d, --duration string      Duration of the access
-R, --resource string      ID of the resource
-r, --role string          Role to be assigned
-t, --type string          Type of the account
$ guardian appeals create --resource-id 5624 --role write --user test-user@email.com --options.duration "24h"
The output is the following:
appeal created with id: 13
List Appeals
This command helps us to list appeals in the Guardian's database, we can also filter the appeals with some additional queries flags.
To filter the list of appeals by Role, Status or Account use the following flags:
-a, --account string       Filter by account
-r, --role string          Filter by role
-s, --status stringArray   Filter by status(es)
Here are some examples below:
$ guardian appeal list
$ guardian appeal list --status=pending
$ guardian appeal list --role=viewer
The output is of the form :
  ID  USER                  RESOURCE ID  ROLE   STATUS
  13  test-user@email.com   5624         write  pending
Approve Appeals
It's used to approve an appeal. Approve an approval step
$ guardian appeal approve <appeal-id> --step=<step-name>
This command supports the following flags:
-s, --step string   Name of approval step
Reject Appeals
It's used to reject an appeal.
Reject an approval step
$ guardian appeal reject <appeal-id> --step=<step-name>
Revoke Appeal
Revoke an active access/appeal
$ guardian appeal revoke <appeal-id>
$ guardian appeal revoke <appeal-id> --reason=<reason>
This command supports the following flags:
-r, --reason string   Reason of the revocation
Check Appeal Status
Status value of an appeal can either be one of these pending, canceled, active,rejected,terminated. To check the current Approval status of the appeal use the following command:
$ guardian appeal status <appeal-id>
Cancel Appeal
Cancel an appeal. Appeal creator can cancel their appeal while it's status is still on pending
$ guardian appeal cancel <appeal-id>
Add Approver
Add a new approver into an existing approval
$ guardian appeal add-approver --appeal-id=<appeal-id> --approval-id=<approval-id> --email=<new-approver-email>
Delete Approver
Delete existing approver from an approval step
$ guardian appeal delete-approver --appeal-id=<appeal-id> --approval-id=<approval-id> --email=<new-approver-email>