管理 Amazon Redshift 資源存取許可的概觀 - Amazon Redshift

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

管理 Amazon Redshift 資源存取許可的概觀

每個 AWS 資源都由一個 AWS 帳號擁有,建立或存取資源的權限由權限原則控制。帳戶管理員可以將權限原則附加至IAM身分識別 (也就是使用者、群組和角色),而某些服務 (例如 AWS Lambda) 也支援將權限原則附加至資源。

注意

帳戶管理員 (或管理員使用者) 是具有管理員權限的使用者。如需詳細資訊,請參閱《IAM使用指南》中的IAM最佳作法

授予許可時,您會決定誰取得這些許可、取得哪些資源的許可,以及可以對那些資源進行的特定動作。

Amazon Redshift 資源和操作

Amazon Redshift 提供服務特定的資源、動作和條件內容金鑰,可用於IAM許可政策。

Amazon Redshift,Amazon Redshift 無服務器,Amazon Redshift 數據API和 Amazon Redshift 查詢編輯器 v2 訪問許可

設定時存取控制,您會撰寫可以附加至身分識別 (IAM身分型原則) 的權限原則。如需詳細的參考資訊,請參閱《服務授權參考》中的下列主題:

服務授權參考包含IAM原則中可使用哪些API作業的相關資訊。它還包括您可以授與權限的 AWS 資源,以及可包含用於精細存取控制的條件金鑰。如需條件的相關資訊,請參閱使用IAM原則條件進行精細的存取控制

您可以在政策的 Action 欄位中指定動作、在政策的 Resource 欄位中指定資源值,以及在政策的 Condition 欄位中指定條件。若要為 Amazon Redshift 指定動作,請使用redshift:前置詞,後面接著API作業名稱 (例如redshift:CreateCluster)。

了解資源所有權

資源擁有者是建立資源的 AWS 帳號。也就是說,資源擁有者是驗證建立資源之要求的主體實體 (根帳號、IAM使用者或IAM角色) 的帳號。 AWS 下列範例說明其如何運作:

  • 如果您使用帳戶的根帳戶登入資料建立資料庫叢集,您的 AWS 帳戶就是 Amazon Redshift 資源的擁有者。 AWS

  • 如果您在 AWS 帳戶中建立具有建立 Amazon Redshift 資源權限的IAM角色,則任何可以擔任該角色的人都可以建立 Amazon Redshift 資源。您的 AWS 帳戶 (即角色所屬帳戶) 會擁有 Amazon Redshift 資源。

  • 如果您在 AWS 帳IAM戶中建立使用者,並將建立 Amazon Redshift 資源的許可授與該使用者,則該使用者可以建立 Amazon Redshift 資源。不過,您的 AWS 帳戶 (該使用者所屬的帳戶) 擁有 Amazon Redshift 資源。在大多數情況下,不建議您使用此方法。建議您建立IAM角色並將權限附加至角色,然後將角色指派給使用者。

管理資源存取

許可政策會描述誰可以存取什麼資源。下面這節會說明用於建立許可政策的可用選項。

注意

本節討論IAM在 Amazon Redshift 的情況下使用。它不提供有關IAM服務的詳細信息。如需完整IAM文件,請參閱什麼是IAM?《IAM使用者指南》中。如需有關IAM策略語法和說明的資訊,請參閱《IAM使用指南》中的AWS IAM政策參考資料。

附加至身分識別的策略稱為以IAM身分識別為基礎的策略 (IAM策略),而附加至資源的策略則稱為以資為基礎的策略。Amazon Redshift 僅支援以身分識別為基礎的政策 (政策) IAM。

以身分識別為基礎的原則 (原則) IAM

您可以將原則附加至角色,然後將該IAM角色指派給使用者或群組,以指派權限。以下是範例政策,其中包含為您的 AWS 帳戶建立、刪除、修改和重新啟動 Amazon Redshift 叢集的許可。

{ "Version": "2012-10-17", "Statement": [ { "Sid":"AllowManageClusters", "Effect":"Allow", "Action": [ "redshift:CreateCluster", "redshift:DeleteCluster", "redshift:ModifyCluster", "redshift:RebootCluster" ], "Resource":"*" } ] }

如需將以身分為基礎的政策與 Amazon Redshift 搭配使用的相關資訊,請參閱對 Amazon Redshift 使用基於身份的IAM政策 (政策)。如需有關使用者、群組、角色和權限的詳細資訊,請參閱使指南中的身分識別 (使用IAM者、群組和角色)

資源型政策

其他服務 (例如 Amazon S3) 也支援以資源為基礎的許可政策。例如,您可以將政策連接至 S3 儲存貯體,以管理該儲存貯體的存取許可。Amazon Redshift 不支援資源型政策。 

指定政策元素:動作、效果、資源和主體

對於每個 Amazon Redshift 資源 (請參閱Amazon Redshift 資源和操作),服務會定義一組作API業 (請參閱動作)。為了授予這些API操作的許可,Amazon Redshift 會定義一組您可以在政策中指定的動作。執行作API業可能需要多個動作的權限。

以下是基本的政策元素:

  • 資源 — 在政策中,您可以使用 Amazon 資源名稱 (ARN) 來識別適用政策的資源。如需詳細資訊,請參閱Amazon Redshift 資源和操作

  • 動作:使用動作關鍵字識別您要允許或拒絕的資源操作。例如,redshift:DescribeClusters 許可會讓使用者獲得執行 Amazon Redshift DescribeClusters 操作的許可。

  • 效果 - 您可以指定使用者要求特定動作時會有什麼效果;可為允許或拒絕。如果您未明確授予存取 (允許) 資源,則隱含地拒絕存取。您也可以明確拒絕資源存取,這樣做可確保使用者無法存取資源,即使不同政策授予存取也是一樣。

  • 主體 — 在以識別為基礎的原IAM則 (原則) 中,原則所附加的使用者是隱含的主體。對於資源型政策,您可以指定想要收到許可的使用者、帳戶、服務或其他實體 (僅適用於資源型政策)。Amazon Redshift 不支援資源型政策。

若要進一步了解IAM原則語法和說明,請參閱IAM使用者指南中的AWS IAM政策參考資料。

如需顯示所有 Amazon Redshift API 動作及其所適用資源的表格,請參閱Amazon Redshift,Amazon Redshift 無服務器,Amazon Redshift 數據API和 Amazon Redshift 查詢編輯器 v2 訪問許可

在政策中指定條件

當您授予許可時,可以使用存取政策語言來指定政策應該何時生效的條件。例如,建議只在特定日期之後套用政策。如需有關以存取原則語言指定條件的詳細資訊,請參閱《IAM使用指南》中的IAMJSON原則元素:條件

若要識別適用權限原則的條件,請在您的IAM權限原則中加入Condition元素。例如,您可以建立允許使用者使用 redshift:CreateCluster 動作來建立叢集的政策,並且可以新增 Condition 元素,將該使用者限制在僅限於特定區域中建立叢集。如需詳細資訊,請參閱 使用IAM原則條件進行精細的存取控制。如需呈現所有條件索引鍵值以及 Amazon Redshift 動作和其套用之資源的清單,請參閱 Amazon Redshift,Amazon Redshift 無服務器,Amazon Redshift 數據API和 Amazon Redshift 查詢編輯器 v2 訪問許可

使用IAM原則條件進行精細的存取控制

在 Amazon Redshift 中,您可以使用兩個條件索引鍵,根據那些資源的標籤來限制對資源的存取權限。下列是常見的 Amazon Redshift 條件索引鍵。

條件金鑰 描述

aws:RequestTag

每當使用者建立資源時,都會要求使用者包括標籤索引鍵 (名稱) 和值。如需詳細資訊,請參閱IAM使用者指南RequestTag中的 aws:

aws:ResourceTag

根據特定標籤索引鍵和值,限制使用者對資源的存取。如需詳細資訊,請參閱IAM使用者指南ResourceTag中的 aws:

aws:TagKeys

使用此鍵來將請求中的標籤鍵與您在政策中所指定的鍵進行比較。如需詳細資訊,請參閱IAM使用者指南TagKeys中的 aws:

如需標籤的詳細資訊,請參閱標記概觀

如需支援redshift:RequestTagredshift:ResourceTag條件鍵的API動作清單,請參閱Amazon Redshift,Amazon Redshift 無服務器,Amazon Redshift 數據API和 Amazon Redshift 查詢編輯器 v2 訪問許可

下列條件金鑰可與 Amazon Redshift GetClusterCredentials 動作搭配使用。

條件金鑰 描述

redshift:DurationSeconds

限制可為持續時間指定的秒數。

redshift:DbName

限制可以指定的資料庫名稱。

redshift:DbUser

限制可以指定的資料庫使用者名稱。

範例 1:使用 aws: ResourceTag 條件金鑰限制存取

使用下列IAM政策,讓使用者只針對us-west-2區域中標籤值命名environment為的特定 AWS 帳戶修改 Amazon Redshift 叢集。test

{ "Version": "2012-10-17", "Statement": { "Sid": "AllowModifyTestCluster", "Effect": "Allow", "Action": "redshift:ModifyCluster", "Resource": "arn:aws:redshift:us-west-2:123456789012:cluster:*", "Condition": { "StringEquals": { "aws:ResourceTag/environment": "test" } } } }

範例 2:使用 aws: RequestTag 條件金鑰限制存取

使用下列IAM政策,只有在建立叢集的命令包含名為的標籤usage和標籤值時,才允許使用者建立 Amazon Redshift 叢集。productionaws:TagKeysForAllValues 修飾符的條件指定您在請求中只能指定金鑰 costcenterusage

{ "Version": "2012-10-17", "Statement": { "Sid": "AllowCreateProductionCluster", "Effect": "Allow", "Action": [ "redshift:CreateCluster", "redshift:CreateTags" ], "Resource": "*", "Condition": { "StringEquals": { "aws:RequestTag/usage": "production" }, "ForAllValues:StringEquals": { "aws:TagKeys": [ "costcenter", "usage" ] } } } }