將角色建立為 Amazon Redshift 的預設IAM角色 - Amazon Redshift

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

將角色建立為 Amazon Redshift 的預設IAM角色

當您透過 Redshift 主控台建立IAM角色時,Amazon Redshift 會以程式設計方式在 中建立角色, AWS 帳戶 並自動將現有的 AWS 受管政策連接到這些角色。此方法表示您可以留在 Redshift 主控台中,且不必切換到IAM主控台來建立角色。若要更精細地控制在 Amazon Redshift 主控台中建立的現有IAM角色的許可,您可以將自訂受管政策連接至該IAM角色。

IAM 在主控台中建立的角色

當您使用 Amazon Redshift 主控台建立IAM角色時,Amazon Redshift 會追蹤透過主控台建立的所有IAM角色。Amazon Redshift 會預先選取最新的預設IAM角色,以建立所有新叢集,並從快照還原叢集。

您可以透過具有執行SQL命令許可的政策的主控台建立IAM角色。這些命令包括 COPY、UNLOAD、CREATEEXTERNALFUNCTION、CREATEEXTERNALTABLE、CREATEEXTERNALSCHEMA、 CREATE MODEL或 CREATE LIBRARY。或者,您也可以建立自訂政策並將其連接至IAM角色,以更精細地控制使用者對 AWS 資源的存取。

當您使用主控台建立IAM角色並將其設定為叢集的預設值時,您不需要提供IAM角色的 Amazon Resource Name (ARN) 即可執行身分驗證和授權。

您透過主控台為叢集建立IAM的角色會自動連接 AmazonRedshiftAllCommandsFullAccess 受管政策。此IAM角色允許 Amazon Redshift 複製、卸載、查詢和分析您IAM帳戶中 AWS 資源的資料。受管政策提供對 COPYUNLOAD、、、 CREATE MODELCREATE EXTERNAL FUNCTIONCREATELIBRARY操作CREATEEXTERNAL的SCHEMA存取權。此政策也授予許可,以執行相關 AWS 服務的SELECT陳述式,例如 Amazon S3、Amazon CloudWatch Logs、Amazon SageMaker和 AWS Glue。

CREATE EXTERNAL FUNCTION、CREATEEXTERNALSCHEMA、 CREATE MODEL和 CREATELIBRARY命令具有default關鍵字。對於這些命令的此關鍵字,Amazon Redshift 會在命令執行時,使用設定為預設且與叢集相關聯的IAM角色。您可以執行 DEFAULT_IAM_ROLE 命令來檢查連接到叢集的目前預設IAM角色。

若要控制為 Redshift 叢集建立並設定為預設IAM角色的存取權限,請使用 ASSUMEROLE權限。此存取控制適用於資料庫使用者和群組執行命令 (例如前面列出的命令)。將ASSUMEROLE權限授予IAM角色的使用者或群組後,使用者或群組可以在執行這些命令時擔任該角色。透過使用 ASSUMEROLE 權限,您可以視需要授予對適當命令的存取權。

使用 Amazon Redshift 主控台,您可以執行以下操作:

AmazonRedshiftAllCommandsFullAccess 受管政策的許可

下列範例顯示 AmazonRedshiftAllCommandsFullAccess 受管政策中的許可,允許角色的某些動作設定為叢集的預設IAM。附加許可政策IAM的角色會授權使用者或群組可以和不可以執行的動作。根據這些許可,您可以從 Amazon S3 執行 COPY命令UNLOAD、執行 ,並使用 CREATEMODEL命令。

{ "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetBucketAcl", "s3:GetBucketCors", "s3:GetEncryptionConfiguration", "s3:GetBucketLocation", "s3:ListBucket", "s3:ListAllMyBuckets", "s3:ListMultipartUploadParts", "s3:ListBucketMultipartUploads", "s3:PutObject", "s3:PutBucketAcl", "s3:PutBucketCors", "s3:DeleteObject", "s3:AbortMultipartUpload", "s3:CreateBucket" ], "Resource": [ "arn:aws:s3:::redshift-downloads", "arn:aws:s3:::redshift-downloads/*", "arn:aws:s3:::*redshift*", "arn:aws:s3:::*redshift*/*" ] }

