使用 Amazon Redshift 的服務連結角色 - Amazon Redshift

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用 Amazon Redshift 的服務連結角色

Amazon Redshift 使用 AWS Identity and Access Management (IAM) 服務連結角色。服務連結角色是直接連結至 Amazon Redshift 的一種特殊 IAM 角色類型。服務連結角色是由 Amazon Redshift 預先定義的,並包含該服務代表 Amazon Redshift 叢集呼叫 AWS 服務所需的所有許可。

服務連結角色可讓設定 Amazon Redshift 變得更為簡單,因為您不必手動新增必要的許可。角色已連結到 Amazon Redshift 使用案例並且具備預先定義的許可。只有 Amazon Redshift 可以擔任此角色,且只有服務連結角色可以使用預先定義的許可政策。當您第一次建立叢集或由 RedShift 管理的 VPC 端點時,Amazon Redshift 會在您的帳戶中建立服務連結角色。只有在刪除帳戶中的所有 Amazon Redshift 叢集或由 RedShift 管理的虛擬私人雲端端點之後,才能刪除服務連結角色。因為您不會不小心移除存取資源所需的許可,這可保護您的 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

稽核記錄的動作

列出 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 使用者指南》中的刪除服務連結角色