Amazon Redshift 自 2025 年 11 月 1 日起不再支援建立新的 Python UDF。如果您想要使用 Python UDF,請在該日期之前建立 UDF。現有 Python UDF 將繼續正常運作。如需詳細資訊,請參閱部落格文章
使用 Amazon Redshift 的服務連結角色
Amazon Redshift 使用 AWS Identity and Access Management (IAM) 服務連結角色。服務連結角色是直接連結至 Amazon Redshift 的一種特殊 IAM 角色類型。服務連結角色由 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:DescribeVpcAttributeec2:DescribeSecurityGroupsec2:DescribeInternetGatewaysec2:DescribeSecurityGroupRulesec2:DescribeAvailabilityZonesec2:DescribeNetworkAclsec2:DescribeRouteTablesec2:AssignIpv6Addressesec2:UnassignIpv6Addresses
網路資源的許可
下列許可允許在 Amazon EC2 上執行動作,以建立和管理安全群組規則。這些安全群組和規則特別與 Amazon Redshift aws:RequestTag/Redshift 資源標籤相關聯。這會將許可的適用範圍限制在特定的 Amazon Redshift 資源。
ec2:CreateSecurityGroupec2:AuthorizeSecurityGroupEgressec2:AuthorizeSecurityGroupIngressec2:RevokeSecurityGroupEgressec2:RevokeSecurityGroupIngressec2:ModifySecurityGroupRulesec2: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": "*" } ]
在 AWS Glue Data Catalog 註冊叢集和無伺服器命名空間的動作
列出的動作帶有 glue 字首時,表示與存取 AWS Glue Data Catalog 中的目錄有關,這些目錄來自註冊佈建叢集或無伺服器命名空間。如需詳細資訊,請參閱《Amazon Redshift 資料庫開發人員指南》中的 Amazon Redshift 的 Apache Iceberg 相容性。
下列 JSON 會向 Amazon Redshift 顯示用於存取 AWS Glue Data Catalog 中目錄的動作和資源範圍:
[ { "Sid": "DiscoverRedshiftCatalogs", "Effect": "Allow", "Action": [ "glue:GetCatalogs", "glue:GetCatalog" ], "Resource": [ "arn:aws:glue:*:*:catalog", "arn:aws:glue:*:*:catalog/*" ], "Condition": { "Bool": { "glue:EnabledForRedshiftAutoDiscovery": "true" }, "StringEquals": { "aws:ResourceAccount": "${aws:PrincipalAccount}" } } }, { "Sid": "LakeFormationGetMetadataAccessForFederatedCatalogs", "Effect": "Allow", "Action": [ "lakeformation:GetDataAccess" ], "Resource": [ "*" ], "Condition": { "Bool": { "lakeformation:EnabledOnlyForMetaDataAccess":"true" }, "StringEquals": { "aws:ResourceAccount": "${aws:PrincipalAccount}" }, "ForAnyValue:StringEquals": { "aws:CalledVia": "glue.amazonaws.com" } } } } ]
glue:GetCatalog 和 glue:GetCatalogs 許可具有條件 glue:EnabledForRedshiftAutoDiscovery:true,這表示 Amazon Redshift 會授予 IAM 存取權以自動探索目錄。若要選擇退出,請新增 AWS Glue 帳戶層級資源政策,以選擇性地拒絕服務連結角色存取目錄。由於服務連結角色在政策中已有明確的允許動作,因此選擇退出政策需要明確拒絕該動作。請參考下列範例,範例中的其他政策拒絕 Amazon Redshift 的自動探索:
允許 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 叢集時建立角色。
重要
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 使用者指南》中的刪除服務連結角色。