将 Amazon EC2 与 Google SecOps 集成

本文档介绍了如何将 AWS Elastic Compute Cloud (Amazon EC2) 与 Google Security Operations 集成。

使用场景

  1. 保护 Amazon Elastic Compute Cloud (Amazon EC2) 实例

    1. 创建安全组,以限制对 Amazon EC2 的入站和出站互联网访问。
    2. 分配新的弹性 IP 地址
    3. 关联新的弹性 IP 地址
  2. 资源管理 - 使用实例自定义标记来跟踪和识别 AWS 资源。

准备工作

在 Google SecOps 中配置 AWS Elastic Compute Cloud (EC2) 集成之前,请验证您的网络环境和 AWS 凭证是否满足所有操作前提条件。

如需为集成准备环境,请务必完成以下操作:

  1. 验证 Google SecOps 与 AWS EC2 区域服务端点之间的网络视线。

  2. 获取具有适当 IAM 权限的 AWS 程序化 API 凭证(访问密钥 ID 和私有访问密钥)。

  3. 在 Google SecOps 中配置和测试集成实例。

网络要求

Google SecOps 使用 HTTPS REST API 和 AWS Python SDK (boto3) 直接与 AWS EC2 服务通信。

确保您的网络环境符合以下连接规则:

  • 出站 HTTPS 访问:启用从 Google SecOps 实例或远程代理通过端口 443/TCP 到 AWS EC2 区域端点 (ec2.<region>.amazonaws.com) 的出站 HTTPS 通信。

    如需了解详情,请参阅 AWS 文档中的 AWS 服务端点。

  • 代理配置:如果贵组织通过 HTTP/HTTPS 代理路由出站流量,请在 Google SecOps 服务器或远程代理主机上配置标准环境代理变量(HTTP_PROXY、HTTPS_PROXY、NO_PROXY)。

身份验证和凭证

AWS EC2 集成需要程序化 API 凭证,才能使用 AWS 签名版本 4 对请求进行身份验证。

确保您的 AWS 环境满足以下身份验证要求:

  • 程序化凭证:获取与 AWS IAM 用户或角色关联的有效 AWS 访问密钥 ID 和 AWS 密钥。

    如需了解如何创建 IAM 身份和生成凭据,请参阅 AWS 文档中的管理 IAM 用户的访问密钥和 IAM 身份。

  • 最小权限:将权限限制为仅执行自动化工作流所需的操作和计算资源,并定期轮替凭据。

    如需详细了解安全建议,请参阅 AWS 文档中的 IAM 安全最佳实践。

配置操作权限

向进行身份验证的 AWS IAM 身份授予 Google SecOps 运行手册执行操作所需的特定权限。

请参阅下表中 AWS Elastic Compute Cloud (EC2) 操作的最低权限:

操作名称 所需的 AWS IAM 权限 (ActionName:Permission) 前提权限 说明/资源范围
Authorize Security Group Egress ec2:AuthorizeSecurityGroupEgress ec2:DescribeRegions 向 EC2 安全组添加出站规则。资源:目标安全群组 ARN。
Authorize Security Group Ingress ec2:AuthorizeSecurityGroupIngress ec2:DescribeRegions 向 EC2 安全组添加入站规则。资源:目标安全群组 ARN。
创建标记 ec2:CreateTags ec2:DescribeRegions 在 EC2 资源上添加或覆盖标记。资源:目标 EC2 资源 ARN。
列出实例 ec2:DescribeInstances ec2:DescribeRegions 检索 EC2 实例的状态和元数据。资源:*。
列出安全群组 ec2:DescribeSecurityGroups — 检索安全群组配置和规则。资源:*。
Ping ec2:DescribeRegions — 验证集成连接。资源:*。
撤消安全群组出站流量 ec2:RevokeSecurityGroupEgress ec2:DescribeRegions 从 EC2 安全组中移除出站规则。资源:目标安全群组 ARN。
撤消安全组入站流量 ec2:RevokeSecurityGroupIngress ec2:DescribeRegions 从 EC2 安全组中移除入站规则。资源:目标安全群组 ARN。
启动实例 ec2:StartInstances — 启动已停止的 EC2 实例。资源:目标 EC2 实例 ARN。
停止实例 ec2:StopInstances — 停止运行 EC2 实例。资源:目标 EC2 实例 ARN。
拍摄快照 ec2:CreateSnapshots ec2:DescribeRegions 为实例卷创建时间点 EBS 快照。资源:实例和卷 ARN。
终止实例 ec2:TerminateInstances — 关停并终止 EC2 实例。资源:目标 EC2 实例 ARN。

