本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
AWSSupport-ContainEC2Instance
Description
AWSSupport-ContainEC2Instance
Runbook 為文章中概述的程序提供自動化解決方案。遇到可能遭到入侵或可疑的情況時,如何隔離 Amazon EC2 執行個體?
如何運作?
此 Automation Runbook 透過一系列協調步驟AWSSupport-ContainEC2Instance
執行 Amazon EC2 執行個體的網路遏制。在Contain
模式下執行時,它會先驗證輸入參數,並檢查執行個體是否未終止。然後,它會將目前的安全群組組態備份到 Amazon S3 儲存貯體,以供稍後還原。Runbook 會建立兩個安全群組:臨時「所有存取」安全群組和最終「容器」安全群組。它會逐漸將執行個體的網路界面從其原始安全群組轉移到全存取安全群組,最後轉移到遏制安全群組。如果指定,它會建立執行個體的未加密和加密AMI備份。對於 Auto Scaling 群組中的執行個體,它會處理必要的 Auto Scaling 群組修改,並使執行個體進入待命狀態。在Release
模式下執行時,它會使用 Amazon S3 的備份設定,將執行個體還原至其原始網路組態。Runbook 支援 DryRun
參數,可在不進行實際變更的情況下預覽動作,並在整個遏制和發佈工作流程中包含全面的錯誤處理和報告機制。
重要
-
此 Runbook 會執行需要提升權限的各種操作,例如修改安全群組、建立 AMI,以及與 Auto Scaling 群組互動。這些動作可能會導致權限提升或影響您帳戶中的其他工作負載。您應該檢閱授予
AutomationAssumeRole
參數所指定角色的許可,並確保這些許可適用於預期的使用案例。如需 IAM 許可的詳細資訊,請參閱下列 AWS 文件:AWS Identity and Access Management (IAM) Permissions
AWS Systems Manager Automation Permissions
。 -
此 Runbook 會執行可能導致工作負載無法使用或中斷的變動動作。具體而言,它會修改與目標 Amazon EC2 執行個體相關聯的安全群組,這可能會影響網路連線。此外,如果執行個體是 Auto Scaling 群組的一部分, Runbook 可能會修改群組的組態,這可能會影響其擴展行為。
-
在遏制過程中,此 Runbook 會建立其他資源,例如安全群組和 AMI。雖然這些資源已加上標籤以供識別,但您應該知道它們的建立,並確保在遏制程序完成後進行適當的清除或管理。
-
如果
Action
參數設定為Release
,此 Runbook 會嘗試將 Amazon EC2 執行個體的組態還原為其原始狀態。不過,還原程序可能會失敗,使執行個體處於不一致的狀態。Runbook 提供在發生此類失敗時手動還原的說明,但您應該準備好在還原過程中處理潛在問題。
建議您徹底檢閱 Runbook、了解其潛在影響,並在非生產環境中進行測試,然後再在您的生產環境中執行。
文件類型
自動化
擁有者
Amazon
平台
/
必要的 IAM 許可
AutomationAssumeRole
參數需要下列動作才能成功使用 Runbook。
autoscaling:CreateOrUpdateTags
autoscaling:DeleteTags
autoscaling:DescribeAutoScalingGroups
autoscaling:DescribeAutoScalingInstances
autoscaling:DescribeTags
autoscaling:EnterStandby
autoscaling:ExitStandby
autoscaling:UpdateAutoScalingGroup
ec2:AuthorizeSecurityGroupEgress
ec2:AuthorizeSecurityGroupIngress
ec2:CopyImage
ec2:CreateImage
ec2:CreateSecurityGroup
ec2:CreateSnapshot
ec2:CreateTags
ec2:DeleteSecurityGroup
ec2:DeleteTags
ec2:DescribeImages
ec2:DescribeInstances
ec2:DescribeSecurityGroups
ec2:DescribeSnapshots
ec2:DescribeTags
ec2:ModifyNetworkInterfaceAttribute
ec2:RevokeSecurityGroupEgress
kms:創建權限
kms:描述金鑰
kms:GenerateDataKeyWithoutPlaintext
kms:ReEncryptFrom
kms:ReEncryptTo
s3:CreateBucket
s3:DeleteObjectTagging
s3:GetAccountPublicAccessBlock
s3:GetBucketAcl
s3:GetBucketLocation
s3:GetBucketOwnershipControls
s3:GetBucketPolicy
s3:GetBucketPolicyStatus
s3:GetBucketPublicAccessBlock
s3:GetObject
s3:ListBucket
s3:PutAccountPublicAccessBlock
s3:PutBucketPolicy
s3:PutBucketVersioning
s3:PutObject
s3:PutObjectTagging
範例政策:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "ReadOperations", "Effect": "Allow", "Action": [ "autoscaling:DescribeAutoScalingGroups", "autoscaling:DescribeAutoScalingInstances", "autoscaling:DescribeTags", "ec2:DescribeImages", "ec2:DescribeInstances", "ec2:DescribeSecurityGroups", "ec2:DescribeSnapshots", "ec2:DescribeTags", "kms:DescribeKey", "s3:GetAccountPublicAccessBlock", "s3:GetBucketAcl", "s3:GetBucketLocation", "s3:GetBucketOwnershipControls", "s3:GetBucketPolicy", "s3:GetBucketPolicyStatus", "s3:GetBucketPublicAccessBlock", "s3:GetObject", "s3:ListBucket" ], "Resource": "*" }, { "Sid": "WriteOperations", "Effect": "Allow", "Action": [ "autoscaling:CreateOrUpdateTags", "autoscaling:DeleteTags", "autoscaling:EnterStandby", "autoscaling:ExitStandby", "autoscaling:UpdateAutoScalingGroup", "ec2:AuthorizeSecurityGroupEgress", "ec2:AuthorizeSecurityGroupIngress", "ec2:CopyImage", "ec2:CreateImage", "ec2:CreateSecurityGroup", "ec2:CreateSnapshot", "ec2:CreateTags", "ec2:DeleteSecurityGroup", "ec2:DeleteTags", "ec2:ModifyNetworkInterfaceAttribute", "ec2:RevokeSecurityGroupEgress", "kms:CreateGrant", "kms:GenerateDataKeyWithoutPlaintext", "kms:ReEncryptFrom", "kms:ReEncryptTo", "s3:CreateBucket", "s3:DeleteObjectTagging", "s3:PutAccountPublicAccessBlock", "s3:PutBucketPolicy", "s3:PutBucketVersioning", "s3:PutObject", "s3:PutObjectTagging" ], "Resource": "*" } ] }
指示
請依照下列步驟設定自動化:
-
在文件下的 Systems Manager
AWSSupport-ContainEC2Instance
中導覽至 。 -
選擇 Execute automation (執行自動化)。
-
針對輸入參數,輸入下列內容:
-
AutomationAssumeRole (選用):
描述:(選用) 允許 Systems Manager Automation 代表您執行動作的 AWS AWS Identity and Access Management (IAM) 角色的 Amazon Resource Name (ARN)。如果未指定角色,Systems Manager Automation 會使用啟動此 Runbook 之使用者的許可。
類型:
AWS::IAM::Role::Arn
-
動作 (必要):
描述:(必要) 選取
Contain
以隔離 Amazon EC2 執行個體Restore
,或嘗試從先前的備份還原 Amazon EC2 執行個體組態原始組態。類型:字串
允許模式:
Contain|Restore
-
DryRun (選用):
描述:(選用) 設為 時
true
,自動化不會執行任何命令,而是會報告嘗試執行的動作,詳細說明每個步驟。預設值:true
。類型:布林值
允許的值:
true|false
-
CreateAMIBackup (選用):
描述:(選用) 設定為 時
true
,Amazon EC2 執行個體AMI的 會在執行遏制動作之前建立。類型:布林值
允許的值:
true|false
-
KmsKey (選用):
描述:(選用) 將用於建立目標 Amazon EC2 執行個體加密AMI的 AWS KMS 金鑰 ID。預設值設為
alias/aws/ebs
。類型:字串
允許模式:
^(((arn:(aws|aws-cn|aws-us-gov):kms:([a-z]{2}|[a-z]{2}-gov)-[a-z]+-[0-9]{1}:[0-9]{12}:key/)?([a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}|mrk-[a-f0-9]{32}))|(arn:(aws|aws-cn|aws-us-gov):kms:([a-z]{2}|[a-z]{2}-gov)-[a-z]+-[0-9]{1}:[0-9]{12}:)?alias/.{1,})$
-
BackupS3BucketName (條件式):
描述:(條件式) Amazon Amazon S3 儲存貯體,以在
Action
為 時上傳組態,Contain
或在Action
為 時還原組態Release
。注意:如果帳戶中不存在提供的儲存貯體,自動化將代表您建立 Amazon S3 儲存貯體。類型:
AWS::S3::Bucket::Name
-
TagIdentifier (選用):
描述:(選用) 格式的標籤,
Key=BatchId,Value=78925
將在遏制工作流程期間新增至此 Runbook 建立或修改 AWS 的資源。此標籤可用於識別和管理在遏制過程中相關聯的資源。在還原工作流程期間,此參數指定的標籤將從 資源中移除。注意:標籤鍵和值區分大小寫。類型:字串
允許模式:
^$|^[Kk][Ee][Yy]=[\\+\\-\\=\\.\\_\\:\\/@a-zA-Z0-9]{1,128},[Vv][Aa][Ll][Uu][Ee]=[\\+\\-\\=\\.\\_\\:\\/@a-zA-Z0-9]{0,128}$
-
BackupS3BucketAccess (條件式):
描述:(條件式) 在執行遏制動作後,允許存取備份 Amazon S3 儲存貯體的 IAM 使用者或角色 ARN。當
Action
為 時,此參數為必要Contain
。在AutomationAssumeRole
或 不存在的情況下,正在執行自動化的使用者會自動新增至清單中。類型:字串
允許模式:
^$|^arn:(aws|aws-cn|aws-us-gov|aws-iso(-[a-z])?):iam::[0-9]{12}:(role|user)\\/[\\w+\\/=,.@-]+$
-
IngressTrafficRules (選用):
描述:(選用) 以逗號分隔的安全群組輸入規則對應,其中包含
[{"Cidr": "1.2.3.4/32", "IpProtocol": "tcp", "FromPort":"22", "ToPort":"22"}]
要套用至 Amazon EC2 執行個體的 Cidr、IpProtocol、 FromPort 和 ToPort 格式。如果未提供任何規則,則沒有任何輸入規則的安全群組將連接到 Amazon EC2 執行個體,有效地隔離它與任何傳入流量。類型:MapList
允許模式:
^\\{\\}$|^\\{\"Cidr\":\"[\\x00-\\x7F+]{1,128}\",\"IpProtocol\":\"[\\x00-\\x7F+]{1,128}\",\"FromPort\":\"[\\x00-\\x7F+]{1,128}\",\"ToPort\":\"[\\x00-\\x7F+]{0,255}\"\\}
-
EgressTrafficRules (選用):
描述:(選用) 以逗號分隔的安全群組輸出規則對應,其中包含
[{"Cidr": "1.2.3.4/32", "IpProtocol": "tcp", "FromPort":"22", "ToPort":"22"}]
要套用至 Amazon EC2 執行個體的 Cidr、IpProtocol、FromPort 和 ToPort 格式。如果未提供任何規則,則沒有任何輸出規則的安全群組將連接到 Amazon EC2 執行個體,有效地防止所有傳出流量。類型:MapList
允許模式:
^\\{\\}$|^\\{\"Cidr\":\"[\\x00-\\x7F+]{1,128}\",\"IpProtocol\":\"[\\x00-\\x7F+]{1,128}\",\"FromPort\":\"[\\x00-\\x7F+]{1,128}\",\"ToPort\":\"[\\x00-\\x7F+]{0,255}\"\\}
-
BackupS3KeyName (選用):
描述:(選用) 如果
Action
設定為Restore
,這會指定自動化用來嘗試還原目標 Amazon EC2 執行個體組態的 Amazon S3 金鑰。 Amazon EC2 Amazon S3 金鑰通常遵循此格式:{year}/{month}/{day}/{hour}/{minute}/{automation_execution_id}.json
。金鑰可從先前的遏制自動化執行的輸出取得。類型:字串
允許模式:
^[a-zA-Z0-9\\.\\-_\\\\!*'()/]{0,1024}$
-
-
選取執行。
-
自動化會啟動。
-
文件會執行下列步驟:
-
ValidateRequiredInputs
驗證是否已提供所有必要的輸入。
-
AssertInstanceIsNotTerminated
檢查目標 Amazon EC2 執行個體是否未終止 (已刪除)。
-
GetAutoScalingInstanceInfo
如果目標 Amazon EC2 執行個體是 Auto Scaling 群組的一部分,則取得 Amazon EC2 執行個體生命週期和群組名稱。
-
CheckBackupS3BucketName
檢查目標 Amazon S3 儲存貯體是否可能授予
read
或write
公開存取其物件。如果儲存貯體不存在,則會建立新的 Amazon S3 儲存BackupS3BucketName
貯體。 -
BranchOnActionAndMode
根據輸入參數
Action
和 分支自動化DryRun
。 -
BranchOnAutoScalingGroupMembership
根據目標 Amazon EC2 執行個體是否屬於 Auto Scaling 群組及其生命週期狀態,來配置自動化。
-
DescribeAutoScalingGroups
取得和存放相關聯的 Amazon EC2 Auto Scaling 群組組態。
-
ModifyAutoScalingGroup
修改遏制動作的相關 Amazon EC2 Auto Scaling 群組組態,將 Amazon EC2 執行個體設定為
Standby
狀態並調整 Auto Scaling 群組MinSize
容量。 -
BackupInstanceSecurityGroups
取得和存放目標 Amazon EC2 執行個體安全群組的組態。
-
CreateAllAccessSecurityGroup
建立臨時安全群組,允許取代目標 Amazon EC2 執行個體安全群組的所有輸入流量。
-
CreateContainmentSecurityGroup
使用指定的輸入和輸出規則建立限制性遏制安全群組,並將暫時全存取群組取代為該群組。
-
BranchOnCreateAMIBackup
根據
CreateAMIBackup
輸入參數配置自動化。 -
AssertSourceInstanceRootVolumeIsEbs
檢查目標 Amazon EC2 執行個體根磁碟區是否為 Amazon EBS。
-
CreateImage
建立目標 Amazon EC2 執行個體AMI的 。
-
RestoreInstanceConfiguration
從備份還原目標 Amazon EC2 執行個體組態。
-
ReportContain
輸出遏制動作的試轉詳細資訊。
-
ReportRestore
輸出還原動作的試轉詳細資訊。
-
ReportRestoreFailure
提供在還原工作流程失敗案例期間還原目標 Amazon EC2 執行個體原始組態的指示。
-
ReportContainmentFailure
提供在遏制工作流程失敗情況下還原目標 Amazon EC2 執行個體原始組態的指示。
-
FinalOutput
輸出遏制動作的詳細資訊。
-
-
執行完成後,請檢閱輸出區段以取得執行的詳細結果:
-
FinalOutput.Output
當
DryRun
設定為 False 時,輸出此 Runbook 所執行之遏制動作的詳細資訊。 -
RestoreInstanceConfiguration.Output
當
DryRun
設定為 False 時,輸出此 Runbook 執行的還原動作。 -
ReportContain.Output
當
DryRun
設定為 True 時,輸出此 Runbook 所執行之遏制動作的詳細資訊。 -
ReportRestore.Output
將
DryRun
設定為 True 時,輸出此 Runbook 所執行還原動作的詳細資訊。 -
ReportContainmentFailure.Output
提供在遏制工作流程失敗情況下還原目標 Amazon EC2 執行個體原始組態的指示。
-
ReportRestoreFailure.Output
提供在還原工作流程失敗案例期間還原目標 Amazon EC2 執行個體原始組態的指示。
-
參考
Systems Manager Automation