使用数据库角色权限访问 Amazon Redshift Serverless 数据库对象 - Amazon Redshift
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

使用数据库角色权限访问 Amazon Redshift Serverless 数据库对象

此过程说明如何通过 Amazon Redshift 数据库角色授予查询表的权限。通过标签分配角色,该标签在 IAM 中附加到用户,并在用户登录时传递给 Amazon Redshift。这是以在 Amazon Redshift Serverless 中定义向联合用户授予的数据库角色中的概念举例的说明。完成这些步骤的好处是,您可以将用户与数据库角色相关联,并避免为每个数据库对象设置权限。它简化了对用户查询、修改数据或向表中添加数据以及执行其他操作的能力的管理。

该过程假设您已经设置了 Amazon Redshift Serverless 数据库,并且能够在该数据库中授予权限。它还假设您有权在 Amazon 控制台中创建 IAM 用户,以及创建 IAM 角色和分配策略权限。

  1. 使用 IAM 控制台创建 IAM 用户。稍后,您将使用此用户连接到数据库。

  2. 使用查询编辑器 v2 或其他 SQL 客户端,创建 Redshift 数据库角色。有关创建数据库角色的更多信息,请参阅创建 CREATE ROLE

    CREATE ROLE urban_planning;

    查询 SVV_ROLES 系统视图,以检查您的角色是否已创建。它还会返回系统角色。

    SELECT * from SVV_ROLES;
  3. 授予您创建的数据库角色从表中进行选择的权限。(您创建的 IAM 用户最后将登录并通过数据库角色从表中选择记录。) 以下代码示例中的角色名和表名是示例。在此,授予了从名为 cities 的表中进行选择的权限。

    GRANT SELECT on TABLE cities to ROLE urban_planning;
  4. 使用 Amazon Identity and Access Management 控制台创建 IAM 角色。此角色授予使用查询编辑器 v2 的权限。创建新的 IAM 角色,对于可信实体类型,选择 Amazon 账户。然后选择此账户。为角色授予以下策略权限:

    • AmazonRedshiftReadOnlyAccess

    • tag:GetResources

    • tag:GetTagKeys

    • sqlworkbench 的所有操作,包括 sqlworkbench:ListDatabasessqlworkbench:UpdateConnection

  5. 在 IAM 控制台中,将一个带有 RedshiftDbRoles 的标签添加到您之前创建的 IAM 用户。标签的值应与您在第一步中创建的数据库角色相匹配。它在此示例中为 urban_planning

完成这些步骤后,将 IAM 角色分配给您在 IAM 控制台中创建的用户。当用户使用查询编辑器 v2 登录数据库时,用户在标签中的数据库角色名称将传递给 Amazon Redshift 并与用户关联。因此,用户可以通过数据库角色查询相应的表。举例来说,此示例中的用户可以通过 urban_planning 数据库角色查询 cities 表。