快速参考 (ActionName:Permission)

请使用以下快速参考来查看每项操作所需的权限:

Ping: ec2:DescribeRegions
Authorize Security Group Egress: ec2:AuthorizeSecurityGroupEgress, ec2:DescribeRegions
Authorize Security Group Ingress: ec2:AuthorizeSecurityGroupIngress, ec2:DescribeRegions
Create Tags: ec2:CreateTags, ec2:DescribeRegions
List Instances: ec2:DescribeInstances, ec2:DescribeRegions
List Security Groups: ec2:DescribeSecurityGroups
Revoke Security Group Egress: ec2:RevokeSecurityGroupEgress, ec2:DescribeRegions
Revoke Security Group Ingress: ec2:RevokeSecurityGroupIngress, ec2:DescribeRegions
Start Instance: ec2:StartInstances
Stop Instance: ec2:StopInstances
Take Snapshot: ec2:CreateSnapshots, ec2:DescribeRegions
Terminate Instance: ec2:TerminateInstances

IAM 政策示例(最小权限)

以下示例政策演示了在 Google SecOps 中运行所有 AWS EC2 操作所需的权限。

如需了解如何创建和附加 IAM 政策,请参阅 AWS 文档中的创建 IAM 政策。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "SecOpsEC2Discovery",
      "Effect": "Allow",
      "Action": [
        "ec2:DescribeRegions",
        "ec2:DescribeInstances",
        "ec2:DescribeSecurityGroups"
      ],
      "Resource": "*"
    },
    {
      "Sid": "SecOpsEC2InstanceRemediation",
      "Effect": "Allow",
      "Action": [
        "ec2:StartInstances",
        "ec2:StopInstances",
        "ec2:TerminateInstances",
        "ec2:CreateTags",
        "ec2:CreateSnapshots"
      ],
      "Resource": "*"
    },
    {
      "Sid": "SecOpsEC2SecurityGroupManagement",
      "Effect": "Allow",
      "Action": [
        "ec2:AuthorizeSecurityGroupIngress",
        "ec2:RevokeSecurityGroupIngress",
        "ec2:AuthorizeSecurityGroupEgress",
        "ec2:RevokeSecurityGroupEgress"
      ],
      "Resource": "arn:aws:ec2:*:*:security-group/*"
    }
  ]
}

集成参数

使用以下参数配置集成:

参数显示名称 类型 默认值 为必填项 说明
AWS 访问密钥 ID 字符串 不适用 是 要在集成中使用的 AWS 访问密钥 ID。
AWS 密钥 密码 不适用 是 要在集成中使用的 AWS 密钥。
AWS 默认区域 字符串 不适用 是 要在集成中使用的 AWS 默认区域,例如 us-west-2。

如需了解如何在 Google SecOps 中配置集成,请参阅配置集成。

如有需要,您可以在后续阶段进行更改。配置集成实例后,您可以在 playbook 中使用该实例。如需详细了解如何配置和支持多个实例,请参阅支持多个实例。

操作

如需详细了解操作,请参阅 在工作桌上响应待处理的操作和在案例中运行手动操作。

Authorize Security Group Egress

将指定的出站规则添加到安全群组,以便与 VPC 搭配使用。出站规则允许实例将流量发送到指定的 IPv4 或 IPv6 CIDR 地址范围。规则更改会尽快传播到受影响的实例。不过,可能会出现短暂延迟。

如需详细了解 VPC 安全组限制,请参阅 Amazon VPC 限制。

参数

参数显示名称 类型 默认值 为必填项 说明
安全组 ID 字符串 不适用 是

一个或多个安全群组 ID。用英文逗号分隔。

Note for dev: every ID in a separate request

IP 协议 DDL 全部 否

IP 协议名称。使用“all”指定所有协议。指定“all”会允许所有端口上的流量,无论您指定了什么端口范围。

可能的值:tcp、udp、icmp、all

Note for dev: 'all' equals -1 from code

起始端口 整数 否 TCP 和 UDP 协议的端口范围起始值,或 ICMP 类型编号。
结束端口 整数 否 TCP 和 UDP 协议的端口范围结束值允许所有端口上的流量,无论您指定了什么端口范围。
IP 范围 - CidrIP 字符串 不适用 否 IPv4 CIDR 范围。如需指定单个 IPv4 地址,请使用 /32 前缀长度。
IPv6 范围 - CidrIP 字符串 不适用 否 IPv6 CIDR 范围。如需指定单个 IPv6 地址,请使用 /128 前缀长度。

运行时间

此操作不会对实体执行。

操作执行结果

脚本结果
脚本结果名称 值选项 示例
is_success True/False is_success:False
案例墙
结果类型 值/说明 类型
输出消息*

操作不应失败,也不应停止 playbook 执行:

如果成功将指定的出站规则添加到至少一个(或所有)安全组 (is_success = true):“Successfully added the specified egress rule to the following security groups: {group_ids}”

如果由于权限规则错误(端口无效等)而未能添加指定的出站规则:(is_success = false):“未能将指定的出站规则添加到以下安全组:{group_ids}。原因:设置的 IP 权限集无效。如需了解详情,请查看日志。”

如果由于安全组 ID 无效而未能添加指定的出站规则:(is_success = false):“未能将指定的出站规则添加到以下安全组:{group_ids}。原因:提供的安全群组 ID 无效。如需了解详情,请查看日志。``

如果未能将指定的出站规则添加到所有群组:is_success=false

操作应失败并停止 playbook 执行:

如果发生严重错误、SDK 错误(例如凭证错误、无法连接到服务器等):“执行操作‘Authorize Security Group Egress’时出错。Reason: {0}''.format(error.Stacktrace)

常规

Authorize Security Group Ingress

将指定的入站流量规则添加到安全群组。入站规则允许实例接收来自指定 IPv4 或 IPv6 CIDR 地址范围的流量。规则更改会尽快传播到受影响的实例。不过,可能会出现短暂延迟。

如需详细了解 VPC 安全组限制,请参阅 Amazon VPC 限制。

参数

参数显示名称 类型 默认值 为必填项 说明
安全组 ID 字符串 不适用 是

一个或多个安全群组 ID。用英文逗号分隔。

Note for dev: every ID in a separate request

IP 协议 DDL 全部 否

IP 协议名称。使用“all”指定所有协议。指定“all”会允许所有端口上的流量,无论您指定了什么端口范围。

可能的值:tcp、udp、icmp、all

Note for dev: 'all' equals -1 from code

起始端口 整数 否 TCP 和 UDP 协议的端口范围起始值,或 ICMP 类型编号。
结束端口 整数 否 TCP 和 UDP 协议的端口范围结束值允许所有端口上的流量,无论您指定了什么端口范围。
IP 范围 - CidrIP 字符串 不适用 否 CIDR 格式的 IPv4 地址。如需指定单个 IPv4 地址,请使用 /32 前缀长度。
IPv6 范围 - CidrIP 字符串 不适用 否 IPv6 CIDR 范围。如需指定单个 IPv6 地址,请使用 /128 前缀长度。

运行时间

此操作不会对实体执行。

操作执行结果

脚本结果
脚本结果名称 值选项 示例
is_success True/False is_success:False
案例墙
结果类型 值/说明 类型
输出消息*

操作不应失败,也不应停止 playbook 执行:

如果已成功将指定的入站规则添加到至少一个安全组(如果所有规则都已成功更新 - is_success = true):“已成功将指定的入站规则添加到以下安全组:{group_ids}”

如果由于权限规则错误(端口无效等)而未能添加指定的入站规则:(is_success =false):“未能将指定的入站规则添加到以下安全组:{group_ids}。原因:设置的 IP 权限集无效。如需了解详情,请查看日志。”

如果由于安全组 ID 无效而未能添加指定的入站规则:(is_success =false):“未能将指定的入站规则添加到以下安全组:{group_ids}。原因:提供的安全群组 ID 无效。如需了解详情,请查看日志。``

操作应失败并停止 playbook 执行:

如果发生严重错误、SDK 错误(例如凭证错误、无法连接到服务器等):“执行操作‘Authorize Security Group Ingress’时出错。Reason: {0}''.format(error.Stacktrace)

常规

创建标记

标记是您分配给 AWS 资源的标签。每个标记由一个键和一个可选值组成。您可以使用标记来搜索和过滤资源或跟踪 AWS 费用。仅为指定的一个或多个 Amazon EC2 资源添加或覆盖指定的标记。如果您指定现有标记键,则该值会被新值覆盖。每个资源最多可以有 50 个标记。每个资源的标记键必须是唯一的。

如需详细了解标记,请参阅《Amazon Elastic Compute Cloud 用户指南》中的标记资源。

参数

参数显示名称 类型 默认值 为必填项 说明
资源 ID 字符串 不适用 是 一个或多个资源 ID。用英文逗号分隔。
标记 字符串 不适用 是

要分配给资源的标记的键值对组合。例如,如需向所有指定资源添加键为 Owner 且值为 TeamA 的标记,请指定 Owner:TeamA。您可以指定多个键值对组合,并用英文逗号分隔。

您可以添加或覆盖指定的标记。每个资源的标记键必须是唯一的。

运行时间

此操作不会对实体执行。

操作执行结果

脚本结果
脚本结果名称 值选项 示例
is_success True/False is_success:False
案例墙
结果类型 值/说明 类型
输出消息*

操作不应失败,也不应停止 playbook 执行:

如果成功:“已成功将 {tags_list} 标记添加到以下资源:‘resource_ids’”

对于无效的资源 ID (is_success = false):“未能向以下资源添加 {tag_list} 个标签:{resource_ids}。原因:资源 ID 无效

如果资源的标签超过 50 个 (is_success = false):“未能将 {tag_list} 标签添加到以下资源:{resource_ids}。原因:资源最多可以有 50 个标记。

如果标记键不唯一:(is_success = false):“未能将 {tag_list} 标记添加到以下资源:{resource_ids}。原因:每个资源的标记键必须是唯一的。

如果给定标记的格式无效(即只有键或只有值,没有键:值的完整结构)(is_success = false):“未能将 {invalid_tags} 标记添加到以下资源:{ids}。原因:格式无效。标记应包含键和值。

操作应失败并停止 playbook 执行:

如果出现严重错误、SDK 错误(例如凭据错误、无法连接到服务器等):“执行‘创建代码’操作时出错。Reason: {0}''.format(error.Stacktrace)

常规

列出实例

描述指定实例或所有实例。

参数

参数显示名称 类型 默认值 为必填项 说明
实例 ID 字符串 不适用 否 一个或多个实例 ID。如果指定实例 ID,则输出仅包含指定实例的信息。此参数不能与“结果数上限”参数一起使用。“实例 ID”的优先级高于“结果数上限”参数。
标记过滤器 字符串 不适用 否 分配给资源的标记的键值对组合。例如,如需查找具有键为 Owner 且值为 TeamA 的标记的所有资源,请指定 Owner:TeamA。以英文逗号分隔的标记过滤条件。示例:Name:Name1,Owner:TeamA。返回的实例将符合所有过滤条件。
结果数上限 整数 50 否 指定要返回的实例数量。默认值为 50。最大值为 1000。参数“实例 ID”不能与参数“结果数上限”一起使用。 “实例 ID”的优先级高于“结果数上限”参数。

运行时间

此操作不会对实体执行。

操作执行结果

脚本结果
脚本结果名称 值选项 示例
is_success True/False is_success:False
JSON 结果
"EC2_Instances": [
    {
   "AmiLaunchIndex":0,
   "ImageId":"ami-047a51fa27710816e",
   "InstanceId":"i-044c08c5bfe1a7f98",
   "InstanceType":"t2.micro",
   "KeyName":"\"Key\": \"Test\", \"Value\":\"Test\"",
   "LaunchTime":"2021-1-30",
   "Monitoring":{
      "State":"disabled"
   },
   "Placement":{
      "AvailabilityZone":"us-east-1d",
      "GroupName":"",
      "Tenancy":"default"
   },
   "PrivateDnsName":"ip-192-0-2-220.ec2.internal",
   "PrivateIpAddress":"192.0.2.220",
   "ProductCodes":[

   ],
   "PublicDnsName":"ec2-192-0-2-218.compute-1.amazonaws.com",
   "PublicIpAddress":"192.0.2.218",
   "State":{
      "Code":16,
      "Name":"running"
   },
   "StateTransitionReason":"",
   "SubnetId":"subnet-1b1fda3a",
   "VpcId":"vpc-ID",
   "Architecture":"x86_64",
   "BlockDeviceMappings":[
      {
         "DeviceName":"/dev/xvda",
         "Ebs":{
            "AttachTime":"2021-1-30",
            "DeleteOnTermination":true,
            "Status":"attached",
            "VolumeId":"vol-00f70681a43e5d86e"
         }
      }
   ],
   "ClientToken":"",
   "EbsOptimized":false,
   "EnaSupport":true,
   "Hypervisor":"xen",
   "NetworkInterfaces":[
      {
         "Association":{
            "IpOwnerId":"amazon",
            "PublicDnsName":"ec2-192-0-2-218.compute-1.amazonaws.com",
            "PublicIp":"192.0.2.218"
         },
         "Attachment":{
            "AttachTime":"",
            "AttachmentId":"eni-attach-06bc5e5901ce99ef2",
            "DeleteOnTermination":true,
            "DeviceIndex":0,
            "Status":"attached",
            "NetworkCardIndex":0
         },
         "Description":"",
         "Groups":[
            {
               "GroupName":"launch-wizard-2",
               "GroupId":"sg-001700ccddac4189a"
            }
         ],
         "Ipv6Addresses":[

         ],
         "MacAddress":"12:34:56:ab:cd:ef",
         "NetworkInterfaceId":"eni-020fa83efd417e32d",
         "OwnerId":"ID",
         "PrivateDnsName":"ip-192-0-2-220.ec2.internal",
         "PrivateIpAddress":"192.0.2.220",
         "PrivateIpAddresses":[
            {
               "Association":{
                  "IpOwnerId":"amazon",
                  "PublicDnsName":"ec2-192-0-2-218.compute-1.amazonaws.com",
                  "PublicIp":"192.0.2.218"
               },
               "Primary":true,
               "PrivateDnsName":"ip-192-0-2-220.ec2.internal",
               "PrivateIpAddress":"192.0.2.220"
            }
         ],
         "SourceDestCheck":true,
         "Status":"in-use",
         "SubnetId":"subnet-1b1fda3a",
         "VpcId":"vpc-ID",
         "InterfaceType":"interface"
      }
   ],
   "RootDeviceName":"/dev/xvda",
   "RootDeviceType":"ebs",
   "SecurityGroups":[
      {
         "GroupName":"launch-wizard-2",
         "GroupId":"sg-001700ccddac4189a"
      }
   ],
   "SourceDestCheck":true,
   "Tags":[
      {
         "Key":"Owner",
         "Value":"Example"
      },
      {
         "Key":"Name",
         "Value":"Example test"
      }
   ],
   "VirtualizationType":"hvm",
   "CpuOptions":{
      "CoreCount":1,
      "ThreadsPerCore":1
   },
   "CapacityReservationSpecification":{
      "CapacityReservationPreference":"open"
   },
   "HibernationOptions":{
      "Configured":false
   },
   "MetadataOptions":{
      "State":"applied",
      "HttpTokens":"optional",
      "HttpPutResponseHopLimit":1,
      "HttpEndpoint":"enabled"
   },
   "EnclaveOptions":{
      "Enabled":false
   }
}
 ]
案例墙
结果类型 值/说明 类型
输出消息*

操作不应失败,也不应停止 playbook 执行:

  • 如果成功列出实例(is_success = true):“已成功描述 Amazon EC2 实例。”
  • 如果没有可用值(is_success = false):“在 Amazon EC2 中未找到任何实例”

操作应失败并停止 playbook 执行:

如果出现严重错误、实例 ID 无效、SDK 错误(例如凭据错误、无法连接到服务器)或其他错误:“执行‘列出实例’操作时出错。Reason: {0}''.format(error.Stacktrace)

常规
案例墙表格

表名称:Amazon EC2 实例

表列:

ID

州

类型

可用性地区

公共 IPv4 DNS

公共 IPv4 地址

监控

安全群组名称

密钥名称

启动时间

列出安全组

描述指定的安全组或您的所有安全组。安全组可用于 EC2-Classic 平台或特定 VPC 中的实例。

如需了解详情,请参阅 Amazon EC2 安全群组。

参数

参数显示名称 类型 默认值 为必填项 说明
安全组名称 字符串 不适用 False 一个或多个安全群组名称 [仅限 EC2-Classic 和默认 VPC]。以英文逗号分隔。如果您指定安全组名称,则输出仅包含指定名称的信息。
安全组 ID 字符串 不适用 False 一个或多个安全群组 ID。以英文逗号分隔。如果您指定了安全群组 ID,则输出仅包含指定 ID 的信息。非默认 VPC 中的安全群组必须提供此参数。
标记过滤条件 字符串 不适用 False

