Amazon EC2 Auto Scaling 身分型政策範例 - Amazon EC2 Auto Scaling

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

Amazon EC2 Auto Scaling 身分型政策範例

默認情況下,您中的全新用戶沒 AWS 帳戶 有執行任何操作的權限。IAM 管理員必須建立和指派 IAM 政策,它們可提供 IAM 身分 (例如使用者或角色) 許可,以執行 Amazon EC2 Auto Scaling API 動作。

若要了解如何使用這些範例 JSON 政策文件建立 IAM 政策,請參閱《IAM 使用者指南》中的在 JSON 標籤上建立政策

以下顯示許可政策範例。

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "autoscaling:CreateAutoScalingGroup", "autoscaling:UpdateAutoScalingGroup", "autoscaling:DeleteAutoScalingGroup" ], "Resource": "*", "Condition": { "StringEquals": { "autoscaling:ResourceTag/purpose": "testing" } } }, { "Effect": "Allow", "Action": "autoscaling:Describe*", "Resource": "*" }] }

此政策範例會授與建立、更新和刪除 Auto Scaling 群組的許可,但前提是群組使用標籤 purpose=testing。由於 Describe 動作不支援資源層級許可,因此無需任何條件,但您必須在不同的陳述式中指定它們。若要使用啟動範本啟動執行個體,使用者也必須擁有 ec2:RunInstances 許可。如需詳細資訊,請參閱 控制 Auto Scaling 群組中的 Amazon EC2 啟動範本使用情況

注意

您可以建立自己的自訂 IAM 政策,以允許或拒絕 IAM 身分 (使用者或角色) 執行 Amazon EC2 Auto Scaling 動作的許可。您可以將這些自訂政策連接至需要指定許可的 IAM 身分。以下範例示範一些常用案例的許可。

有些 Amazon EC2 Auto Scaling API 動作允許您在政策中包含可由動作建立或修改的特定 Auto Scaling 群組。您可以指定個別 Auto Scaling 群組 ARN 來限制這些動作的目標資源。不過,最佳實務是建議您使用標籤型政策,允許 (或拒絕) 對有特定標籤的 Auto Scaling 群組執行動作。

控制可以建立的 Auto Scaling 群組大小

下列政策會授與許可,以建立和更新有標籤 environment=development 的所有 Auto Scaling 群組的許可,只要請求者不指定下限小於 1 或上限大於 10 的大小即可。盡可能使用標籤來協助控制帳戶中 Auto Scaling 群組的存取權。

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "autoscaling:CreateAutoScalingGroup", "autoscaling:UpdateAutoScalingGroup" ], "Resource": "*", "Condition": { "StringEquals": { "autoscaling:ResourceTag/environment": "development" }, "NumericGreaterThanEqualsIfExists": { "autoscaling:MinSize": 1 }, "NumericLessThanEqualsIfExists": { "autoscaling:MaxSize": 10 } } }] }

或者,如果您不是使用標籤來控制 Auto Scaling 群組的存取權,您可以使用 ARN 來識別 IAM 政策適用的 Auto Scaling 群組。

Auto Scaling 群組具有以下 ARN。

"Resource": "arn:aws:autoscaling:region:account-id:autoScalingGroup:*:autoScalingGroupName/my-asg"

您也可以將多個 ARN 包含在清單中來加以指定。如需有關在 Resource 元素中指定 Amazon EC2 Auto Scaling 資源的 ARN 的詳細資訊,請參閱 Amazon EC2 Auto Scaling 的政策資源

控制可以使用哪些標籤鍵和標籤值

您也可以在 IAM 政策中使用條件來控制可套用至 Auto Scaling 群組的標籤鍵和標籤值。若要授與建立或標記 Auto Scaling 群組的許可,只要請求者指定特定的標籤,則可使用 aws:RequestTag 條件金鑰。若要僅允許特定的標籤鍵,請使用 aws:TagKeys 條件索引鍵和 ForAllValues 修飾詞。

下列政策需要請求者在請求中使用 environment 金鑰來指定標籤。"?*" 值會針對標籤鍵強制執行一些值。若要使用萬用字元時,您必須使用 StringLike 條件運算子。

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "autoscaling:CreateAutoScalingGroup", "autoscaling:CreateOrUpdateTags" ], "Resource": "*", "Condition": { "StringLike": { "aws:RequestTag/environment": "?*" } } }] }

下列政策指定請求者只能使用標籤 purpose=webserver 和標籤 cost-center=cc123 來標記 Auto Scaling 群組,並且只允許 purposecost-center 標籤 (無法指定其他標籤)。

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "autoscaling:CreateAutoScalingGroup", "autoscaling:CreateOrUpdateTags" ], "Resource": "*", "Condition": { "StringEquals": { "aws:RequestTag/purpose": "webserver", "aws:RequestTag/cost-center": "cc123" }, "ForAllValues:StringEquals": { "aws:TagKeys": ["purpose", "cost-center"] } } }] }

下列政策需要請求者在請求中指定至少一個標籤,並僅允許 cost-centerowner 金鑰。

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "autoscaling:CreateAutoScalingGroup", "autoscaling:CreateOrUpdateTags" ], "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "aws:TagKeys": ["cost-center", "owner"] } } }] }
注意

以條件而言,條件索引鍵不區分大小寫,而條件值會區分大小寫。因此,欲強制標籤鍵區分大小寫,請使用 aws:TagKeys 條件索引鍵,其中標籤鍵指定為條件值。

控制哪些為可刪除的 Auto Scaling 群組

