对 Amazon Redshift 使用服务相关角色
Amazon Redshift 使用 AWS Identity and Access Management (IAM) 服务相关角色。服务相关角色是一种独特类型的 IAM 角色,它与 Amazon Redshift 直接相关。服务相关角色由 Amazon Redshift 预定义,具有服务代表您的 Amazon Redshift 集群调用 AWS 服务所需的所有权限。
服务相关角色可让您更轻松地设置 Amazon Redshift,因为您不必手动添加必要权限。该角色与 Amazon Redshift 使用案例相关联并且具有预定义的权限。只有 Amazon Redshift 可以代入该角色,并且只有服务相关角色可以使用预定义的权限策略。Amazon Redshift 会在您首次创建集群或 Redshift 托管的 VPC 端点时,在您的账户中创建服务相关角色。只有删除您账户中的所有 Amazon Redshift 集群或 Redshift 托管的 VPC 端点之后,您才可以删除服务相关角色。这将保护您的 Amazon Redshift 资源,因为您不会无意中删除访问资源所需的权限。
Amazon Redshift 支持在该服务可用的所有区域中使用服务相关角色。有关更多信息,请参阅 AWS 区域和终端节点。
有关支持服务相关角色的其它服务的信息,请参阅与 IAM 配合使用的 AWS 服务,并查找服务相关角色列中为是的服务。选择是和链接,查看该服务的服务相关角色文档。
Amazon Redshift 的服务相关角色权限
Amazon Redshift 使用名为 AWSServiceRoleForRedshift 的服务相关角色 – 允许 Amazon Redshift 代表您调用 AWS 服务。此服务相关角色附加至以下托管式策略上:AmazonRedshiftServiceLinkedRolePolicy
。有关此策略的更新,请参阅适用于 Amazon Redshift 的 AWS 托管式策略(预定义)。
AWSServiceRoleForRedshift 服务相关角色仅信任 redshift.amazonaws.com
来代入该角色。
AWSServiceRoleForRedshift 服务相关角色权限策略允许 Amazon Redshift 对所有相关资源完成以下操作:
-
ec2:DescribeVpcs
-
ec2:DescribeSubnets
-
ec2:DescribeNetworkInterfaces
-
ec2:DescribeAddress
-
ec2:AssociateAddress
-
ec2:DisassociateAddress
-
ec2:CreateNetworkInterface
-
ec2:DeleteNetworkInterface
-
ec2:ModifyNetworkInterfaceAttribute
-
ec2:CreateVpcEndpoint
-
ec2:DeleteVpcEndpoints
-
ec2:DescribeVpcEndpoints
-
ec2:ModifyVpcEndpoint
ec2:DescribeVpcAttribute
ec2:DescribeSecurityGroups
ec2:DescribeInternetGateways
ec2:DescribeSecurityGroupRules
ec2:DescribeAvailabilityZones
ec2:DescribeNetworkAcls
ec2:DescribeRouteTables
ec2:AssignIpv6Addresses
ec2:UnassignIpv6Addresses
对网络资源的权限
以下权限允许在 Amazon EC2 上执行操作来创建和管理安全组规则。这些安全组和规则特别关联到 Amazon Redshift aws:RequestTag/Redshift
资源标签。这样可以将权限的范围限制为特定 Amazon Redshift 资源。
ec2:CreateSecurityGroup
ec2:AuthorizeSecurityGroupEgress
ec2:AuthorizeSecurityGroupIngress
ec2:RevokeSecurityGroupEgress
ec2:RevokeSecurityGroupIngress
ec2:ModifySecurityGroupRules
ec2:DeleteSecurityGroup
服务配额权限
以下权限支持调用方获得服务配额。
servicequotas:GetServiceQuota
以下 JSON 代码段显示了服务配额的操作和资源范围。
{ "Sid": "ServiceQuotasToCheckCustomerLimits", "Effect": "Allow", "Action": [ "servicequotas:GetServiceQuota" ], "Resource": [ "arn:aws:servicequotas:*:*:ec2/L-0263D0A3", "arn:aws:servicequotas:*:*:vpc/L-29B6F2EB" ] }
配额代码如下:
L-0263D0A3 – EC2-VPC 弹性 IP 的配额代码。
L-29B6F2EB – 每个 VPC 的接口 VPC 端点的配额代码。
有关更多信息,请参阅AWS服务配额。
审计日志记录的操作
列出的带 logs
前缀的操作与审计日志记录和相关功能有关。具体来说是创建和管理日志组和日志流的操作。
-
logs:CreateLogGroup
-
logs:PutRetentionPolicy
-
logs:CreateLogStream
-
logs:PutLogEvents
-
logs:DescribeLogStreams
-
logs:GetLogEvents
以下 JSON 向 Amazon Redshift 显示了用于审计日志记录的操作和资源范围。
[ { "Sid": "EnableCreationAndManagementOfRedshiftCloudwatchLogGroups", "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:PutRetentionPolicy" ], "Resource": [ "arn:aws:logs:*:*:log-group:/aws/redshift/*" ] }, { "Sid": "EnableCreationAndManagementOfRedshiftCloudwatchLogStreams", "Effect": "Allow", "Action": [ "logs:CreateLogStream", "logs:PutLogEvents", "logs:DescribeLogStreams", "logs:GetLogEvents" ], "Resource": [ "arn:aws:logs:*:*:log-group:/aws/redshift/*:log-stream:*" ] } ]
有关服务相关角色及它们在 AWS 中的作用的更多信息,请参阅使用服务相关角色。有关 Amazon Redshift 的特定操作和其它 IAM 资源的更多信息,请参阅 Amazon Redshift 的操作、资源和条件键。
使用 AWS Secrets Manager 管理管理员凭证的操作
所列出的带有 secretsmanager
前缀的操作与使用 Amazon Redshift 管理您的管理员凭证有关。Amazon Redshift 通过这些操作,使用 AWS Secrets Manager 来创建和管理您的管理员凭证密钥。
以下 JSON 显示了操作和资源范围,可供 Amazon Redshift 通过 AWS Secrets Manager 管理管理员凭证。
[ { "Effect": "Allow", "Action": [ "secretsmanager:DescribeSecret", "secretsmanager:DeleteSecret", "secretsmanager:PutSecretValue", "secretsmanager:UpdateSecret", "secretsmanager:UpdateSecretVersionStage", "secretsmanager:RotateSecret" ], "Resource": [ "arn:aws:secretsmanager:*:*:secret:redshift!*" ], "Condition": { "StringEquals": { "secretsmanager:ResourceTag/aws:secretsmanager:owningService": "redshift" } } }, { "Effect": "Allow", "Action": [ "secretsmanager:GetRandomPassword" ], "Resource": "*" } ]
要允许 IAM 实体创建 AWSServiceRoleForRedshift 服务相关角色
{ "Effect": "Allow", "Action": [ "iam:CreateServiceLinkedRole" ], "Resource": "arn:aws:iam::
<AWS-account-ID>
:role/aws-service-role/redshift.amazonaws.com/AWSServiceRoleForRedshift", "Condition": {"StringLike": {"iam:AWSServiceName": "redshift.amazonaws.com"}} }
要允许 IAM 实体删除 AWSServiceRoleForRedshift 服务相关角色
向该 IAM 实体的权限中添加以下策略声明:
{ "Effect": "Allow", "Action": [ "iam:DeleteServiceLinkedRole", "iam:GetServiceLinkedRoleDeletionStatus" ], "Resource": "arn:aws:iam::
<AWS-account-ID>
:role/aws-service-role/redshift.amazonaws.com/AWSServiceRoleForRedshift", "Condition": {"StringLike": {"iam:AWSServiceName": "redshift.amazonaws.com"}} }
或者,您可以使用 AWS 托管式策略提供对 Amazon Redshift 的完全访问权限
为 Amazon Redshift 创建服务相关角色
您无需手动创建 AWSServiceRoleForRedshift 服务相关角色。Amazon Redshift 将为您创建服务相关角色。如果已从您的账户中删除 AWSServiceRoleForRedshift 服务相关角色,Amazon Redshift 将在您启动新 Amazon Redshift 集群时创建该角色。
重要
如果您在 2017 年 9 月 18 日(从此时开始支持服务相关角色)之前已使用 Amazon Redshift 服务,则 Amazon Redshift 已在您的账户中创建 AWSServiceRoleForRedshift 角色。要了解更多信息,请参阅我的 IAM 账户中出现新角色。
为 Amazon Redshift 编辑服务相关角色
Amazon Redshift 不允许您编辑 AWSServiceRoleForRedshift 服务相关角色。在创建服务相关角色后,您将无法更改角色的名称,因为可能有多种实体引用该角色。不过,您可以使用 IAM 控制台、AWS Command Line Interface (AWS CLI) 或 IAM API 编辑角色描述。有关更多信息,请参阅 IAM 用户指南中的修改角色。
删除 Amazon Redshift 的服务相关角色
如果您不再需要使用某个需要服务相关角色的功能或服务,我们建议您删除该角色。这样您就没有未被主动监控或维护的未使用实体。
在删除账户的服务相关角色之前,您需要关闭并删除该账户中的所有集群。有关更多信息,请参阅 关闭和删除集群。
您可以使用 IAM 控制台、AWS CLI 或 IAM API 删除服务相关角色。有关更多信息,请参阅 IAM 用户指南中的删除服务相关角色。