使用数据库角色权限访问 Amazon Redshift Serverless 数据库对象
此过程说明如何通过 Amazon Redshift 数据库角色授予查询表的权限。通过标签分配角色,该标签在 IAM 中附加到用户,并在用户登录时传递给 Amazon Redshift。这是以在 Amazon Redshift Serverless 中定义向联合用户授予的数据库角色中的概念举例的说明。完成这些步骤的好处是,您可以将用户与数据库角色相关联,并避免为每个数据库对象设置权限。它简化了对用户查询、修改数据或向表中添加数据以及执行其他操作的能力的管理。
该过程假设您已经设置了 Amazon Redshift Serverless 数据库,并且能够在该数据库中授予权限。它还假设您有权在 AWS 控制台中创建 IAM 用户,以及创建 IAM 角色和分配策略权限。
-
使用 IAM 控制台创建 IAM 用户。稍后,您将使用此用户连接到数据库。
-
使用查询编辑器 v2 或其他 SQL 客户端,创建 Redshift 数据库角色。有关创建数据库角色的更多信息,请参阅创建 CREATE ROLE。
CREATE ROLE urban_planning;
查询 SVV_ROLES 系统视图,以检查您的角色是否已创建。它还会返回系统角色。
SELECT * from SVV_ROLES;
-
授予您创建的数据库角色从表中进行选择的权限。(您创建的 IAM 用户最后将登录并通过数据库角色从表中选择记录。) 以下代码示例中的角色名和表名是示例。在此,授予了从名为
cities
的表中进行选择的权限。GRANT SELECT on TABLE cities to ROLE urban_planning;
-
使用 AWS Identity and Access Management 控制台创建 IAM 角色。此角色授予使用查询编辑器 v2 的权限。创建新的 IAM 角色,对于可信实体类型,选择 AWS 账户。然后选择此账户。为角色授予以下策略权限:
-
AmazonRedshiftReadOnlyAccess
-
tag:GetResources
-
tag:GetTagKeys
-
sqlworkbench 的所有操作,包括
sqlworkbench:ListDatabases
和sqlworkbench:UpdateConnection
。
-
-
在 IAM 控制台中,将一个带有键
RedshiftDbRoles
的标签添加到您之前创建的 IAM 用户。标签的值应与您在第一步中创建的数据库角色相匹配。它在此示例中为urban_planning
。
完成这些步骤后,将 IAM 角色分配给您在 IAM 控制台中创建的用户。当用户使用查询编辑器 v2 登录数据库时,用户在标签中的数据库角色名称将传递给 Amazon Redshift 并与用户关联。因此,用户可以通过数据库角色查询相应的表。举例来说,此示例中的用户可以通过 urban_planning
数据库角色查询 cities
表。