Creating and using security policies¶
What are policy statments?¶
Policy statements are JSON-formatted documents that list actions that are either allowed or denied for a certain resource.
Each policy can contain one or more statements listed after each other. Each statement will say three things:
- The resources covered.
- The actions controlled.
- If the actions are to be allowed or denied.
If you have both a statement that allows an action and another statement that disallows it, the end result will be that access is denied, since explicit denies have higher priority.
Policy types¶
You can use two types of policies:
-
Managed policies – Managed policies that are created and managed by Rational BI. If you are new to using policies, we recommend that you start by using Rational BI managed policies.
-
Custom policies – Custom policies that you create and manage in your Rational BI account. Customer managed policies provide more precise control over your policies than Rational BI managed policies. You can create and edit a Rational BI policy by creating the JSON policy document directly.
Example policy¶
This is an example policy that permits reports to be listed for all accounts:
{
"Statement": [
{
"Effect": "Allow",
"Action": [
"account:listReports",
],
"Resource": [
"*"
]
}
]
}
The policy above has a single statement but any number of additional statements can be included in the list.
The statement itself has three entries:
- The Effect which can be either Allow or Deny.
- The Action which is a list of actions that can be performed. The full set of possible actions is listed here.
- The Resource that is being controlled. The asterisk (*) indicates that it applies to all resources. The applicable resources differ per action.
Constructing policy statements can be difficult. Contact support@rationalbi.com if you would like help and we will be happy to assist.
Custom policy statements require an enterprise subscription.
System managed policies¶
Policy | Description |
---|---|
Administrator | The user is an administrator at the organizational level and can invite new users, promote users to owner status, manage and delete users as well as create and delete workspaces. Only assign ownership status to those that are trusted to see all data associated with the organization as well as manage and invite new users. |
Everyone | Basic access to organizational information as well as the ability to view the accounts under the organization. |
Power Users | Access all accounts and read and write reports and data. |
Database Managers | Permissions to upload, manage and delete databases of existing datasets. Cannot change schemas. |
Report Builders | The ability to create, edit and delete reports. |
Dataset Designers | Create, design, modify and delete datasets and schemas. Users with this policy can also upload, manage and delete databases. |
Report Consumer | Read-only access to all reports and data in the account. |
To limit account access, create a policy with a DENY permission to override.
Permissions¶
Permissions let you specify access to Rational BI resources. Permissions are granted to groups and by default these groups start with no permissions.
In other words, members of groups can do nothing in Rational BI until you grant them your desired permissions. To give entities permissions, you can attach a policy that specifies the type of access, the actions that can be performed, and the resources on which the actions can be performed. In addition, you can specify any conditions that must be set for access to be allowed or denied.
You can select a predefined policy managed by Rational BI or create your own using the policy editor.
To assign permissions to a user, group, role, or resource, you create a policy that lets you specify:
- Actions – Which Rational BI service actions you allow. Any actions that you don't explicitly allow are denied.
- Resources – Which Rational BI resources you allow the action on. Users cannot access any resources that you do not explicitly grant permissions to.
- Effect – Whether to allow or deny access. Because access is denied by default, you typically write policies where the effect is to allow.
Actions¶
Actions are used within policy statements to determine what tasks a user is allowed to perform. Some actions can be filtered by the UUIDs of the object. This can be used as a means to set up granular permissions to subsets of of an organization where access should be partitioned.
Organization-level Actions¶
Action | Resource | Description |
---|---|---|
organization:describeOrganization | Read basic information about the organization, such as name and description. | |
organization:updateOrganization | Update basic information about the organization, such as name and description. | |
organization:associateUser | Associate an existing user with the organization. | |
organization:putOrganizationLogo | Upload a new logo for the organization. | |
organization:createUser | Create or invite a new user into the organization. | |
organization:updateUser | user/useruuid | Update information about an existing user. |
organization:describeUser | user/useruuid | Get information about a user. |
organization:deleteUser | user/useruuid | Delete an existing user. |
organization:listUsers | List the users associated with the organization. | |
organization:listPolicies | List the security policies defined within the organization. | |
organization:describePolicy | policy/policyuuid | Retrieve the name, description and policy statement assoicated with a security policy. |
organization:deletePolicy | policy/policyuuid | Delete an existing security policy. |
organization:createPolicy | Create a new security policy. | |
organization:updatePolicy | policy/policyuuid | Update an existing security policy. |
organization:assignPolicy | Assign a security policy to a group. | |
organization:listGroups | List the groups associated with the organization. | |
organization:deleteGroup | Delete an existing group. | |
organization:createGroup | Create a new group. | |
organization:updateGroup | Update an existing group. | |
organization:describeGroup | Return information such as name and description of a group, as well as group membership information. | |
organization:deleteAccount | Return information about an account. | |
organization:listAccounts | List existing accounts. | |
organization:createAccount | Create a new account. | |
organization:readAccount | Read data from an account. | |
organization:updateAccount | Update meta-information about an account, such as name, description, time zone and currecy. | |
organization:describeBilling | Return information about the current plan, billing information and invoices. | |
organization:updateBilling | Update the current plan, input new payment methods and pay invoices. | |
organization:deleteOrganization | Delete the organization. |
Account-level Actions¶
Action | Resource | Description |
---|---|---|
account:listDatasets | Enumerate the datasets within an account. | |
account:describeDataset | dataset/datasetuuid | Retrieve metadata related to a dataset such as the name and description. This does not include the data in databases nor does it include the database schema. |
account:createDataset | Create a new dataset. | |
account:deleteDataset | dataset/datasetuuid | Delete an existing dataset. |
account:updateDataset | dataset/datasetuuid | Update the metadata properties of an existing dataset. |
account:shareDataset | dataset/datasetuuid | Control the sharing properties of a dataset. Note that sharing a dataset will expose it to the non-authenticated users. |
account:listReports | Enumerate the reports within an account. | |
account:describeReport | report/reportuuid | Read metadata for a single report. Returns similar data that would be returned through the listReports action, but requires a specific report it to be provided. |
account:deleteReport | report/reportuuid | Delete an existing report. |
account:updateReport | report/reportuuid | Edit an existing report. |
account:readReport | report/reportuuid | Read the report defintition of an existing report. |
account:createReport | Create a new report. | |
account:readReportHistory | report/reportuuid | Read the history of prior versions of a report. |
account:readReportScreenshot | report/reportuuid | Retrieve screenshots of the current or historical versions of a report. |
Dataset-level Actions¶
Action | Resource | Description |
---|---|---|
dataset:listDatabases | dataset/datasetuuid | Enumerate the databases on file for a database. |
dataset:updateDatabase | dataset/datasetuuid/databaseuuid | Flag a specific database associated with a dataset active. |
dataset:deleteDatabase | dataset/datasetuuid/databaseuuid | Delete a database. |
dataset:readDatabase | dataset/datasetuuid/databaseuuid | Retrieve and read a database. |
dataset:createDatabase | dataset/datasetuuid/databaseuuid | Create a new database within an existing dataset. |
dataset:createSchema | dataset/datasetuuid | Create a new database schema. At the moment, only a single database schema per dataset is allowed. |
dataset:readSchema | dataset/datasetuuid/schemauuid | Read the schema of an existing dataset. |
dataset:updateSchema | dataset/datasetuuid/schemauuid | Modify the schema of an existing dataset. |
dataset:deleteSchema | dataset/datasetuuid/schemauuid | Delete the schema of an existing dataset. At the moment, each dataset must have a single schema. |