下列範例顯示 AmazonRedshiftAllCommandsFullAccess受管政策中的許可,允許角色的某些動作IAM設定為叢集的預設。附加許可政策IAM的角色會授權使用者或群組可以和不可以執行的動作。根據下列許可,您可以執行 CREATEEXTERNALFUNCTION命令。

{ "Action": [ "lambda:InvokeFunction" ], "Resource": "arn:aws:lambda:*:*:function:*redshift*" }

下列範例顯示 AmazonRedshiftAllCommandsFullAccess受管政策中的許可,允許角色的某些動作IAM設定為叢集的預設。附加許可政策IAM的角色會授權使用者或群組可以和不可以執行的動作。根據下列許可,您可以執行 Amazon Redshift Spectrum 所需的 CREATEEXTERNALSCHEMA和 CREATEEXTERNALTABLE命令。

{ "Effect": "Allow", "Action": [ "glue:CreateDatabase", "glue:DeleteDatabase", "glue:GetDatabase", "glue:GetDatabases", "glue:UpdateDatabase", "glue:CreateTable", "glue:DeleteTable", "glue:BatchDeleteTable", "glue:UpdateTable", "glue:GetTable", "glue:GetTables", "glue:BatchCreatePartition", "glue:CreatePartition", "glue:DeletePartition", "glue:BatchDeletePartition", "glue:UpdatePartition", "glue:GetPartition", "glue:GetPartitions", "glue:BatchGetPartition" ], "Resource": [ "arn:aws:glue:*:*:table/*redshift*/*", "arn:aws:glue:*:*:catalog", "arn:aws:glue:*:*:database/*redshift*" ] }

下列範例顯示 AmazonRedshiftAllCommandsFullAccess 受管政策中的許可,允許IAM角色集的某些動作為叢集的預設。附加許可政策IAM的角色會授權使用者或群組可以和不可以執行的動作。根據下列許可,您可以使用聯合查詢執行CREATEEXTERNALSCHEMA命令。

{ "Effect": "Allow", "Action": [ "secretsmanager:GetResourcePolicy", "secretsmanager:GetSecretValue", "secretsmanager:DescribeSecret", "secretsmanager:ListSecretVersionIds" ], "Resource": [ "arn:aws:secretsmanager:*:*:secret:*Redshift*" ] }, { "Effect": "Allow", "Action": [ "secretsmanager:GetRandomPassword", "secretsmanager:ListSecrets" ], "Resource": "*", "Condition": { "StringEquals": { "secretsmanager:ResourceTag/Redshift": "true" } } },

使用主控台管理為叢集建立IAM的角色

若要建立、修改和移除從 Amazon Redshift 主控台建立IAM的角色,請使用主控台中的叢集區段。

建立 IAM角色做為預設值

在主控台上,您可以為自動連接AmazonRedshiftAllCommandsFullAccess政策的叢集建立IAM角色。您建立的新IAM角色可讓 Amazon Redshift 複製、載入、查詢和分析IAM帳戶中 Amazon 資源的資料。

叢集的預設值只能設定一個IAM角色。如果您在現有IAM角色目前指派為預設值時,將另一個IAM角色建立為叢集預設值,則新IAM角色會取代另一個角色為預設值。

若要建立新的叢集,並將IAM角色設定為新叢集的預設值
  1. 登入 AWS Management Console 並在 開啟 Amazon Redshift 主控台https://console.aws.amazon.com/redshiftv2/

  2. 在導覽選單上,選擇叢集。 AWS 區域 列出您目前 中帳戶的叢集。每個叢集的屬性子集會在清單中分欄顯示。

  3. 選擇 Create cluster (建立叢集) 以建立叢集。

  4. 遵循主控台頁面說明以輸入 Cluster configuration (叢集組態) 的屬性。如需此步驟的相關資訊,請參閱 建立叢集

  5. (選用) 選擇載入範例資料將範例資料集載入 Amazon Redshift 叢集,以開始使用查詢編輯器查詢資料。

    如果您在防火牆後,則資料庫連接埠必須是接受傳入連線的開放連接埠。

  6. 遵循主控台頁面說明以輸入資料庫組態的屬性。

  7. 叢集許可 下,從管理IAM角色 中,選擇建立IAM角色

  8. 選擇下列其中一種方法,為IAM角色指定要存取的 Amazon S3 儲存貯體:

    • 選擇沒有額外的 Amazon S3 儲存貯體來建立IAM角色,而不指定特定的 Amazon S3 儲存貯體。

    • 選擇任何 Amazon S3 儲存貯體,允許擁有 Amazon Redshift 叢集存取權的使用者也可以存取您的任何 Amazon S3 儲存貯體及其中的 AWS 帳戶內容。

    • 選擇特定 Amazon S3 儲存貯體,指定要建立之IAM角色具有存取許可的一或多個 Amazon S3 儲存貯體。然後從資料表中選擇一或多個 Amazon S3 儲存貯體。

  9. 選擇建立IAM角色作為預設 。Amazon Redshift 會自動建立角色,並將該IAM角色設定為叢集的預設值。

  10. 選擇 Create cluster (建立叢集) 以建立叢集。該叢集可能需要幾分鐘方可使用。

從叢集移除IAM角色

您可以從叢集中移除一或多個IAM角色。

從叢集中移除IAM角色
  1. 登入 AWS Management Console 並在 開啟 Amazon Redshift 主控台https://console.aws.amazon.com/redshiftv2/

  2. 在導覽選單上,選擇叢集。 AWS 區域 列出您目前 中帳戶的叢集。每個叢集的屬性子集會在清單中分欄顯示。

  3. 選擇您要從中移除IAM角色的叢集。

  4. 叢集許可 下,選擇您要從叢集中移除的一或多個IAM角色。

  5. 管理IAM角色 中,選擇移除IAM角色

將IAM角色與叢集建立關聯

您可以將一個或多個IAM角色與叢集建立關聯。

將IAM角色與叢集建立關聯
  1. 登入 AWS Management Console 並在 開啟 Amazon Redshift 主控台https://console.aws.amazon.com/redshiftv2/

  2. 在導覽選單上,選擇叢集。 AWS 區域 列出您目前 中帳戶的叢集。每個叢集的屬性子集會在清單中分欄顯示。

  3. 選擇您要與IAM角色建立關聯的叢集。

  4. 叢集許可 下,選擇您要與叢集建立關聯的一或多個IAM角色。

  5. 管理IAM角色 中,選擇關聯IAM角色

  6. 選擇要與叢集建立關聯的一或多個IAM角色。

  7. 選擇關聯IAM角色

將IAM角色設定為預設值

您可以設定IAM角色作為叢集的預設值。

將IAM角色設為叢集的預設值
  1. 登入 AWS Management Console 並在 開啟 Amazon Redshift 主控台https://console.aws.amazon.com/redshiftv2/

  2. 在導覽選單上,選擇叢集。 AWS 區域 列出您目前 中帳戶的叢集。每個叢集的屬性子集會在清單中分欄顯示。

  3. 選擇您要為其設定預設IAM角色的叢集。

  4. 叢集許可 下,從關聯IAM角色 中,選擇您要設為叢集預設IAM角色的角色。

  5. 設定預設值下,選擇設為預設

  6. 出現提示時,選擇設定預設值以確認將指定的IAM角色設為預設值。

讓角色不再是叢集的預設IAM角色

您可以讓IAM角色不再是叢集的預設值。

