序列的精细访问权限控制

本页面介绍了精细访问权限控制如何与 GoogleSQL 方言数据库和 PostgreSQL 方言数据库的 Spanner 序列配合使用。

对于精细访问权限控制用户,您可以授予以下一项或两项权限,以允许用户访问读取序列信息或从序列生成值。

  • 授予序列的 SELECT 权限,以允许读取序列的参数和当前状态。

    GoogleSQL

    GRANT SELECT ON SEQUENCE SEQUENCE_NAME TO ROLE ROLE_NAME;

    PostgreSQL

    GRANT SELECT ON SEQUENCE SEQUENCE_NAME TO ROLE_NAME;
  • 授予对序列的 UPDATE 权限,以允许调用序列值生成器。

    GoogleSQL

    GRANT UPDATE ON SEQUENCE SEQUENCE_NAME TO ROLE ROLE_NAME;

    PostgreSQL

    GRANT UPDATE ON SEQUENCE SEQUENCE_NAME TO ROLE_NAME;

序列操作所需的权限

下表详细介绍了在执行特定序列操作时所需的权限。

操作 权限要求

GoogleSQL:

GET_NEXT_SEQUENCE_VALUE()

PostgreSQL:

nextval()

需要对序列拥有 UPDATESELECT 权限。请注意,如果您通过生成的列或默认值执行此函数,还需要对相应列拥有 INSERTUPDATE 权限。序列的 UPDATE 权限不会自动授予您想要使用该序列的列的任何权限。

GoogleSQL:

GET_INTERNAL_SEQUENCE_STATE()

PostgreSQL:

spanner.get_internal_sequence_state()

需要对您请求的序列拥有 SELECT 权限。

GoogleSQL:

INFORMATION_SCHEMA.SEQUENCES
INFORMATION_SCHEMA.SEQUENCE_OPTIONS

PostgreSQL

INFORMATION_SCHEMA.SEQUENCES

您可以拥有要查询的序列的 SELECTUPDATE 权限。您只能看到自己有权查看的序列。

后续步骤