限制对 IAM 角色的访问
预设情况下,对 Amazon Redshift 集群可用的 IAM 角色对集群上的所有用户都可用。您可选择将 IAM 角色限制为特定集群上的特定 Amazon Redshift 数据库用户,或限制为特定区域。
要仅允许特定数据库用户使用 IAM 角色,请执行以下步骤。
标识对 IAM 角色具有访问权限的特定数据库用户
-
标识您的 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
-
打开 IAM 控制台
。 -
在导航窗格中,选择角色。
-
选择要限制到特定 Amazon Redshift 数据库用户的 IAM 角色。
-
选择 Trust Relationships 选项卡,然后选择 Edit Trust Relationship。允许 Amazon Redshift 代表您访问其他 AWS 服务的新 IAM 角色具有以下信任关系:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "redshift.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
-
向信任关系的
sts:AssumeRole
操作部分添加一个条件以将sts:ExternalId
字段限制为您指定的值。为您要授予对 IAM 角色的访问权限的每个数据库用户包含一个 ARN。外部 ID 可以是任何唯一的字符串。例如,以下信任关系指定只有区域
user1
中的集群user2
上的数据库用户my-cluster
和us-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" ] } } }] }
-
选择 Update Trust Policy。