分配给安全群组的标记的键值对组合。例如,如需查找包含键 Owner 和值 TeamA 的标记的所有群组,请输入 Owner:TeamA。您可以使用以逗号分隔的标记过滤条件,例如 Name:Name1,Owner:TeamA。返回的群组必须与所有过滤条件匹配。

结果数上限 整数 50 False 要返回的安全群组数量。默认值为 50。 最大值为 1000。 注意:“安全群组 ID”和“安全群组名称”参数不能与“结果数上限”参数一起使用。

运行时间

此操作不会对实体执行。

操作执行结果

脚本结果
脚本结果名称 值选项 示例
is_success True/False is_success:False
JSON 结果
"EC2_Security_Groups": [
{
   "Description":"launch-wizard-2 created 2021-01-30T19:37:11.523+02:00",
   "GroupName":"launch-wizard-2",
   "IpPermissions":[
      {
         "FromPort":22,
         "IpProtocol":"tcp",
         "IpRanges":[
            {
               "CidrIp":"192.0.2.0/0"
            }
         ],
         "Ipv6Ranges":[

         ],
         "PrefixListIds":[

         ],
         "ToPort":22,
         "UserIdGroupPairs":[

         ]
      }
   ],
   "OwnerId":"582302349248",
   "GroupId":"sg-001700ccddac4189a",
   "IpPermissionsEgress":[
      {
         "IpProtocol":"-1",
         "IpRanges":[
            {
               "CidrIp":"192.0.2.0/0"
            }
         ],
         "Ipv6Ranges":[

         ],
         "PrefixListIds":[

         ],
         "UserIdGroupPairs":[

         ]
      }
   ],
   "Tags":[
      {
         "Key":"Team",
         "Value":"A-Team"
      },
      {
         "Key":"Owner",
         "Value":"Example"
      }
   ],
   "VpcId":"vpc-ID"
}
]
案例墙
结果类型 值/说明 类型
输出消息*

操作不应失败,也不应停止 playbook 执行:

  • 如果成功列出群组(is_success = true):“Successfully described Amazon EC2 security groups.”
  • 如果没有可用值(is_success = false):“在 Amazon EC2 中未找到任何安全组”

操作应失败并停止 playbook 执行:

如果发生严重错误、群组 ID/名称无效、SDK 错误(例如凭据错误、无法连接到服务器)或其他错误:“执行‘列出安全群组’操作时出错。Reason: {0}''.format(error.Stacktrace)

常规
案例墙表格

表名称:Amazon EC2 实例

表列:

安全群组 ID

安全群组名称

VPC ID

说明

所有者 ID

Ping

测试与 AWS EC2 的连接。

参数

不适用

运行时间

此操作不会对实体执行。

操作执行结果

脚本结果
脚本结果名称 值选项 示例
is_success True/False is_success:False
案例墙
结果类型 值/说明 类型
输出消息*

操作不应失败,也不应停止 playbook 执行:

如果成功:“已使用提供的连接参数成功连接到 Amazon EC2!”

操作应失败并停止 playbook 执行:

如果未成功:“Failed to connect to the Amazon EC2 server! 错误为 {0}”。format(exception.stacktrace)

常规

撤销安全群组出站流量

从 EC2-VPC 的安全群组中移除指定的出站规则。此操作不适用于在 EC2-Classic 中使用的安全组。 如需移除规则,您指定的值(例如端口)必须与现有规则的值完全匹配。规则更改会尽快传播到安全群组中的实例。不过,可能会出现短暂延迟。

参数

参数显示名称 类型 默认值 为必填项 说明
安全组 ID 字符串 不适用 是

一个或多个安全群组 ID。用英文逗号分隔。

Note for dev: every ID in a separate request

IP 协议 DDL 全部 否

IP 协议名称。使用“all”指定所有协议。指定“all”会允许所有端口上的流量,无论您指定了什么端口范围。

可能的值:tcp、udp、icmp、all

Note for dev: 'all' equals -1 from code

起始端口 整数 否 TCP 和 UDP 协议的端口范围起始值,或 ICMP 类型编号。
结束端口 整数 否 TCP 和 UDP 协议的端口范围结束值允许所有端口上的流量,无论您指定了什么端口范围。
IP 范围 - CidrIP 字符串 不适用 否 CIDR 格式的 IPv4 地址。如需指定单个 IPv4 地址,请使用 /32 前缀长度。
IPv6 范围 - CidrIP 字符串 不适用 否 IPv6 CIDR 范围。如需指定单个 IPv6 地址,请使用 /128 前缀长度。

运行时间

此操作不会对实体执行。

操作执行结果

脚本结果
脚本结果名称 值选项 示例
is_success True/False is_success:False
案例墙
结果类型 值/说明 类型
输出消息*

操作不应失败,也不应停止 playbook 执行:

如果成功从至少一个(或所有)安全组中撤消了指定的出站规则 (is_success = true):“已成功从以下安全组中撤消指定的出站规则:{group_ids}”

如果由于权限规则错误(端口无效,例如 205 等)而未能撤消指定的出站规则:(is_success =false):“未能从以下安全组中撤消指定的出站规则:{group_ids}。原因:设置的 IP 权限集无效。如需了解详情,请查看日志。”

如果由于安全组 ID 无效而未能撤消指定的出站规则:(is_success =false):“未能从以下安全组中撤消指定的出站规则:{group_ids}。原因:提供的安全群组 ID 无效。如需了解详情,请查看日志。``

操作应失败并停止 playbook 执行:

如果出现严重错误、SDK 错误(例如凭据错误、无法连接到服务器)或其他错误:“执行操作‘撤消安全组出站流量’时出错。Reason: {0}''.format(error.Stacktrace)

Gener

撤销安全群组入站流量

从安全组中移除指定的入站流量规则(入站规则)。如需移除规则,您指定的值(例如端口)必须与现有规则的值完全匹配。规则更改会尽快传播到安全群组中的实例。不过,可能会出现短暂延迟。

参数

参数显示名称 类型 默认值 为必填项 说明
安全组 ID 字符串 不适用 是

一个或多个安全群组 ID。用英文逗号分隔。

Note for dev: every ID in a separate request

IP 协议 DDL 全部 否

IP 协议名称。使用“all”指定所有协议。指定“all”会允许所有端口上的流量,无论您指定了什么端口范围。

可能的值:tcp、udp、icmp、all

Note for dev: 'all' equals -1 from code

起始端口 整数 否 TCP 和 UDP 协议的端口范围起始值,或 ICMP 类型编号。
结束端口 整数 否 TCP 和 UDP 协议的端口范围结束值允许所有端口上的流量,无论您指定了什么端口范围。
IP 范围 - CidrIP 字符串 不适用 否 CIDR 格式的 IPv4 地址。如需指定单个 IPv4 地址,请使用 /32 前缀长度。
IPv6 范围 - CidrIP 字符串 不适用 否 IPv6 CIDR 范围。如需指定单个 IPv6 地址,请使用 /128 前缀长度。

运行时间

此操作不会对实体执行。

操作执行结果

脚本结果
脚本结果名称 值选项 示例
is_success True/False is_success:False
案例墙
结果类型 值/说明 类型
输出消息*

操作不应失败,也不应停止 playbook 执行:

如果成功撤消了至少一个(或所有)安全组的指定入站规则:(is_success = true):“已成功撤消以下安全组的指定入站规则:{group_ids}”

如果由于权限规则错误(端口无效,例如 205 等)而未能撤消指定的入站规则:(is_success =false):“未能从以下安全组中撤消指定的入站规则:{group_ids}。原因:设置的 IP 权限集无效。如需了解详情,请查看日志。”

如果由于安全组 ID 无效而未能撤消指定的入站规则:(is_success =false):“未能从以下安全组中撤消指定的入站规则:{group_ids}。原因:提供的安全群组 ID 无效。如需了解详情,请查看日志。``

操作应失败并停止 playbook 执行:

如果发生严重错误、SDK 错误(例如凭据错误、无法连接到服务器等):“执行‘撤消安全群组入站流量’操作时出错。Reason: {0}''.format(error.Stacktrace)

常规

启动实例

启动您之前已停止的 Amazon Elastic Block Store (Amazon EBS) 支持的实例。实例可能需要几分钟才能进入运行状态。请注意,您无法启动实例存储支持的实例。如需详细了解实例存储支持的实例,请参阅根设备的存储。

参数

参数显示名称 类型 默认值 为必填项 说明
实例 ID 字符串 不适用 是 一个或多个实例 ID。以英文逗号分隔

运行时间

此操作不会对实体执行。

操作执行结果

脚本结果
脚本结果名称 值选项 示例
is_success True/False is_success:False
JSON 结果
[
  {
      "CurrentState": "pending",
        "InstanceId": "string",
        "PreviousState":"stopped"
    }
]
案例墙
结果类型 值/说明 类型
输出消息*

操作不应失败,也不应停止 playbook 执行:

  • 如果所有/少数实例的当前状态与以下状态不同:待处理、正在运行:( Is_success = false):无法从当前状态启动以下实例:<failed_instance ids>
  • 如果当前状态为“待处理”→ 操作仍在进行中:正在继续…请求的实例仍处于待处理状态
  • 如果当前状态为正在运行:(is_success=true: 打印:以下实例已成功启动:<running_instance ids>
  • 如果其中一个实例无效 (is_success =false):以下实例无效:<无效 ID>。请重试。

操作应失败并停止 playbook 执行:

如果发生严重错误、SDK 错误(例如凭据错误、无法连接到服务器等),则显示:“执行‘启动实例’操作时出错。Reason: {0}''.format(error.Stacktrace)

常规

停止实例

停止 Amazon EBS 支持的实例。当您停止实例时,系统会在短暂延迟后尝试强制关停该实例。实例可能需要几分钟才能停止。您可以随时重启实例。您无法停止实例存储支持的实例,而必须将其终止。如需详细了解实例存储支持的实例,请参阅 https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ComponentsAMIs.html#storage-for-the-root-device

参数

参数显示名称 类型 默认值 为必填项 说明
实例 ID 字符串 不适用 是 实例 ID 的英文逗号分隔列表。
强制 布尔值 不适用 否 如果选择此选项,该操作会执行非平滑(硬)关停,立即停止实例,而不让其刷新文件系统缓存或元数据。此过程需要强制执行文件系统检查和修复程序,然后实例才能恢复运行。不建议用于 Windows 实例。

默认不启用。

运行时间

此操作不会对实体执行。

拍摄快照

为实例创建快照。

参数

参数显示名称 类型 默认值 为必填项 说明
实例 ID 字符串 不适用 是 指定实例 ID。
说明 字符串 不适用 否 指定快照的说明。

运行时间

此操作不会对实体执行。

操作执行结果

脚本结果
脚本结果名称 值选项 示例
is_success True/False is_success:False
JSON 结果
{
  "EC2_Snapshot": [
    {
      "Description": "",
      "Tags": [],
      "Encrypted": false,
      "VolumeId": "vol-ID",
      "State": "pending",
      "VolumeSize": 8,
      "StartTime": "2022-11-13 15:45:44.795000+00:00",
      "Progress": "",
      "OwnerId": "OWNER_ID",
      "SnapshotId": "snap-ID"
    }
  ]
}

终止实例

终止实例。

无法重启已终止的实例。只能终止实例存储支持的实例。如需详细了解实例存储支持的实例,请参阅根设备的存储。

如果您多次终止某个实例,则每次调用都会成功。如果您指定了多个实例,并且请求失败(例如,由于单个实例 ID 不正确),则不会终止任何实例。

终止的实例在终止后仍会保持可见状态(大约一小时)。默认情况下,Amazon EC2 会删除实例启动时挂接的所有 EBS 卷。实例启动后挂接的卷会继续运行。 如需了解详情,请参阅 Amazon 用户指南。

参数

参数显示名称 类型 默认值 为必填项 说明
实例 ID 字符串 不适用 是 一个或多个实例 ID。用英文逗号分隔。

运行时间

此操作不会对实体执行。

操作执行结果

脚本结果
脚本结果名称 值选项 示例
is_success True/False is_success:False
JSON 结果
"StoppingInstances": [
      {
      "CurrentState": "shutting-down",
        "InstanceId": "string",
        "PreviousState":"running"
      }
   ]
案例墙
结果类型 值/说明 类型
输出消息*

操作不应失败,也不应停止 playbook 执行:

  • 如果所有/少数实例的当前状态不是“正在关停”或“已终止”:(Is_success = false):无法从当前状态终止以下实例:<failed_instance ids>
  • 如果当前状态为 shutting-down:(is_success=true) → 操作仍在进行中:正在继续…请求的实例仍在关停
  • 如果当前状态为“已终止”:(is_success=true):以下实例已成功终止:<stopped_instance ids>
  • 如果其中一个实例无效 (is_success =false):以下实例无效:<无效 ID>。请重试。

操作应失败并停止 playbook 执行:

如果发生严重错误、SDK 错误(例如凭据错误、无法连接到服务器等):“执行‘终止实例’操作时出错。Reason: {0}''.format(error.Stacktrace)

常规

需要更多帮助?获得社区成员和 Google SecOps 专业人士的解答。