本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
在 Auto Scaling 群組中控制 Amazon EC2 啟動範本用量
Amazon EC2 Auto Scaling 支援搭配 Auto Scaling 群組使用 Amazon EC2 啟動範本。我們建議您允許使用者從啟動範本建立 Auto Scaling 群組,因為這樣做可讓使用者使用 Amazon EC2 Auto Scaling 和 Amazon EC2 的最新功能。例如,使用者必須指定啟動範本,才能使用混合執行個體政策。
您可以使用 AmazonEC2FullAccess
政策,讓使用者完整存取其帳戶中的 Amazon EC2 Auto Scaling 資源、啟動範本和其他 EC2 資源。或者,您可以建立自己的自訂 IAM 政策,以授予使用者精細的許可來使用啟動範本,如本主題所述。
您可以針對自身使用量身打造的範例政策
以下內容顯示您可以針對自身使用量身打造的基本許可政策範例。此政策會授與建立、更新和刪除所有 Auto Scaling 群組的許可,但前提是群組使用標籤
。接著,授與所有 purpose=testing
Describe
動作的許可。由於 Describe
動作不支援資源層級許可,因此無需任何條件,但您必須在不同的陳述式中指定它們。
具有此政策的IAM身分 (使用者或角色) 具有使用啟動範本建立或更新 Auto Scaling 群組的許可,因為它們也獲得使用該ec2:RunInstances
動作的許可。
{ "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*", "ec2:RunInstances" ], "Resource": "*" } ] }
建立或更新 Auto Scaling 群組的使用者可能需要一些相關許可,例如:
-
ec2:CreateTags – 若要在建立時將標籤新增至執行個體和磁碟區,使用者必須在 IAM 政策中擁有
ec2:CreateTags
許可。如需詳細資訊,請參閱標記執行個體和磁碟區所需的許可。 -
iam:PassRole – 若要從包含執行個體設定檔 (EC2 IAM角色的容器) 的啟動範本啟動 Word 執行個體,使用者也必須擁有 IAM 政策中的
iam:PassRole
許可。如需詳細資訊和範例 IAM 政策,請參閱 在 Amazon IAM 執行個體上執行的應用程式的 EC2 角色。 -
ssm:GetParameters – 若要從使用 AWS Systems Manager 參數的啟動範本啟動 IAM 執行個體,使用者也必須擁有 EC2 政策中的
ssm:GetParameters
許可。如需詳細資訊,請參閱在啟動範本AMIIDs中使用 AWS Systems Manager 參數,而不是。
當使用者與 Auto Scaling 群組互動時,會檢查啟動執行個體時要完成動作的這些許可。如需詳細資訊,請參閱ec2:RunInstances 和 iam:PassRole 的許可驗證。
下列範例顯示政策陳述式,您可以使用這些陳述式來控制 IAM 使用者使用啟動範本的存取權。
主題
需要具有特定標籤的啟動範本
授予ec2:RunInstances
許可時,您可以指定使用者只能使用具有特定標籤或特定 IDs 的啟動範本,在啟動具有啟動範本的執行個體時限制許可。您也可以透過為RunInstances
呼叫指定其他資源層級許可,來控制任何人使用啟動範本時可以參考和使用的 AMI 和其他資源。
以下範例會限制使用位於指定區域且具有
標籤的啟動範本來執行 purpose=testing
ec2:RunInstances
動作的許可。它也讓使用者存取啟動範本中指定的資源:AMIs、執行個體類型、磁碟區、金鑰對、網路介面和安全群組。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": "arn:aws:ec2:
region
:account-id
:launch-template/*", "Condition": { "StringEquals": { "aws:ResourceTag/purpose
": "testing
" } } }, { "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": [ "arn:aws:ec2:region
::image/ami-*", "arn:aws:ec2:region
:account-id
:instance/*", "arn:aws:ec2:region
:account-id
:subnet/*", "arn:aws:ec2:region
:account-id
:volume/*", "arn:aws:ec2:region
:account-id
:key-pair/*", "arn:aws:ec2:region
:account-id
:network-interface/*", "arn:aws:ec2:region
:account-id
:security-group/*" ] } ] }
如需搭配啟動範本使用標籤型政策的詳細資訊,請參閱 Amazon EC2 使用者指南中的控制搭配 IAM 許可啟動範本的存取權。
需要啟動範本和版本編號
您也可以使用 IAM 許可來強制執行在建立或更新 Auto Scaling 群組時,必須指定啟動範本和啟動範本的版本編號。
以下範例允許使用者只有在指定了啟動範本和啟動範本的版本編號時,才能建立和更新 Auto Scaling 群組。如果使用此政策的使用者省略版本號碼來指定 $Latest
或 $Default
啟動範本版本,或者改為嘗試使用啟動組態,則該動作會失敗。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "autoscaling:CreateAutoScalingGroup", "autoscaling:UpdateAutoScalingGroup" ], "Resource": "*", "Condition": { "Bool": { "autoscaling:LaunchTemplateVersionSpecified": "true" } } }, { "Effect": "Deny", "Action": [ "autoscaling:CreateAutoScalingGroup", "autoscaling:UpdateAutoScalingGroup" ], "Resource": "*", "Condition": { "Null": { "autoscaling:LaunchConfigurationName": "false" } } } ] }
需要使用執行個體中繼資料服務第 2 版 (IMDSv2)
為了提高安全性,您可以將使用者的許可設定為要求使用需要 IMDSv2 的啟動範本。如需詳細資訊,請參閱 Amazon EC2 使用者指南中的設定執行個體中繼資料服務。
下列範例指定使用者無法呼叫ec2:RunInstances
動作,除非執行個體也選擇使用 IMDSv2 (由 表示"ec2:MetadataHttpTokens":"required"
)。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "RequireImdsV2", "Effect": "Deny", "Action": "ec2:RunInstances", "Resource": "arn:aws:ec2:*:*:instance/*", "Condition": { "StringNotEquals": { "ec2:MetadataHttpTokens": "required" } } } ] }
提示
若要強制取代要啟動的 Auto Scaling 執行個體,其會使用新啟動範本或新版啟動範本 (與設定的執行個體中繼資料選項搭配使用),則您可以啟動執行個體重新整理。如需詳細資訊,請參閱更新 Auto Scaling 執行個體。
限制對 Amazon EC2 資源的存取
下列範例控制使用者可以透過限制對 Amazon EC2 資源的存取來啟動的執行個體組態。若要為啟動範本中指定的資源指定資源層級許可,您必須在 RunInstances
動作陳述式中包含這些資源。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": [ "arn:aws:ec2:
region
:account-id
:launch-template/*", "arn:aws:ec2:region
::image/ami-04d5cc9b88example
", "arn:aws:ec2:region
:account-id
:subnet/subnet-1a2b3c4d
", "arn:aws:ec2:region
:account-id
:volume/*", "arn:aws:ec2:region
:account-id
:key-pair/*", "arn:aws:ec2:region
:account-id
:network-interface/*", "arn:aws:ec2:region
:account-id
:security-group/sg-903004f88example
" ] }, { "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": "arn:aws:ec2:region
:account-id
:instance/*", "Condition": { "StringEquals": { "ec2:InstanceType": ["t2.micro", "t2.small"] } } } ] }
在此例中,共有二個陳述式:
-
第一個陳述式要求使用者使用特定安全群組 (
) 和特定 AMI () 將執行個體啟動至特定子網路 (subnet-1a2b3c4d
)sg-903004f88example
。它還可讓使用者存取啟動範本中指定的資源:網路介面、金鑰對和磁碟區。ami-04d5cc9b88example
-
第二個陳述式只允許使用者使用
或t2.micro
執行個體類型啟動執行個體,您可能會為了控制成本而這樣做。t2.small
不過,請注意,目前沒有一種有效的方法可以完全防止具有啟動範本啟動執行個體許可的使用者啟動其他執行個體類型。這是因為可以覆寫啟動範本中指定的執行個體類型,以使用使用屬性型執行個體類型選擇定義的執行個體類型。
如需可用來控制使用者可啟動之執行個體組態的資源層級許可完整清單,請參閱服務授權參考中的 Amazon EC2 的動作、資源和條件金鑰。
標記執行個體和磁碟區所需的許可
以下範例允許使用者在建立時標記執行個體和磁碟區。如果已在啟動範本中指定標籤,則會需要此政策。如需詳細資訊,請參閱 Amazon EC2 使用者指南中的授予在建立期間標記資源的許可。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2:CreateTags", "Resource": "arn:aws:ec2:
region
:account-id
:*/*", "Condition": { "StringEquals": { "ec2:CreateAction": "RunInstances" } } } ] }
其他啟動範本許可
您必須授予主控台使用者 ec2:DescribeLaunchTemplates
和 ec2:DescribeLaunchTemplateVersions
動作的許可。如果沒有這些許可,啟動範本資料就無法在 Auto Scaling 群組精靈中載入,且使用者也使用無法逐步執行精靈以使用啟動範本啟動執行個體。您可以在 IAM 政策陳述式的 Action
元素中指定這些其他動作。
ec2:RunInstances
和 iam:PassRole
的許可驗證
使用者可以指定 Auto Scaling 群組使用的啟動範本版本。視其許可而定,此版本可以是特定編號的版本,或啟動範本的 $Latest
或 $Default
版本。如果是後者,請特別注意。這可能會覆寫您想要限制的 ec2:RunInstances
和 iam:PassRole
許可。
本章節將說明啟動範本的最新或預設版本與 Auto Scaling 群組搭配使用的案例。
當使用者呼叫 CreateAutoScalingGroup
、 UpdateAutoScalingGroup
或 StartInstanceRefresh
APIs 時,Amazon EC2 Auto Scaling 會針對當時最新或預設版本的啟動範本,檢查其許可,然後再繼續進行請求。這會驗證啟動執行個體時要完成之諸如 ec2:RunInstances
和 iam:PassRole
等動作的許可。為了達成此目的,我們發出 Amazon EC2 RunInstances 乾式執行呼叫,以驗證使用者是否具有動作所需的許可,而不需要實際提出請求。傳回回應時,Amazon EC2 Auto Scaling 會讀取回應。如果使用者的許可不允許指定動作,Amazon EC2 Auto Scaling 會失敗請求,並將包含遺失許可相關資訊的錯誤傳回給使用者。
初始驗證和請求完成後,每當執行個體啟動時,Amazon EC2 Auto Scaling 會使用其服務連結角色的許可,以最新或預設版本啟動它們,即使它已變更。這表示使用啟動範本的使用者可能會更新它,以將 IAM 角色傳遞給執行個體,即使他們沒有 iam:PassRole
許可。
如果您要限制將群組設定為使用 $Latest
或 $Default
版本的使用者的存取權限,請使用 autoscaling:LaunchTemplateVersionSpecified
條件金鑰。這可確保 Auto Scaling 群組只在使用者呼叫 CreateAutoScalingGroup
和 APIs UpdateAutoScalingGroup
時接受特定編號的版本。如需顯示如何將此條件索引鍵新增至 IAM 政策的範例,請參閱 需要啟動範本和版本編號。
對於設定為使用 $Latest
或 $Default
啟動範本版本的 Auto Scaling 群組,請考慮限制可建立和管理啟動範本版本的使用者,包括允許使用者指定預設啟動範本版本的 ec2:ModifyLaunchTemplate
動作。如需詳細資訊,請參閱 Amazon EC2 使用者指南中的控制版本控制許可。
相關資源
若要進一步了解檢視、建立和刪除啟動範本和啟動範本版本的許可,請參閱 Amazon EC2 使用者指南中的使用 IAM 許可控制啟動範本的存取。
如需可用來控制RunInstances
呼叫存取的資源層級許可的詳細資訊,請參閱服務授權參考中的 Amazon EC2 的動作、資源和條件金鑰。