PG_GET_SESSION_ROLES - Amazon Redshift

PG_GET_SESSION_ROLES

返回当前登录的用户的会话角色。用户的会话角色是由身份提供者 (IdP) 为登录用户定义的组。例如,身份提供者 (IdP)(如 Microsoft Azure Active Directory (Azure AD))验证用户的身份,并在用户登录过程中提供该用户所属的所有外部组。这些外部组转换为 Amazon Redshift 角色,可在当前会话期间使用。这些角色称为会话角色。管理员可以向会话角色授予与其他 Amazon Redshift 角色类似的权限。有关使用角色的信息,请参阅基于角色的访问控制 (RBAC)。有关使用身份提供者 (IdP) 管理身份的信息,请参阅《Amazon Redshift 管理指南》中的 Amazon Redshift 的原生身份提供者 (IdP) 联合身份验证

要查看 Amazon Redshift 目录中定义的角色,请以管理员或超级用户身份连接到数据库,然后查询系统视图 SVV_ROLES

语法

pg_get_session_roles()

返回类型

一组由两个值组成的行。第一个值由两部分组成,用冒号 (:) 分隔,其中包含 idp-namespace:role-nameidp-namespace 是身份提供者 (IdP) 的命名空间。role-name 是身份提供者 (IdP) 中的外部组的名称。第二个值包含作为角色标识符的 role-id

使用说明

PG_GET_SESSION_ROLES 函数为每个返回的会话角色返回一行。

示例

以下示例为 Azure Active Directory IdP 中的每个角色返回一行。返回的列强制转换为 sess_roles,列为 nameroleid。每个 name 由 Azure Active Directory 命名空间和 Azure Active Directory 中的组名称组成。

SELECT * FROM pg_get_session_roles() AS sess_roles(name name, roleid integer); name roleid -------------------------------- my_aad:test_group_1 106204 my_aad:test_group_2 106205 my_aad:test_group_3 106206 my_aad:test_group_4 106207 my_aad:test_group_5 106208

以下示例为当前登录的 IAM 用户所属的每个 IAM 组返回一行。返回的列强制转换为 sess_roles,列为 nameroleid。每个 name 由 IAM 命名空间和 IAM 组名称组成。

SELECT * FROM pg_get_session_roles() AS sess_roles(name name, roleid integer); name roleid -------------------------------- IAM:myGroup 110332