Amazon Redshift
管理指南 (API Version 2012-12-01)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。点 击 Getting Started with Amazon AWS to see specific differences applicable to the China (Beijing) Region.

授权 Amazon Redshift 代表您访问其他 AWS 服务

某些 Amazon Redshift 功能需要 Amazon Redshift 代表您访问其他 AWS 服务。例如,COPYUNLOAD 命令可使用 Amazon Simple Storage Service (Amazon S3) 存储桶将数据加载或卸载到您的 Amazon Redshift 群集中。要让您的 Amazon Redshift 群集代表您执行操作,您必须为这些群集提供安全凭证。安全凭证可以是 AWS 访问密钥,或者您也可使用首选方法 - 指定 AWS Identity and Access Management (IAM) 角色。

本节介绍如何创建具有访问其他 AWS 服务的适当权限的 IAM 角色。当您执行 Amazon Redshift 命令时,还需要将该角色与您的群集关联并指定角色的 Amazon 资源名称 (ARN)。有关更多信息,请参阅 授权使用 IAM 角色的 COPY 和 UNLOAD 操作

创建 IAM 角色以允许您的 Amazon Redshift 群集访问 AWS 服务

要创建 IAM 角色以允许您的 Amazon Redshift 群集代表您与其他 AWS 服务通信,请执行以下步骤。

创建 IAM 角色以允许 Amazon Redshift 访问 AWS 服务

  1. 打开 IAM 控制台

  2. 在导航窗格中,选择 Roles

  3. 选择 Create role

  4. 选择 AWS service,然后选择 Redshift

  5. Select your use case 下,选择 Redshift - Customizable,然后选择 Next: Permissions

  6. 此时显示 Attach permissions policy 页面。依次选择 AmazonS3ReadOnlyAccessAmazonGlueConsoleFullAccess。选择 Next: Review

  7. 对于 Role name,为您的角色键入一个名称,例如 RedshiftCopyUnload。选择 Create role

  8. 使用新角色的群集中的所有用户都可使用该角色。如需限制访问,只允许特定群集中的特定用户、或特定区域中的群集访问,请编辑该角色的信任关系。有关更多信息,请参阅 限制对 IAM 角色的访问

  9. 将角色与您的群集关联。您可以在创建群集时关联 IAM 角色,或将角色添加到现有群集中。有关更多信息,请参阅 将 IAM 角色与群集关联

限制对 IAM 角色的访问

默认情况下,对 Amazon Redshift 群集可用的 IAM 角色对群集上的所有用户都可用。您可选择将 IAM 角色限制为特定群集上的特定 Amazon Redshift 数据库用户,或限制为特定区域。

要仅允许特定数据库用户使用 IAM 角色,请执行以下步骤。

标识对 IAM 角色具有访问权限的特定数据库用户

  1. 标识您的 Amazon Redshift 群集中的数据库用户的 Amazon 资源名称 (ARN)。数据库用户的 ARN 采用以下格式:arn:aws:redshift:region:account-id:dbuser:cluster-name/user-name

  2. 通过以下网址打开 IAM 控制台https://console.aws.amazon.com

  3. 在导航窗格中,选择 Roles

  4. 选择要限制到特定 Amazon Redshift 数据库用户的 IAM 角色。

  5. 选择 Trust Relationships 选项卡,然后选择 Edit Trust Relationship。允许 Amazon Redshift 代表您访问其他 AWS 服务的新 IAM 角色将具有以下信任关系:

    Copy
    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "redshift.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
  6. 向信任关系的 sts:AssumeRole 操作部分添加一个条件以将 sts:ExternalId 字段限制为您指定的值。为您要授予对 IAM 角色的访问权限的每个数据库用户包含一个 ARN。

    例如,以下信任关系指定只有区域 us-west-2 中的群集 my-cluster 上的数据库用户 user1user2 有权使用此 IAM 角色。

    Copy
    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "redshift.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "sts:ExternalId": [ "arn:aws:redshift:us-west-2:123456789012:dbuser:my-cluster/user1", "arn:aws:redshift:us-west-2:123456789012:dbuser:my-cluster/user2" ] } } }] }
  7. 选择 Update Trust Policy

将 IAM 角色限制到一个 AWS 区域

您可将 IAM 角色限制为仅在某个特定 AWS 区域中可访问。默认情况下,Amazon Redshift 的 IAM 角色不会限制到任何单一区域。

要按区域限制对 IAM 角色的使用,请执行以下步骤。

为 IAM 角色标识允许的区域

  1. 通过以下网址打开 IAM 控制台https://console.aws.amazon.com

  2. 在导航窗格中,选择 Roles

  3. 选择要用特定区域修改的角色。

  4. 选择 Trust Relationships 选项卡,然后选择 Edit Trust Relationship。允许 Amazon Redshift 代表您访问其他 AWS 服务的新 IAM 角色将具有以下信任关系:

    Copy
    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "redshift.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
  5. 使用您要允许对其使用角色的特定区域的列表修改 PrincipalService 列表。Service 列表中的每个区域都必须采用以下格式:redshift.region.amazonaws.com

    例如,以下编辑过的信任关系仅允许在 us-east-1us-west-2 区域中使用 IAM 角色。

    Copy
    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "redshift.us-east-1.amazonaws.com", "redshift.us-west-2.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }
  6. 选择 Update Trust Policy