Amazon Redshift Serverless 中的 Identity and Access Management - Amazon Redshift
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

Amazon Redshift Serverless 中的 Identity and Access Management

访问 Amazon Redshift 时需要可供 Amazon 用来验证您的请求的凭证。这些凭证必须有权访问 Amazon 资源,如 Amazon Redshift Serverless。

以下部分提供详细信息来说明如何使用 Amazon Identity and Access Management(IAM)和 Amazon Redshift 控制谁能访问您的资源,从而对这些资源进行保护:有关更多信息,请参阅 Amazon Redshift 中的 Identity and Access Management

向 Amazon Redshift Serverless 授予权限

要访问其它 Amazon 服务,Amazon Redshift Serverless 需要权限。

授权 Amazon Redshift Serverless 为您访问其它 Amazon 服务

某些 Amazon Redshift 功能要求 Amazon Redshift 代表您访问其他 Amazon 服务。为了让您的 Amazon Redshift Serverless 实例为您执行操作,请向它提供安全凭证。提供安全凭证的首选方法是指定一个 Amazon Identity and Access Management (IAM) 角色。您还可通过 Amazon Redshift 控制台创建 IAM 角色,并将其设置为默认角色。有关更多信息,请参阅 创建一个 IAM 角色作为 Amazon Redshift 的默认角色

要访问其它 Amazon 服务,请创建具有适当权限的 IAM 角色。您还需要将角色与您的 Amazon Redshift Serverless 关联。此外,您可在运行 Amazon Redshift 命令时指定角色的 Amazon 资源名称(ARN),或者指定 default 关键字。

https://console.aws.amazon.com/iam/ 中更改 IAM 角色的信任关系时,请确保将 redshift-serverless.amazonaws.comredshift.amazonaws.com 作为主体服务名称。有关如何管理 IAM 角色以代表您访问其他 Amazon 服务的信息,请参阅授权 Amazon Redshift 代表您访问其他 Amazon 服务

创建一个 IAM 角色作为 Amazon Redshift 的默认角色

当您通过 Amazon Redshift 控制台创建 IAM 角色时,Amazon Redshift 以编程方式在您的 Amazon Web Services 账户 中创建角色。Amazon Redshift 还会自动为其附加现有 Amazon 托管式策略。这种方法表示您可以停留在 Amazon Redshift 控制台中,无需切换到 IAM 控制台进行角色创建。

您通过控制台为集群创建的 IAM 角色具有自动附加的 AmazonRedshiftAllCommandsFullAccess 托管式策略。此 IAM 角色允许 Amazon Redshift 为 Amazon IAM 账户中的资源复制、卸载、查询和分析数据。相关命令包括 UNLOAD、CREATE EXTERNAL FUNCTION、CREATE EXTERNAL TABLE、CREATE EXTERNAL SCHEMA、CREATE MODEL 和 CREATE LIBRARY。有关如何创建 IAM 角色作为 Amazon Redshift 的默认角色的更多信息,请参阅创建一个 IAM 角色作为 Amazon Redshift 的默认角色。

要开始创建 IAM 角色作为 Amazon Redshift 的默认角色,请打开 Amazon Web Services Management Console,选择 Amazon Redshift 控制台,然后在菜单中选择 Redshift Serverless。在无服务器控制面板中,您可以创建新的工作组。创建步骤将引导您选择 IAM 角色或配置新的 IAM 角色。

当您已经拥有 Amazon Redshift Serverless 工作组并希望为它配置 IAM 角色时,请打开 Amazon Web Services Management Console。选择 Amazon Redshift 控制台,然后选择 Redshift Serverless。在 Amazon Redshift Serverless 控制台上,为现有工作组选择命名空间配置。在安全和加密下,您可以编辑权限。

向命名空间分配 IAM 角色

每个 IAM 角色都是一个 Amazon 身份,此身份的权限策略可确定每个角色可以在 Amazon 中执行哪些操作。该角色旨在让任何需要它的用户代入。此外,每个命名空间都是对象(如表和架构)和用户的集合。当您使用 Amazon Redshift Serverless 时,您可以将多个 IAM 角色与命名空间关联。这样可以更轻松地为数据库对象集合适当地构建权限,以便角色可以对内部和外部数据执行操作。例如,您可以在 Amazon Redshift 数据库中运行 COPY 命令,以检索 Amazon S3 中的数据并填充 Redshift 表。

您可以使用控制台将多个角色与命名空间关联,如本节前面所述。您还可以使用 CreateNamespace API 命令或 CLI 命令 create-namespace。使用 API 或 CLI 命令,您可以通过用一个或多个角色填充 IAMRoles,以将 IAM 角色分配给命名空间。具体来说,您可以将特定角色的 ARN 添加到集合中。

管理命名空间相关 IAM 角色

在 Amazon Web Services Management Console上,可以管理 Amazon Identity and Access Management 中角色的权限策略。您可以使用命名空间配置下提供的设置管理命名空间的 IAM 角色。有关命名空间及其在 Amazon Redshift Serverless 中的使用情况的更多信息,请参阅Amazon Redshift Serverless 工作组和命名空间概览

Amazon Redshift 的 IAM 凭证入门

当您首次登录到 Amazon Redshift 控制台,并首次试用 Amazon Redshift Serverless 时,我们建议您以附加了具有所需策略的 IAM 角色的用户身份登录。开始创建 Amazon Redshift Serverless 实例后,Amazon Redshift 会记录您用于登录的 IAM 角色名称。您可以使用相同的凭证登录到 Amazon Redshift 控制台和 Amazon Redshift Serverless 控制台。

创建 Amazon Redshift Serverless 实例时,您可以创建数据库。使用查询编辑器 v2 通过临时凭证选项连接到数据库。

要添加持续用于数据库的新管理员用户名和密码,请选择自定义管理员用户凭证,然后输入新的管理员用户名和管理员用户密码。

要开始使用 Amazon Redshift Serverless 并首次在控制台中创建工作组和命名空间,请使用附加了权限策略的 IAM 角色。确保此角色具有管理员权限 arn:aws:iam::aws:policy/AdministratorAccess,或具有附加到 IAM 策略的完整 Amazon Redshift 权限 arn:aws:iam::aws:policy/AmazonRedshiftFullAccess

以下场景概述了当您开始使用 Amazon Redshift Serverless 控制台时,Amazon Redshift Serverless 如何使用 IAM 凭证:

  • 如果选择使用默认设置 – Amazon Redshift Serverless 会将您当前的 IAM 身份转换为数据库超级用户。您可以将相同的 IAM 身份与 Amazon Redshift Serverless 控制台一起使用,以在 Amazon Redshift Serverless 的数据库中执行超级用户操作。

  • 如果选择自定义设置而不指定 Amazon Redshift Serverless 的管理员用户名和密码,则您当前的 IAM 凭证用作默认管理员用户凭证。

  • 如果选择自定义设置,然后指定 Amazon Redshift Serverless 的管理员用户名和密码 – Amazon Redshift Serverless 会将您当前的 IAM 身份转换为数据库超级用户。Amazon Redshift Serverless 还会以超级用户身份创建另一个长期登录用户名和密码对。您可使用当前的 IAM 身份或创建的用户名和密码对以超级用户身份登录到数据库。

使用数据库角色权限管理对 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 表。