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

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

Amazon EC2 Auto Scaling 身分型政策範例

根據預設,您 中的新使用者 AWS 帳戶 沒有執行任何動作的許可。IAM 管理員必須建立和指派 IAM 政策,以授予 IAM 身分 (例如使用者或角色) 執行 Amazon EC2 Auto Scaling API 動作的許可。

若要了解如何使用這些範例 IAM 政策文件建立 JSON 政策,請參閱 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 群組 ARNs 來限制這些動作的目標資源。不過,最佳實務是建議您使用標籤型政策,允許 (或拒絕) 對有特定標籤的 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 群組的存取,您可以使用 ARNs 來識別 IAM 政策適用的 Auto Scaling 群組。

Auto Scaling 群組具有下列 ARN。

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

您也可以將多個 ARNs 括在清單中,以指定多個 Word。如需在 Resource元素中指定 ARNsAmazon EC2 Auto Scaling 資源的詳細資訊,請參閱 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 元素中指定資源的 ARNs 來改為控制存取。

下列政策提供使用者使用 DeleteAutoScalingGroup API 動作的許可,但僅適用於名稱開頭為 的 Auto Scaling 群組devteam-

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

您也可以將多個 ARNs 括在清單中,以指定多個 Word。包含 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 呼叫中指定所需的組態,使用者可能需要相關許可,例如:

建立服務連結角色

Amazon EC2 Auto Scaling 需要許可,以便在您第一次 AWS 帳戶 呼叫 Amazon EC2 Auto Scaling API 動作中的任何使用者時建立服務連結角色。如果服務連結角色尚未存在,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 的服務連結角色