清除IAM角色作為叢集的預設值
  1. 登入 AWS Management Console 並在 開啟 Amazon Redshift 主控台https://console.aws.amazon.com/redshiftv2/

  2. 在導覽選單上,選擇叢集。 AWS 區域 列出您目前 中帳戶的叢集。每個叢集的屬性子集會在清單中分欄顯示。

  3. 選擇您要與IAM角色建立關聯的叢集。

  4. 叢集許可 下,從關聯IAM角色 中選擇預設IAM角色。

  5. 設定預設值下,選擇清除預設值

  6. 出現提示時,選擇清除預設值以確認清除指定的IAM角色為預設值。

使用 管理在叢集上建立IAM的角色 AWS CLI

您可以使用 管理在叢集上建立IAM的角色 AWS CLI。

若要建立IAM角色設定為預設的 Amazon Redshift 叢集

若要使用IAM角色建立 Amazon Redshift 叢集,將其設定為叢集的預設值,請使用 aws redshift create-cluster AWS CLI 命令。

下列 AWS CLI 命令會建立 Amazon Redshift 叢集和名為 myrole1 IAM的角色。 AWS CLI 命令也會將 myrole1 設定為叢集的預設值。

aws redshift create-cluster \ --node-type dc2.large \ --number-of-nodes 2 \ --master-username adminuser \ --master-user-password TopSecret1 \ --cluster-identifier mycluster \ --iam-roles 'arn:aws:iam::012345678910:role/myrole1' 'arn:aws:iam::012345678910:role/myrole2' \ --default-iam-role-arn 'arn:aws:iam::012345678910:role/myrole1'

下列程式碼片段為回應範例。

{ "Cluster": { "ClusterIdentifier": "mycluster", "NodeType": "dc2.large", "MasterUsername": "adminuser", "DefaultIamRoleArn": "arn:aws:iam::012345678910:role/myrole1", "IamRoles": [ { "IamRoleArn": "arn:aws:iam::012345678910:role/myrole1", "ApplyStatus": "adding" }, { "IamRoleArn": "arn:aws:iam::012345678910:role/myrole2", "ApplyStatus": "adding" } ] ... } }

若要將一或多個IAM角色新增至 Amazon Redshift 叢集

若要新增與叢集相關聯的一或多個IAM角色,請使用 aws redshift modify-cluster-iam-roles AWS CLI 命令。

下列 AWS CLI 命令會將 myrole3myrole4 新增至叢集。

aws redshift modify-cluster-iam-roles \ --cluster-identifier mycluster \ --add-iam-roles 'arn:aws:iam::012345678910:role/myrole3' 'arn:aws:iam::012345678910:role/myrole4'

下列程式碼片段為回應範例。

{ "Cluster": { "ClusterIdentifier": "mycluster", "NodeType": "dc2.large", "MasterUsername": "adminuser", "DefaultIamRoleArn": "arn:aws:iam::012345678910:role/myrole1", "IamRoles": [ { "IamRoleArn": "arn:aws:iam::012345678910:role/myrole1", "ApplyStatus": "in-sync" }, { "IamRoleArn": "arn:aws:iam::012345678910:role/myrole2", "ApplyStatus": "in-sync" }, { "IamRoleArn": "arn:aws:iam::012345678910:role/myrole3", "ApplyStatus": "adding" }, { "IamRoleArn": "arn:aws:iam::012345678910:role/myrole4", "ApplyStatus": "adding" } ], ... } }

從 Amazon Redshift 叢集中移除一或多個IAM角色

若要移除與叢集相關聯的一或多個IAM角色,請使用 aws redshift modify-cluster-iam-roles AWS CLI 命令。

下列 AWS CLI 命令myrole4會從叢集中移除 myrole3和 。

aws redshift modify-cluster-iam-roles \ --cluster-identifier mycluster \ --remove-iam-roles 'arn:aws:iam::012345678910:role/myrole3' 'arn:aws:iam::012345678910:role/myrole4'

下列程式碼片段為回應範例。

{ "Cluster": { "ClusterIdentifier": "mycluster", "NodeType": "dc2.large", "MasterUsername": "adminuser", "DefaultIamRoleArn": "arn:aws:iam::012345678910:role/myrole1", "IamRoles": [ { "IamRoleArn": "arn:aws:iam::012345678910:role/myrole1", "ApplyStatus": "in-sync" }, { "IamRoleArn": "arn:aws:iam::012345678910:role/myrole2", "ApplyStatus": "in-sync" }, { "IamRoleArn": "arn:aws:iam::012345678910:role/myrole3", "ApplyStatus": "removing" }, { "IamRoleArn": "arn:aws:iam::012345678910:role/myrole4", "ApplyStatus": "removing" } ], ... } }

將關聯IAM角色設定為叢集的預設值

若要將關聯IAM角色設定為叢集的預設值,請使用 aws redshift modify-cluster-iam-roles AWS CLI 命令。

下列 AWS CLI 命令設定為叢集的myrole2預設值。

aws redshift modify-cluster-iam-roles \ --cluster-identifier mycluster \ --default-iam-role-arn 'arn:aws:iam::012345678910:role/myrole2'

下列程式碼片段為回應範例。

{ "Cluster": { "ClusterIdentifier": "mycluster", "NodeType": "dc2.large", "MasterUsername": "adminuser", "DefaultIamRoleArn": "arn:aws:iam::012345678910:role/myrole2", "IamRoles": [ { "IamRoleArn": "arn:aws:iam::012345678910:role/myrole1", "ApplyStatus": "in-sync" }, { "IamRoleArn": "arn:aws:iam::012345678910:role/myrole2", "ApplyStatus": "in-sync" } ], ... } }

將未關聯的IAM角色設定為叢集的預設值

若要將未關聯的IAM角色設定為叢集的預設值,請使用 aws redshift modify-cluster-iam-roles AWS CLI 命令。

下列 AWS CLI 命令會myrole2新增至 Amazon Redshift 叢集,並將其設定為叢集的預設值。

aws redshift modify-cluster-iam-roles \ --cluster-identifier mycluster \ --add-iam-roles 'arn:aws:iam::012345678910:role/myrole3' \ --default-iam-role-arn 'arn:aws:iam::012345678910:role/myrole3'

下列程式碼片段為回應範例。

{ "Cluster": { "ClusterIdentifier": "mycluster", "NodeType": "dc2.large", "MasterUsername": "adminuser", "DefaultIamRoleArn": "arn:aws:iam::012345678910:role/myrole3", "IamRoles": [ { "IamRoleArn": "arn:aws:iam::012345678910:role/myrole1", "ApplyStatus": "in-sync" }, { "IamRoleArn": "arn:aws:iam::012345678910:role/myrole2", "ApplyStatus": "in-sync" }, { "IamRoleArn": "arn:aws:iam::012345678910:role/myrole3", "ApplyStatus": "adding" } ], ... } }

從快照還原叢集,並將IAM角色設定為其預設值

當您從快照還原叢集時,您可以關聯現有IAM角色或建立新的角色,並將其設定為叢集的預設值。

若要從快照還原 Amazon Redshift 叢集,並將IAM角色設定為叢集預設值,請使用 aws redshift restore-from-cluster-snapshot AWS CLI 命令。

下列 AWS CLI 命令會從快照還原叢集,並將 設定為叢集的myrole2預設值。

aws redshift restore-from-cluster-snapshot \ --cluster-identifier mycluster-clone \ --snapshot-identifier my-snapshot-id --iam-roles 'arn:aws:iam::012345678910:role/myrole1' 'arn:aws:iam::012345678910:role/myrole2' \ --default-iam-role-arn 'arn:aws:iam::012345678910:role/myrole1'

下列程式碼片段為回應範例。

{ "Cluster": { "ClusterIdentifier": "mycluster-clone", "NodeType": "dc2.large", "MasterUsername": "adminuser", "DefaultIamRoleArn": "arn:aws:iam::012345678910:role/myrole1", "IamRoles": [ { "IamRoleArn": "arn:aws:iam::012345678910:role/myrole1", "ApplyStatus": "adding" }, { "IamRoleArn": "arn:aws:iam::012345678910:role/myrole2", "ApplyStatus": "adding" } ], ... } }