将基础设施即代码 (IaC) 与 GuardDuty 自动安全代理一起使用 - Amazon GuardDuty

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

将基础设施即代码 (IaC) 与 GuardDuty 自动安全代理一起使用

本节的内容仅在以下列表适用于您的应用场景时适用:

  • 您可以使用基础设施即代码 (IaC) 工具(例如 AWS Cloud Development Kit (AWS CDK) 和 Terraform)来管理您的 AWS 资源,以及

  • 您需要为一种或多种资源类型(Amazon EKS、Amazon 或 Amazon ECS-Farg EC2 ate)启用 GuardDuty 自动代理配置。

IaC 资源依赖关系图概述

当您为资源类型启用 GuardDuty 自动代理配置时, GuardDuty会自动创建 VPC 终端节点和与此 VPC 终端节点关联的安全组,并为该资源类型安装安全代理。默认情况下,只有在您禁用 “运行时监控” 后,才 GuardDuty 会删除 VPC 终端节点和关联的安全组。有关更多信息,请参阅 在运行时监控中禁用、卸载和清理资源

当您使用 IaC 工具时,该工具会维护资源的依赖关系图。使用 IaC 工具删除资源时,将仅会删除可以作为资源依赖关系图的一部分进行跟踪的资源。IaC 工具可能不知道在其指定配置之外创建的资源。例如,您可以使用 IaC 工具创建一个 VPC,然后使用 AWS 控制台或 API 操作向此 VPC 添加安全组。在资源依赖关系图中,您创建的 VPC 资源依赖关联的安全组。如果您使用该 IaC 工具删除了该 VPC 资源,则会出现错误。解决此错误的方法是手动删除关联的安全组,或者更新 IaC 配置以包含此添加的资源。

常见问题 – 在 IaC 中删除资源

使用 GuardDuty 自动代理配置时,您可能需要删除使用 IaC 工具创建的资源(Amazon EKS EC2、Amazon 或 Amazon ECS-Fargate)。但是,此资源依赖于 GuardDuty 创建的 VPC 终端节点。这会阻止 IaC 工具自行删除该资源,并且您需要禁用运行时监控,这会进一步该自动删除 VPC 端点。

例如,当您尝试删除代表您 GuardDuty 创建的 VPC 终端节点时,您将收到与以下示例类似的错误。

使用 CDK 时的错误示例

The following resource(s) failed to delete: [mycdkvpcapplicationpublicsubnet1Subnet1SubnetEXAMPLE1, mycdkvpcapplicationprivatesubnet1Subnet2SubnetEXAMPLE2]. Resource handler returned message: "The subnet 'subnet-APKAEIVFHP46CEXAMPLE' has dependencies and cannot be deleted. (Service: Ec2, Status Code: 400, Request ID: e071c3c5-7442-4489-838c-0dfc6EXAMPLE)" (RequestToken: 4381cff8-6240-208a-8357-5557b7EXAMPLE, HandlerErrorCode: InvalidRequest)

使用 Terraform 时的错误示例

module.vpc.aws_subnet.private[1]: Still destroying... [id=subnet-APKAEIVFHP46CEXAMPLE, 19m50s elapsed] module.vpc.aws_subnet.private[1]: Still destroying... [id=subnet-APKAEIVFHP46CEXAMPLE, 20m0s elapsed] Error: deleting EC2 Subnet (subnet-APKAEIBAERJR2EXAMPLE): DependencyViolation: The subnet 'subnet-APKAEIBAERJR2EXAMPLE' has dependencies and cannot be deleted. status code: 400, request id: e071c3c5-7442-4489-838c-0dfc6EXAMPLE

解决方法 – 防止资源删除问题

本节可帮助您管理独立于 VPC 终端节点和安全组 GuardDuty。

对于使用 IaC 工具配置的资源,要获得其完全所有权,请按所列顺序执行以下步骤:

  1. 创建 VPC。要允许进入权限,请将 GuardDuty VPC 终端节点与安全组关联到此 VPC。

  2. 为您的资源类型启用 GuardDuty 自动代理配置

完成上述步骤后, GuardDuty 将不会创建自己的 VPC 终端节点,而是会重复使用您使用 IaC 工具创建的终端节点。

有关创建您自己的 VPC 的信息,请参阅《Amazon VPC 中转网关》中的仅创建 VPC。有关创建 VPC 端点的信息,请参阅以下适用于您的资源类型的章节: