限制对 IAM 角色的访问 - Amazon Redshift

限制对 IAM 角色的访问

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

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

标识对 IAM 角色具有访问权限的特定数据库用户
  1. 标识您的 Amazon Redshift 集群中的数据库用户的 Amazon Resource Name (ARN)。数据库用户的 ARN 采用以下格式:arn:aws:redshift:region:account-id:dbuser:cluster-name/user-name

    对于 Amazon Redshift Serverless,请使用以下 ARN 格式:arn:aws:redshift:region:account-id:dbuser:workgroup-name/user-name

  2. 打开 IAM 控制台

  3. 在导航窗格中,选择角色

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

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

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

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

    { "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