将 IAM 角色与集群相关联 - Amazon Redshift

将 IAM 角色与集群相关联

在您创建一个 IAM 角色以授权 Amazon Redshift 为您访问其他 AWS 服务,必须将该角色与 Amazon Redshift 集群关联。在使用角色加载或卸载数据之前,您必须执行此操作。

将 IAM 角色与集群关联所需的权限

要将 IAM 角色与集群关联,用户必须具有对该 IAM 角色的 iam:PassRole 权限。此权限允许管理员限制用户可关联到 Amazon Redshift 集群的 IAM 角色。作为最佳实践,我们建议将权限策略附加到 IAM 角色,然后根据需要将其分配给用户和组。有关更多信息,请参阅 Amazon Redshift 中的 Identity and Access Management

以下示例显示了一个 IAM policy,该策略可附加到用户以允许该用户执行以下操作:

  • 获取用户的账户拥有的所有 Amazon Redshift 集群的详细信息。

  • 将三个 IAM 角色中的任一角色与两个 Amazon Redshift 集群中的任一集群关联。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "redshift:DescribeClusters", "Resource": "*" }, { "Effect": "Allow", "Action": [ "redshift:ModifyClusterIamRoles", "redshift:CreateCluster" ], "Resource": [ "arn:aws:redshift:us-east-1:123456789012:cluster:my-redshift-cluster", "arn:aws:redshift:us-east-1:123456789012:cluster:my-second-redshift-cluster" ] }, { "Effect": "Allow", "Action": "iam:PassRole", "Resource": [ "arn:aws:iam::123456789012:role/MyRedshiftRole", "arn:aws:iam::123456789012:role/SecondRedshiftRole", "arn:aws:iam::123456789012:role/ThirdRedshiftRole" ] } ] }

当用户具有相应的权限后,该用户可以将 IAM 角色与 Amazon Redshift 集群关联。随后,IAM 角色可以与 COPY 或 UNLOAD 命令或其他 Amazon Redshift 命令一起使用。

有关 IAM 策略的更多信息,请参阅 IAM 用户指南中的 IAM 策略概览

管理 IAM 角色与集群的关联

您可以在创建集群时将该 IAM 角色与 Amazon Redshift 集群关联。或者您可以修改现有集群并添加或删除一个或多个 IAM 角色关联。

请注意以下事项:

  • 您可以关联的最大 IAM 角色数量受配额限制。

  • 一个 IAM 角色可与多个 Amazon Redshift 集群关联。

  • 仅当 IAM 角色和集群都归同一 AWS 账户拥有时,该角色才能与 Amazon Redshift 集群关联。

您可通过以下程序,借助控制台管理集群的 IAM 角色关联。

要管理 IAM 角色关联
  1. 登录 AWS Management Console,然后通过以下网址打开 Amazon Redshift 控制台:https://console.aws.amazon.com/redshiftv2/

  2. 在导航菜单上,选择 Clusters(集群),然后选择要更新的集群。

  3. 对于 Actions(操作),选择 Manage IAM roles(管理 IAM 角色)以显示与集群关联的当前列表 IAM 角色。

  4. Manage IAM roles(管理 IAM 角色)页面上,选择要添加的可用 IAM 角色,然后选择 Add IAM role(添加 IAM 角色)。

  5. 选择 Done(完成)以保存您的更改。

您可以使用以下方法,通过 AWS CLI 管理集群的 IAM 角色关联。

要在创建集群后将 IAM 角色与其关联,请在 --iam-role-arns 命令的 create-cluster 参数中指定 IAM 角色的 Amazon Resource Name (ARN)。调用 create-cluster 命令时可以添加的最大 IAM 角色数量受配额限制。

将 IAM 角色与 Amazon Redshift 集群关联和解除两者之间的关联是一个异步过程。您可通过调用 describe-clusters 命令获取所有 IAM 角色集群关联的状态。

以下示例将两个 IAM 角色与新创建的名为 my-redshift-cluster 的集群关联。

aws redshift create-cluster \ --cluster-identifier "my-redshift-cluster" \ --node-type "ra3.4xlarge" \ --number-of-nodes 16 \ --iam-role-arns "arn:aws:iam::123456789012:role/RedshiftCopyUnload" \ "arn:aws:iam::123456789012:role/SecondRedshiftRole"

要将 IAM 角色与现有 Amazon Redshift 集群关联,请在 modify-cluster-iam-roles 命令的 --add-iam-roles 参数中指定 IAM 角色的 Amazon Resource Name (ARN)。调用 modify-cluster-iam-roles 命令时可以添加的最大 IAM 角色数量受配额限制。

以下示例将一个 IAM 角色与名为 my-redshift-cluster 的现有集群关联。

aws redshift modify-cluster-iam-roles \ --cluster-identifier "my-redshift-cluster" \ --add-iam-roles "arn:aws:iam::123456789012:role/RedshiftCopyUnload"

要取消 IAM 角色与集群的关联,请在 modify-cluster-iam-roles 命令的 --remove-iam-roles 参数中指定 IAM 角色的 ARN。modify-cluster-iam-roles调用 modify-cluster-iam-roles 命令时可以删除的最大 IAM 角色数量受配额限制。

以下示例从名为 123456789012 的集群中删除 my-redshift-cluster AWS 账户的 IAM 角色的关联。

aws redshift modify-cluster-iam-roles \ --cluster-identifier "my-redshift-cluster" \ --remove-iam-roles "arn:aws:iam::123456789012:role/RedshiftCopyUnload"

使用 AWS CLI 列出集群的 IAM 角色关联

要列出与 Amazon Redshift 集群关联的所有 IAM 角色以及 IAM 角色关联的状态,请调用 describe-clusters 命令。与集群关联的每个 IAM 角色的 ARN 将在 IamRoles 列表中返回,如以下示例输出所示。

已与集群关联的角色将显示状态 in-sync。正在与集群关联的角色将显示状态 adding。正与集群解除关联的角色将显示状态 removing

{ "Clusters": [ { "ClusterIdentifier": "my-redshift-cluster", "NodeType": "ra3.4xlarge", "NumberOfNodes": 16, "IamRoles": [ { "IamRoleArn": "arn:aws:iam::123456789012:role/MyRedshiftRole", "IamRoleApplyStatus": "in-sync" }, { "IamRoleArn": "arn:aws:iam::123456789012:role/SecondRedshiftRole", "IamRoleApplyStatus": "in-sync" } ], ... }, { "ClusterIdentifier": "my-second-redshift-cluster", "NodeType": "ra3.4xlarge", "NumberOfNodes": 10, "IamRoles": [ { "IamRoleArn": "arn:aws:iam::123456789012:role/MyRedshiftRole", "IamRoleApplyStatus": "in-sync" }, { "IamRoleArn": "arn:aws:iam::123456789012:role/SecondRedshiftRole", "IamRoleApplyStatus": "in-sync" }, { "IamRoleArn": "arn:aws:iam::123456789012:role/ThirdRedshiftRole", "IamRoleApplyStatus": "in-sync" } ], ... } ] }

有关使用 AWS CLI 的更多信息,请参阅 AWS CLI 用户指南