本页面定义了精细的访问权限控制为每个数据库提供的三个预定义系统角色的特性、限制和预期用途。每个系统角色都有一组不同的权限,无法撤消。
public
默认情况下,所有精细访问权限控制用户都具有
public
中的 IAM 成员资格。所有数据库角色都会继承此角色的权限。
最初,
public
没有权限,但您可以向其授予权限。如果您授予public
的权限,则该权限将适用于所有数据库角色,包括之后创建的数据库角色。
spanner_info_reader
此角色对 GoogleSQL 方言数据库的
INFORMATION_SCHEMA
视图和 PostgreSQL 方言数据库的information_schema
视图具有SELECT
权限。您无法向
spanner_info_reader
授予任何其他权限。将此角色的成员授予需要对
INFORMATION_SCHEMA
视图(GoogleSQL 方言数据库)或information_schema
视图(PostgreSQL 方言数据库)未经过滤的读取权限的任何数据库角色。
spanner_sys_reader
此角色对
SPANNER_SYS
表具有SELECT
权限。您无法向
spanner_sys_reader
授予任何其他权限。将此角色的成员授予必须具有
SPANNER_SYS
架构读取权限的任何数据库角色。
对系统角色的限制
您无法使用
DROP ROLE
语句删除系统角色。系统角色不能是其他数据库角色的成员。也就是说,以下 GoogleSQL 语句无效:
GRANT ROLE pii_access TO ROLE spanner_info_reader;
您不能将
public
角色的成员资格授予您的数据库角色。例如,以下 GoogleSQL 语句也无效:GRANT ROLE public TO ROLE pii_access;
不过,您可以授予
spanner_info_reader
和spanner_sys_reader
角色的成员资格。例如,以下是有效的语句。GoogleSQL
GRANT ROLE spanner_info_reader TO ROLE pii_access; GRANT ROLE spanner_sys_reader TO ROLE pii_access;
PostgreSQL
GRANT spanner_info_reader TO pii_access; GRANT spanner_sys_reader TO pii_access;
更多信息
如需了解详情,请参阅以下主题: