对 Amazon Redshift 使用服务相关角色 - Amazon Redshift
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

对 Amazon Redshift 使用服务相关角色

Amazon Redshift 使用 Amazon Identity and Access Management (IAM) 服务相关角色。服务相关角色是一种独特类型的 IAM 角色,它与 Amazon Redshift 直接相关。服务相关角色由 Amazon Redshift 预定义,具有服务代表您的 Amazon Redshift 集群调用 Amazon 服务所需的所有权限。

服务相关角色可让您更轻松地设置 Amazon Redshift,因为您不必手动添加必要权限。该角色与 Amazon Redshift 使用案例相关联并且具有预定义的权限。只有 Amazon Redshift 可以代入该角色,并且只有服务相关角色可以使用预定义的权限策略。Amazon Redshift 会在您首次创建集群时在您的账户中创建服务相关角色。只有删除您账户中的所有 Amazon Redshift 集群之后,您才可以删除服务相关角色。这将保护您的 Amazon Redshift 资源,因为您不会无意中删除访问资源所需的权限。

Amazon Redshift 支持在该服务可用的所有区域中使用服务相关角色。有关更多信息,请参阅 Amazon 区域和终端节点

有关支持服务相关角色的其它服务的信息,请参阅与 IAM 配合使用的 Amazon 服务,并查找 Service-Linked Role(服务相关角色)列中为 Yes(是)的服务。选择和链接,查看该服务的服务相关角色文档。

Amazon Redshift 的服务相关角色权限

Amazon Redshift 使用名为 AWSServiceRoleForRedshift 的服务相关角色 – 允许 Amazon Redshift 代表您调用 Amazon 服务。此服务相关角色附加至以下托管式策略上:AmazonRedshiftServiceLinkedRolePolicy。有关此策略的更新,请参阅适用于 Amazon Redshift 的 Amazon 托管式策略(预定义)

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

对网络和 VPC 资源的权限

以下权限允许在 Amazon EC2 上执行操作,以创建和管理网络及虚拟私有云资源。它们特别与 RedshiftMigrateToVpc 资源标签有关联。这将权限范围限制为从特定 Amazon EC2 Classic 到 Amazon EC2 VPC 迁移任务。有关更多信息,请参阅控制对使用标签的 Amazon 资源进行访问

  • ec2:AuthorizeSecurityGroupEgress

  • ec2:AuthorizeSecurityGroupIngress

  • ec2:UpdateSecurityGroupRuleDescriptionsEgress

  • ec2:ReplaceRouteTableAssociation

  • ec2:CreateRouteTable

  • ec2:AttachInternetGateway

  • ec2:UpdateSecurityGroupRuleDescriptionsIngress

  • ec2:AssociateRouteTable

  • ec2:RevokeSecurityGroupIngress

  • ec2:CreateRoute

  • ec2:CreateSecurityGroup

  • ec2:RevokeSecurityGroupEgress

  • ec2:ModifyVpcAttribute

  • ec2:CreateSubnet

  • ec2:CreateInternetGateway

  • ec2:CreateVpc

有关 Amazon EC2 操作和资源的更多信息,请参阅 Amazon EC2 的操作、资源和条件键

审计日志记录的操作

列出的带 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:*" ] } ]

有关服务相关角色及它们在 Amazon 中的作用的更多信息,请参阅使用服务相关角色。有关 Amazon Redshift 的特定操作和其它 IAM 资源的更多信息,请参阅 Amazon Redshift 的操作、资源和条件键

要允许 IAM 实体创建 AWSServiceRoleForRedshift 服务相关角色

在中国(北京)区域中,将以下策略语句添加到该 IAM 实体的权限中:

{ "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 实体的权限中:

{ "Effect": "Allow", "Action": [ "iam:CreateServiceLinkedRole" ], "Resource": "arn:aws-cn: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"}} }

在中国(北京)区域中,将以下策略语句添加到该 IAM 实体的权限中:

{ "Effect": "Allow", "Action": [ "iam:DeleteServiceLinkedRole", "iam:GetServiceLinkedRoleDeletionStatus" ], "Resource": "arn:aws-cn:iam::<AWS-account-ID>:role/aws-service-role/redshift.amazonaws.com/AWSServiceRoleForRedshift", "Condition": {"StringLike": {"iam:AWSServiceName": "redshift.amazonaws.com"}} }

或者,您可以使用 Amazon 托管式策略提供对 Amazon Redshift 的完全访问权限

为 Amazon Redshift 创建服务相关角色

您无需手动创建 AWSServiceRoleForRedshift 服务相关角色。Amazon Redshift 将为您创建服务相关角色。如果已从您的账户中删除 AWSServiceRoleForRedshift 服务相关角色,Amazon Redshift 将在您启动新 Amazon Redshift 集群时创建该角色。

重要

如果您在 2017 年 9 月 18 日(从此时开始支持服务相关角色)之前已使用 Amazon Redshift 服务,则 Amazon Redshift 已在您的账户中创建 AWSServiceRoleForRedshift 角色。要了解更多信息,请参阅我的 IAM 账户中出现新角色在中国(北京)区域,如果您在 2017 年 11 月 17 日之前就已使用 Amazon Redshift 服务,则 Amazon Redshift 已在您的账户中创建 AWSServiceRoleForRedshift 角色。

为 Amazon Redshift 编辑服务相关角色

Amazon Redshift 不允许您编辑 AWSServiceRoleForRedshift 服务相关角色。在创建服务相关角色后,您将无法更改角色的名称,因为可能有多种实体引用该角色。不过,您可以使用 IAM 控制台、Amazon Command Line Interface (Amazon CLI) 或 IAM API 编辑角色描述。有关更多信息,请参阅 IAM 用户指南中的修改角色

删除 Amazon Redshift 的服务相关角色

如果您不再需要使用某个需要服务相关角色的功能或服务,我们建议您删除该角色。这样您就没有未被主动监控或维护的未使用实体。

在删除账户的服务相关角色之前,您需要关闭并删除该账户中的所有集群。有关更多信息,请参阅 关闭和删除集群

您可以使用 IAM 控制台、Amazon CLI 或 IAM API 删除服务相关角色。有关更多信息,请参阅 IAM 用户指南中的删除服务相关角色