将 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 实例或远程代理到 AWS EC2 区域性端点 (ec2.<region>.amazonaws.com) 的出站 HTTPS 通信(通过端口 443/TCP)。

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

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

身份验证和凭据

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

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

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

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

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

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

配置操作权限

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

下表列出了 AWS Elastic Compute Cloud (EC2) 操作所需的最低权限:

操作名称 必需的 AWS IAM 权限 (ActionName:Permission) 前提权限 说明 / 资源范围
授权安全组出站流量 ec2:AuthorizeSecurityGroupEgress ec2:DescribeRegions 向 EC2 安全组添加出站规则。资源:目标安全组 ARN。
授权安全组入站流量 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 Secret Key 密码 不适用 要在集成中使用的 AWS Secret 密钥。
AWS 默认区域 字符串 不适用 集成中要使用的 AWS 默认区域,例如 us-west-2。

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

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

操作

如需详细了解操作,请参阅 在工作台页面中处理待处理的操作执行人工处置措施

授权安全组出站流量

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

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

参数

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

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

开发者注意事项:每个 ID 都在单独的请求中

IP 协议 DDL 全部

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

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

开发者备注:“all”在代码中等于 -1

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

Run On

此操作不会在实体上运行。

操作执行结果

脚本结果
脚本结果名称 值选项 示例
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 无效。如需了解详情,请查看日志。

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

操作应失败并停止 playbook 执行

如果出现严重错误、SDK 错误(例如凭据错误、无法连接到服务器、其他错误):“Error executing action "Authorize Security Group Egress". 原因:{0}''.format(error.Stacktrace)

常规

授权安全组入站流量

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

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

参数

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

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

开发者注意事项:每个 ID 都在单独的请求中

IP 协议 DDL 全部

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

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

开发者备注:“all”在代码中等于 -1

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

Run On

此操作不会在实体上运行。

操作执行结果

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

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

如果已成功将指定的入站规则添加到至少一个安全组:(if all were successfully updated - is_success = true):“Successfully added the specified ingress rule to the following security groups: {group_ids}”(已成功将指定的入站规则添加到以下安全组:{group_ids})

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

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

操作应失败并停止 playbook 执行

如果出现严重错误、SDK 错误(例如凭据错误、无法连接到服务器、其他错误):“Error executing action "Authorize Security Group Ingress". 原因:{0}''.format(error.Stacktrace)

常规

创建标记

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

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

参数

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

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

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

Run On

此操作不会在实体上运行。

操作执行结果

脚本结果
脚本结果名称 值选项 示例
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 错误(例如凭据错误、无法连接到服务器)或其他错误:“执行操作‘创建标记’时出错。原因:{0}''.format(error.Stacktrace)

常规

列出实例

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

参数

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

Run On

此操作不会在实体上运行。

操作执行结果

脚本结果
脚本结果名称 值选项 示例
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):“Successfully described Amazon EC2 instances.”
  • 如果没有可用值(is_success = false):“未在 Amazon EC2 中找到任何实例”

操作应失败并停止 playbook 执行

如果出现严重错误、实例 ID 无效、SDK 错误(例如凭据错误、无法连接到服务器)或其他错误:“Error executing action "List Instances". 原因:{0}''.format(error.Stacktrace)

常规
“案例墙”表格

表格名称:Amazon EC2 实例

表格列

ID

类型

可用性地区

公共 IPv4 DNS

公共 IPv4 地址

监控

安全组名称

密钥名称

启动时间

列出安全组

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

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

参数

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

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

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

Run On

此操作不会在实体上运行。

操作执行结果

脚本结果
脚本结果名称 值选项 示例
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 错误(例如凭据错误、无法连接到服务器)、其他错误:“执行操作‘列出安全组’时出错。原因:{0}''.format(error.Stacktrace)

常规
“案例墙”表格

表格名称:Amazon EC2 实例

表格列

安全组 ID

安全组名称

VPC ID

说明

所有者 ID

Ping

测试与 AWS EC2 的连接。

参数

不适用

Run On

此操作不会在实体上运行。

操作执行结果

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

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

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

操作应失败并停止 playbook 执行

如果未成功:“无法连接到 Amazon EC2 服务器!错误为 {0}".format(exception.stacktrace)

常规

撤消安全组出站流量规则

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

参数

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

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

开发者注意事项:每个 ID 都在单独的请求中

IP 协议 DDL 全部

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

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

开发者备注:“all”在代码中等于 -1

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

Run On

此操作不会在实体上运行。

操作执行结果

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

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

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

如果因权限规则错误(例如端口无效,为 205 等)而无法撤消指定的出站规则,则 (is_success =false):“Failed to revoke the specified egress rule from the following security groups: {group_ids}. 原因:设置的 IP 权限无效。如需了解详情,请查看日志。”

如果因安全组 ID 无效而未能撤消指定的出站规则(is_success =false):“Failed to revoke the specified egress rule from the following security groups: {group_ids}. 原因:提供的安全组 ID 无效。如需了解详情,请查看日志。

操作应失败并停止 playbook 执行

如果出现严重错误、SDK 错误(例如凭据错误、无法连接到服务器)或其他错误:“Error executing action "Revoke Security Group Egress". 原因:{0}''.format(error.Stacktrace)

Gener

撤消安全组入站规则

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

参数

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

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

开发者注意事项:每个 ID 都在单独的请求中

IP 协议 DDL 全部

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

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

开发者备注:“all”在代码中等于 -1

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

Run On

此操作不会在实体上运行。

操作执行结果

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

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

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

如果因权限规则错误(例如端口无效,为 205 等)而无法撤消指定的入站规则(is_success =false):“Failed to revoke the specified ingress rule from the following security groups: {group_ids}. 原因:设置的 IP 权限无效。如需了解详情,请查看日志。”

如果因安全组 ID 无效而未能撤消指定的入站规则(is_success =false):“Failed to revoke the specified ingress rule from the following security groups: {group_ids}. 原因:提供的安全组 ID 无效。如需了解详情,请查看日志。

操作应失败并停止 playbook 执行

如果出现严重错误、SDK 错误(例如凭据错误、无法连接到服务器)等:“Error executing action "Revoke Security Group Ingress". 原因:{0}''.format(error.Stacktrace)

常规

启动实例

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

参数

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

Run On

此操作不会在实体上运行。

操作执行结果

脚本结果
脚本结果名称 值选项 示例
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 错误(例如凭据错误、无法连接到服务器)或其他错误:“执行操作‘启动实例’时出错。原因:{0}''.format(error.Stacktrace)

常规

停止实例

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

参数

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

默认情况下未启用。

Run On

此操作不会在实体上运行。

拍摄快照

拍摄实例的快照。

参数

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

Run On

此操作不会在实体上运行。

操作执行结果

脚本结果
脚本结果名称 值选项 示例
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。以英文逗号分隔。

Run On

此操作不会在实体上运行。

操作执行结果

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

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

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

操作应失败并停止 playbook 执行

如果出现严重错误、SDK 错误(例如凭据错误、无法连接到服务器)或其他错误:“Error executing action "Terminate Instance". 原因:{0}''.format(error.Stacktrace)

常规

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