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

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

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

本主題說明以標籤為基礎的存取控制如何協助您建立和管理IAM原則。

我們可以使用用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 生產環境。為了達到此種效果,如果該請求指定了名為 stage 的標記,含有 gammaprod 的其中一值,其會拒絕 CreateEnvironment 動作。此外,該政策不允許標籤修改動作,因此無法加入相同的標籤值,也無法完全移除 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 開發應用程式。

若要這樣做,它會在請求指定名為 stage 且值為 development 的標籤時允許 CreateApplicationAddTags 動作。aws:TagKeys 條件可確保使用者無法新增其他標籤鍵。尤其是,其可確保 stage 標籤鍵區分大小寫。請注意,此原則對於IAM沒有附加 Elastic Beanstalk AdministratorAccess-AWSElasticBeanstalk 受管理使用者原則的使用者非常有用。此受管政策可提供使用者不受限制的許可,以在任何 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 標籤鍵區分大小寫。請注意,此原則對於IAM沒有附加 Elastic Beanstalk AdministratorAccess-AWSElasticBeanstalk 受管理使用者原則的使用者非常有用。此受管政策可提供使用者不受限制的許可,以在任何 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"] } } } ] }