使用標籤來控制對 Elastic Beanstalk 資源的存取 - AWS Elastic Beanstalk

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

使用標籤來控制對 Elastic Beanstalk 資源的存取

AWS Identity and Access Management (IAM) 使用者政策陳述式中的條件,屬於您用來指定 Elastic Beanstalk 動作完成所需的資源存取許可的語法。如需指定政策陳述式條件的詳細資訊,請參閱Elastic Beanstalk 動作的資源與條件。在條件中使用標記是控制資源和請求的存取權限的方式之一。如需標記 Elastic Beanstalk 資源的相關資訊,請參閱標記 Elastic Beanstalk 應用程式資源。本主題討論的是標記型的存取控制。

設計 IAM 政策時,您可能會透過授予對特定資源的存取來設定精細許可。隨著您管理的資源數量增加,此任務變得越來越困難。標記資源並在政策陳述式條件中使用標籤,可讓此任務更輕鬆。您可以對具有特定標籤的任何資源大量授予存取。然後,您會在建立期間或之後,對相關資源重複套用此標籤。

可以將標記連接到資源或在請求中將標記傳遞至支援標記的服務。在 Elastic Beanstalk 中,資源可以擁有標籤,也有一些動作會包含標籤。在建立 IAM 政策時,可使用標記條件鍵來控制以下項目:

  • 可在環境上執行動作的使用者 (以環境擁有的標記為準)。

  • 可在動作請求中傳遞的標記。

  • 請求中是否可使用特定的標籤鍵。

關於標籤條件索引鍵的完整語法和語義,請參閱 IAM 使用者指南中的使用標籤控制存取

以下範例示範如何指定 Elastic Beanstalk 使用者政策中的標籤條件。

範例 1:根據請求中的標籤限制動作

Elastic Beanstalk AdministratorAccess-AWSElasticBeanstalk 受管使用者政策可提供使用者不受限制的許可,以在任何 Elastic Beanstalk 受管資源上執行任何 Elastic Beanstalk 動作。

以下政策會限制此能力,並拒絕未授權的使用者許可,禁止其建立 Elastic Beanstalk 生產環境。為了達到此種效果,如果該請求指定了名為 CreateEnvironment 的標記,含有 stagegamma 的其中一值,其會拒絕 prod 動作。此外,該政策不允許標籤修改動作,因此無法加入相同的標籤值,也無法完全移除 stage 標籤,以此方式來防止未授權的使用者竄改生產環境的階段。除了受管使用者政策之外,客戶的管理員必須將此 IAM 政策連接到未授權的 IAM 使用者。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": [ "elasticbeanstalk:CreateEnvironment", "elasticbeanstalk:AddTags" ], "Resource": "*", "Condition": { "StringEquals": { "aws:RequestTag/stage": ["gamma", "prod"] } } }, { "Effect": "Deny", "Action": [ "elasticbeanstalk:RemoveTags" ], "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "aws:TagKeys": ["stage"] } } } ] }
範例 2:根據資源標籤限制動作

Elastic Beanstalk AdministratorAccess-AWSElasticBeanstalk 受管使用者政策可提供使用者不受限制的許可,以在任何 Elastic Beanstalk 受管資源上執行任何 Elastic Beanstalk 動作。

以下政策會限制此能力,並拒絕未授權的使用者許可,禁止其在 Elastic Beanstalk 生產環境上執行動作。為了達到此種效果,如果該環境擁有名為 stage 的標記,含有 gammaprod 的其中一值,其會拒絕特定動作。除了受管使用者政策之外,客戶的管理員必須將此 IAM 政策連接到未授權的 IAM 使用者。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": [ "elasticbeanstalk:AddTags", "elasticbeanstalk:RemoveTags", "elasticbeanstalk:DescribeEnvironments", "elasticbeanstalk:TerminateEnvironment", "elasticbeanstalk:UpdateEnvironment", "elasticbeanstalk:ListTagsForResource" ], "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceTag/stage": ["gamma", "prod"] } } } ] }
範例 3:根據請求中的標籤允許動作

下列政策會授予使用者許可來建立 Elastic Beanstalk 開發應用程式。

若要這樣做,它會在請求指定名為 CreateApplication 且值為 AddTags 的標籤時允許 stagedevelopment 動作。aws:TagKeys 條件可確保使用者無法新增其他標籤鍵。尤其是,其可確保 stage 標籤鍵區分大小寫。請注意,此政策對於未連接 Elastic Beanstalk AdministratorAccess-AWSElasticBeanstalk 受管使用者政策的 IAM 使用者來說很實用。此受管政策可提供使用者不受限制的許可,以在任何 Elastic Beanstalk 受管資源上執行任何 Elastic Beanstalk 動作。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "elasticbeanstalk:CreateApplication", "elasticbeanstalk:AddTags" ], "Resource": "*", "Condition": { "StringEquals": { "aws:RequestTag/stage": "development" }, "ForAllValues:StringEquals": { "aws:TagKeys": ["stage"] } } } ] }
範例 4:根據資源標籤允許動作

下列政策會授予使用者對 Elastic Beanstalk 開發應用程式執行動作和取得相關資訊的許可。

若要這樣做,它會在應用程式有名為 stage 且值為 development 的標籤時允許特定動作。aws:TagKeys 條件可確保使用者無法新增其他標籤鍵。尤其是,其可確保 stage 標籤鍵區分大小寫。請注意,此政策對於未連接 Elastic Beanstalk AdministratorAccess-AWSElasticBeanstalk 受管使用者政策的 IAM 使用者來說很實用。此受管政策可提供使用者不受限制的許可,以在任何 Elastic Beanstalk 受管資源上執行任何 Elastic Beanstalk 動作。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "elasticbeanstalk:UpdateApplication", "elasticbeanstalk:DeleteApplication", "elasticbeanstalk:DescribeApplications" ], "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceTag/stage": "development" }, "ForAllValues:StringEquals": { "aws:TagKeys": ["stage"] } } } ] }