只有在群組有標籤 environment=development 時,下列政策才允許刪除 Auto Scaling 群組。

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "autoscaling:DeleteAutoScalingGroup", "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceTag/environment": "development" } } }] }

或者,如果您不使用條件金鑰來控制 Auto Scaling 群組的存取權,則可以指定 Resource 元素中資源的 ARN 來控制存取權。

下列政策授予使用者使用 DeleteAutoScalingGroup API 動作的權限,但僅適用於名稱開頭為 devteam- 的 Auto Scaling 群組。

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "autoscaling:DeleteAutoScalingGroup", "Resource": "arn:aws:autoscaling:region:account-id:autoScalingGroup:*:autoScalingGroupName/devteam-*" }] }

您也可以將多個 ARN 包含在清單中來加以指定。包含 UUID 以確保將存取權授予特定 Auto Scaling 群組。新群組的 UUID 與同名但已刪除群組的 UUID 不同。

"Resource": [ "arn:aws:autoscaling:region:account-id:autoScalingGroup:uuid:autoScalingGroupName/devteam-1", "arn:aws:autoscaling:region:account-id:autoScalingGroup:uuid:autoScalingGroupName/devteam-2", "arn:aws:autoscaling:region:account-id:autoScalingGroup:uuid:autoScalingGroupName/devteam-3" ]

控制哪些為可刪除的擴展政策

下列政策會授與許可,以使用 DeletePolicy 動作刪除擴展政策。但是,如果被採取行動的 Auto Scaling 群組具有標籤 environment=production,其也會拒絕該動作。盡可能使用標籤來協助控制帳戶中 Auto Scaling 群組的存取權。

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "autoscaling:DeletePolicy", "Resource": "*" }, { "Effect": "Deny", "Action": "autoscaling:DeletePolicy", "Resource": "*", "Condition": { "StringEquals": { "autoscaling:ResourceTag/environment": "production" } } }] }

控制執行個體重新整理動作的存取權

下列政策僅在執行的 Auto Scaling 群組具有標籤 environment=testing 時,才會授與啟動、復原和取消執行個體重新整理的權限。由於 Describe 動作不支援資源層級許可,因此無需任何條件,但您必須在不同的陳述式中指定它們。

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "autoscaling:StartInstanceRefresh", "autoscaling:CancelInstanceRefresh", "autoscaling:RollbackInstanceRefresh" ], "Resource": "*", "Condition": { "StringEquals": { "autoscaling:ResourceTag/environment": "testing" } } }, { "Effect": "Allow", "Action": "autoscaling:DescribeInstanceRefreshes", "Resource": "*" }] }

若要在 StartInstanceRefresh 呼叫中指定所需的組態,使用者可能需要相關許可,例如:

建立服務連結角色

當您第一次 AWS 帳戶 呼叫 Amazon EC2 Auto Scaling API 動作中的任何使用者時,Amazon EC2 自動擴展需要許可才能建立服務連結角色。如果服務連結角色不存在,Amazon EC2 Auto Scaling 會在您的帳戶中建立該角色。服務連結角色授予 Amazon EC2 Auto Scaling 的許可,以便它可以代表您呼叫其他 AWS 服務 人。

為能成功自動建立該角色,使用者必須已獲許可執行 iam:CreateServiceLinkedRole 動作。

"Action": "iam:CreateServiceLinkedRole"

以下顯示的是許可政策範例,即允許使用者為 Amazon EC2 Auto Scaling 建立 Amazon EC2 Auto Scaling 服務連結角色。

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "iam:CreateServiceLinkedRole", "Resource": "arn:aws:iam::*:role/aws-service-role/autoscaling.amazonaws.com/AWSServiceRoleForAutoScaling", "Condition": { "StringLike": { "iam:AWSServiceName":"autoscaling.amazonaws.com" } } }] }

控制可傳遞哪些服務連結角色 (使用 PassRole)

如果使用者建立或更新 Auto Scaling 群組,並在請求中指定自訂字尾服務連結角色,則需要 iam:PassRole 許可。

如果您iam:PassRole授予不同服務連結角色存取不同金鑰的權限,則可以使用該權限來保護 AWS KMS 客戶管理金鑰的安全性。根據您的組織需求,您可能有一個金鑰適用於開發團隊、另一個適用於 QA 團隊,還有一個則適用於財務團隊。首先,建立可存取所需金鑰的服務連結角色,例如名為的服務連結角色。AWSServiceRoleForAutoScaling_devteamkeyaccess然後,將該政策連接至 IAM 身分,例如使用者或角色。

下列政策會授與許可,以將 AWSServiceRoleForAutoScaling_devteamkeyaccess 角色傳遞至名稱開頭為 devteam- 的任何 Auto Scaling 群組。如果建立 Auto Scaling 群組的 IAM 身分嘗試指定不同的服務連結角色,則會收到錯誤。如果他們選擇不指定服務連結角色,則會改用預設AWSServiceRoleForAutoScaling角色。

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::account-id:role/aws-service-role/autoscaling.amazonaws.com/AWSServiceRoleForAutoScaling_devteamkeyaccess", "Condition": { "StringEquals": { "iam:PassedToService": [ "autoscaling.amazonaws.com" ] }, "StringLike": { "iam:AssociatedResourceARN": [ "arn:aws:autoscaling:region:account-id:autoScalingGroup:*:autoScalingGroupName/devteam-*" ] } } }] }

如需自訂字尾服務連結角色的詳細資訊,請參閱 Amazon EC2 Auto Scaling 的服務連結角色