diff --git a/docs/access-control.md b/docs/access-control.md index fe5ceb1316..3e58638d46 100644 --- a/docs/access-control.md +++ b/docs/access-control.md @@ -18,25 +18,25 @@ This section provides information about how access control works for Polaris Catalog. -Polaris Catalog uses a role-based access control (RBAC) model, in which the Polaris administrator assigns access privileges to catalog roles, -and then grants service principals access to resources by assigning catalog roles to principal roles. +Polaris Catalog uses a role-based access control (RBAC) model in which the Polaris administrator assigns access privileges to catalog roles +and then grants access to resources to service principals by assigning catalog roles to principal roles. -The key concepts to understanding access control in Polaris are: +These are the key concepts to understanding access control in Polaris: -- **Securable object** -- **Principal role** -- **Catalog role** -- **Privilege** +- **Securable object** +- **Principal role** +- **Catalog role** +- **Privilege** ## Securable object A securable object is an object to which access can be granted. Polaris has the following securable objects: -- Catalog -- Namespace -- Iceberg table -- View +- Catalog +- Namespace +- Iceberg table +- View ## Principal role @@ -60,17 +60,17 @@ The following table shows examples of principal roles that you might configure i ## Catalog role -A catalog role belongs to a particular catalog resource in Polaris and specifies a set of permissions for actions on the catalog, or on objects +A catalog role belongs to a particular catalog resource in Polaris and specifies a set of permissions for actions on the catalog or objects in the catalog, such as catalog namespaces or tables. You can create one or more catalog roles for a catalog. -You grant privileges to a catalog role, and then grant the catalog role to a principal role to bestow the privileges to one or more service +You grant privileges to a catalog role and then grant the catalog role to a principal role to bestow the privileges to one or more service principals. -**Note** - -If you update the privileges bestowed to a service principal, the updates won\'t take effect for up to one hour. This means that if you -revoke or grant some privileges for a catalog, the updated privileges won\'t take effect on any service principal with access to that catalog -for up to one hour. +> **Note** +> +> If you update the privileges bestowed to a service principal, the updates won't take effect for up to one hour. This means that if you +> revoke or grant some privileges for a catalog, the updated privileges won't take effect on any service principal with access to that catalog +> for up to one hour. Polaris also supports a many-to-many relationship between catalog roles and principal roles. You can grant the same catalog role to one or more principal roles. Likewise, a principal role can be granted to one or more catalog roles. @@ -87,10 +87,10 @@ configure in Polaris: ## RBAC model The following diagram illustrates the RBAC model used by Polaris Catalog. For each catalog, the Polaris administrator assigns access -privileges to catalog roles, and then grants service principals access to resources by assigning catalog roles to principal roles. Polaris +privileges to catalog roles and then grants service principals access to resources by assigning catalog roles to principal roles. Polaris supports a many-to-one relationship between service principals and principal roles. - + ## Access control privileges @@ -98,43 +98,47 @@ This section describes the privileges that are available in the Polaris access c roles are granted to principal roles, and principal roles are granted to service principals to specify the operations that service principals can perform on objects in Polaris. +> **Important** +> +> You can only grant privileges at the catalog level. Fine-grained access controls are not available. For example, you can grant read +> privileges to all tables in a catalog but not to an individual table in the catalog. + To grant the full set of privileges (drop, list, read, write, etc.) on an object, you can use the *full privilege* option. ### Table privileges -**Note** - -The TABLE_FULL_METADATA full privilege doesn't grant access to the TABLE_READ_DATA or TABLE_WRITE_DATA individual privileges. - -| Full privilege | Individual privilege | Description | -| -----------------------| ----------- | ---- | -| TABLE_FULL_METADATA | TABLE_CREATE | Enables registering a table with the catalog. | -| | TABLE_DROP | Enables dropping a table from the catalog. | -| | TABLE_LIST | Enables listing any tables in the catalog. | -| | TABLE_READ_PROPERTIES | Enables reading [properties](https://iceberg.apache.org/docs/nightly/configuration/#table-properties) of the table. | -| | TABLE_WRITE_PROPERTIES | Enables configuring [properties](https://iceberg.apache.org/docs/nightly/configuration/#table-properties) for the table. | -| N/A | TABLE_READ_DATA | Enables reading data from the table by receiving short-lived read-only storage credentials from the catalog. | -| N/A | TABLE_WRITE_DATA | Enables writing data to the table by receiving short-lived read+write storage credentials from the catalog. | +| Privilege | Description | +| --------- | ----------- | +| TABLE_CREATE | Enables registering a table with the catalog. | +| TABLE_DROP | Enables dropping a table from the catalog. | +| TABLE_LIST | Enables listing any tables in the catalog. | +| TABLE_READ_PROPERTIES | Enables reading [properties](https://iceberg.apache.org/docs/nightly/configuration/#table-properties) of the table. | +| TABLE_WRITE_PROPERTIES | Enables configuring [properties](https://iceberg.apache.org/docs/nightly/configuration/#table-properties) for the table. | +| TABLE_READ_DATA | Enables reading data from the table by receiving short-lived read-only storage credentials from the catalog. | +| TABLE_WRITE_DATA | Enables writing data to the table by receiving short-lived read+write storage credentials from the catalog. | +| TABLE_FULL_METADATA | Grants all table privileges, except TABLE_READ_DATA and TABLE_WRITE_DATA, which need to be granted individually. | ### View privileges -| Full privilege | Individual privilege | Description | -| -----------------------| ----------- | ---- | -| VIEW_FULL_METADATA | VIEW_CREATE | Enables registering a view with the catalog. | -| | VIEW_DROP | Enables dropping a view from the catalog. | -| | VIEW_LIST | Enables listing any views in the catalog. | -| | VIEW_READ_PROPERTIES | Enables reading all the view properties. | -| | VIEW_WRITE_PROPERTIES | Enables configuring view properties. | +| Privilege | Description | +| --------- | ----------- | +| VIEW_CREATE | Enables registering a view with the catalog. | +| VIEW_DROP | Enables dropping a view from the catalog. | +| VIEW_LIST | Enables listing any views in the catalog. | +| VIEW_READ_PROPERTIES | Enables reading all the view properties. | +| VIEW_WRITE_PROPERTIES | Enables configuring view properties. | +| VIEW_FULL_METADATA | Grants all view privileges. | ### Namespace privileges -| Full privilege | Individual privilege | Description | -| -----------------------| ----------- | ---- | -| NAMESPACE_FULL_METADATA | NAMESPACE_CREATE | Enables creating a namespace in a catalog. | -| | NAMESPACE_DROP | Enables dropping the namespace from the catalog. | -| | NAMESPACE_LIST | Enables listing any object in the namespace, including nested namespaces and tables. | -| | NAMESPACE_READ_PROPERTIES | Enables reading all the namespace properties. | -| | NAMESPACE_WRITE_PROPERTIES | Enables configuring namespace properties. | +| Privilege | Description | +| --------- | ----------- | +| NAMESPACE_CREATE | Enables creating a namespace in a catalog. | +| NAMESPACE_DROP | Enables dropping the namespace from the catalog. | +| NAMESPACE_LIST | Enables listing any object in the namespace, including nested namespaces and tables. | +| NAMESPACE_READ_PROPERTIES | Enables reading all the namespace properties. | +| NAMESPACE_WRITE_PROPERTIES | Enables configuring namespace properties. | +| NAMESPACE_FULL_METADATA | Grants all namespace privileges. | ### Catalog privileges @@ -142,47 +146,42 @@ The TABLE_FULL_METADATA full privilege doesn't grant access to the TABLE_READ_DA | -----------------------| ----------- | | CATALOG_MANAGE_ACCESS | Includes the ability to grant or revoke privileges on objects in a catalog to catalog roles, and the ability to grant or revoke catalog roles to or from principal roles. | | CATALOG_MANAGE_CONTENT | Enables full management of content for the catalog. This privilege encompasses the following privileges: