本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
AWSSupport-ContainEC2Instance
描述
该AWSSupport-ContainEC2Instance
运行手册为文章中概述的程序提供了自动解决方案,当面临潜在的入侵或可疑情况时,如何隔离 Amazon EC2 实例
如何工作?
本自动化运行手册通过一系列协调步骤对 Amazon EC2 实例AWSSupport-ContainEC2Instance
进行网络控制。在Contain
模式下执行时,它首先验证输入参数并检查实例是否未终止。然后,它将当前的安全组配置备份到 Amazon S3 存储桶,以便日后恢复。运行手册创建了两个安全组:临时的 “所有访问权限” 安全组和最后一个 “遏制” 安全组。它会逐渐将实例的网络接口从其原始安全组过渡到所有访问安全组,最后过渡到包含安全组。如果指定,它将同时创建未加密和加密的 AMI 实例的备份。对于 Auto Scaling 组中的实例,它会处理必要的 Auto Scaling 组修改并将实例置于待机状态。在Release
模式下执行时,它会使用 Amazon S3 中的备份设置将实例恢复到其原始网络配置。运行手册支持无需进行实际更改即可预览操作的DryRun
参数,并在整个容器和发布工作流程中包括全面的错误处理和报告机制。
重要
-
此 runbook 执行各种需要提升权限的操作,例如修改安全组、创建 AMIs,并与 Auto Scaling 群组互动。这些操作可能会导致权限提升或影响您账户中的其他工作负载。您应查看向
AutomationAssumeRole
参数指定的角色授予的权限,并确保这些权限适用于预期用例。您可以参考以下 AWS 文档,了解有关 IAM 权限的更多信息:AWS Identity and Access Management (IAM) Permissions
AWS Systems Manager Automation Permissions
。 -
此运行手册执行的变异操作可能会导致您的工作负载不可用或中断。具体而言,它会修改与目标 Amazon EC2 实例关联的安全组,这可能会影响网络连接。此外,如果该实例是 Auto Scaling 组的一部分,则运行手册可能会修改该组的配置,从而可能影响其扩展行为。
-
在控制过程中,此运行手册会创建其他资源,例如安全组和 AMI。虽然这些资源被标记为用于识别,但您应该知道它们的创建,并确保在控制过程完成后进行适当的清理或管理。
-
如果将
Action
参数设置为Release
,则此运行手册会尝试将 Amazon EC2 实例的配置恢复到其原始状态。但是,还原过程有可能失败,从而使实例处于不一致的状态。运行手册提供了在出现此类故障时手动恢复的说明,但您应该做好在恢复过程中处理潜在问题的准备。
建议在生产环境中执行运行手册之前,请仔细阅读运行手册,了解其潜在影响,并在非生产环境中对其进行测试。
文档类型
自动化
所有者
Amazon
平台
/
所需的 IAM 权限
AutomationAssumeRole
参数需要执行以下操作才能成功使用运行手册。
自动缩放:CreateOrUpdateTags
自动缩放:DeleteTags
自动缩放:DescribeAutoScalingGroups
自动缩放:DescribeAutoScalingInstances
自动缩放:DescribeTags
自动缩放:EnterStandby
自动缩放:ExitStandby
自动缩放: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: CreateGrant
kms: DescribeKey
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": "*" } ] }
说明
按照这些步骤对自动化进行配置:
-
AWSSupport-ContainEC2Instance
在 Systems Manager 的 “文档” 下导航至。 -
选择 Execute automation(执行自动化)。
-
对于输入参数,请输入以下内容:
-
AutomationAssumeRole (可选):
描述:(可选)允许 Systems Manager Automation 代表您执行操作的 AWS AWS Identity and Access Management (IAM) 角色的亚马逊资源名称 (ARN)。如果未指定角色,Systems Manager Automation 将使用启动此运行手册的用户的权限。
类型:
AWS::IAM::Role::Arn
-
操作(必填):
描述:(必填)选择
Contain
隔离亚马逊 EC2 实例或Restore
尝试从先前的备份中恢复亚马逊 EC2 实例配置的原始配置。类型:字符串
允许的模式:
Contain|Restore
-
DryRun (可选):
描述:(可选)设置为时
true
,自动化将不执行任何命令,而是报告其本来会尝试执行的操作,详细说明每个步骤。默认值:true
。类型:布尔值
允许的值:
true|false
-
创建AMIBackup (可选):
描述:(可选)当设置为时
true
,AMI 的 Amazon EC2 实例将在执行控制操作之前创建。类型:布尔值
允许的值:
true|false
-
KmsKey (可选):
描述:(可选)将用于创建加密 AWS KMS 密钥的 ID AMI 的目标 Amazon EC2 实例。默认设置为
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"}]
Cidr IpProtocol、 FromPort 和 ToPort ,将应用于 Amazon 实例。 EC2 如果未提供任何规则,则会将没有任何入口规则的安全组附加到 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"}]
Cidr IpProtocol、 FromPort 和 ToPort ,将应用于 Amazon 实例。 EC2 如果未提供任何规则,则会将没有任何出口规则的安全组附加到 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
,则指定自动化用于尝试恢复目标亚马逊 EC2 实例配置的 Amazon S3 密钥。Amazon S3 密钥通常遵循以下格式:{year}/{month}/{day}/{hour}/{minute}/{automation_execution_id}.json
。密钥可以从之前的控制自动化执行的输出中获得。类型:字符串
允许的模式:
^[a-zA-Z0-9\\.\\-_\\\\!*'()/]{0,1024}$
-
-
选择执行。
-
自动化启动。
-
文档将执行以下步骤:
-
ValidateRequiredInputs
验证是否提供了所有必需的输入。
-
AssertInstanceIsNotTerminated
检查目标 Amazon EC2 实例是否未终止(已删除)。
-
GetAutoScalingInstanceInfo
如果目标亚马逊 EC2 实例是 Auto Scaling 组的一部分,则获取亚马逊 EC2 实例生命周期和组名称。
-
CheckBackupS3BucketName
检查目标 Amazon S3 存储桶是否有可能向其对象授予
read
或write
公开访问其对象。如果存储桶不存在,则会创建一个新的 Amazon S3BackupS3BucketName
存储桶。 -
BranchOnActionAndMode
根据输入参数对自动化进行分支
Action
和DryRun
。 -
BranchOnAutoScalingGroupMembership
根据目标 Amazon EC2 实例是否属于 Auto Scaling 组及其生命周期状态来分支自动化。
-
DescribeAutoScalingGroups
获取并存储关联的 Amazon A EC2 uto Scaling 组配置。
-
ModifyAutoScalingGroup
修改包含操作的关联的 Amazon A EC2 uto Scaling 组配置,将亚马逊 EC2 实例设置为
Standby
状态并调整 Auto Scaling 组MinSize
的容量。 -
BackupInstanceSecurityGroups
获取并存储目标 Amazon EC2 实例安全组的配置。
-
CreateAllAccessSecurityGroup
创建一个临时安全组,允许取代目标 Amazon EC2 实例的安全组的所有入口流量。
-
CreateContainmentSecurityGroup
使用指定的入口和出口规则创建限制性容器安全组,并用它替换临时的全部访问安全组。
-
BranchOnCreateAMIBackup
根据
CreateAMIBackup
输入参数对自动化进行分支。 -
AssertSourceInstanceRootVolumeIsEbs
检查目标亚马逊 EC2 实例根卷是否是 Amazon EBS。
-
CreateImage
创建一个 AMI 的目标 Amazon EC2 实例。
-
RestoreInstanceConfiguration
从备份中恢复目标 Amazon EC2 实例配置。
-
ReportContain
输出遏制操作的试运行详细信息。
-
ReportRestore
输出恢复操作的试运行详细信息。
-
ReportRestoreFailure
提供在恢复工作流程失败的情况下恢复目标 Amazon EC2 实例原始配置的说明。
-
ReportContainmentFailure
提供在控制工作流程失败的情况下恢复目标 Amazon EC2 实例原始配置的说明。
-
FinalOutput
输出遏制操作的详细信息。
-
-
执行完成后,请查看 “输出” 部分,了解执行的详细结果:
-
FinalOutput。输出
当设置为 False 时
DryRun
,输出此运行手册执行的遏制操作的详细信息。 -
RestoreInstanceConfiguration。输出
当设置为 False 时,输出此运行手册执行
DryRun
的还原操作。 -
ReportContain。输出
设置为 Tr
DryRun
ue 时,输出此运行手册执行的遏制操作的详细信息。 -
ReportRestore。输出
设置为 True 时
DryRun
,输出此运行手册执行的还原操作的详细信息。 -
ReportContainmentFailure。输出
提供在控制工作流程失败的情况下恢复目标 Amazon EC2 实例原始配置的说明。
-
ReportRestoreFailure。输出
提供在恢复工作流程失败的情况下恢复目标 Amazon EC2 实例原始配置的说明。
-
参考
Systems Manager Automation