

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 搭配 GuardDuty 自動化安全代理程式使用基礎設施即程式碼 (IaC)
<a name="using-iac-with-gdu-automated-agents-runtime-monitoring"></a>

只有在下列清單適用於您的使用案例時，才使用此區段：
+ 您可以使用基礎設施即程式碼 (IaC) 工具，例如 AWS Cloud Development Kit (AWS CDK) 和 Terraform，來管理您的 AWS 資源，以及
+ 您需要為一或多個資源類型 - Amazon EKS、Amazon EC2 或 Amazon ECS-Fargate 啟用 GuardDuty 自動化代理程式組態。

## IaC 資源相依性圖表概觀
<a name="runtime-monitoring-dependency-overview"></a>

當您為資源類型啟用 GuardDuty 自動化代理程式組態時，GuardDuty 會自動建立與此 VPC 端點相關聯的 VPC 端點和安全群組，並安裝此資源類型的安全代理程式。根據預設，GuardDuty 只會在您停用執行期監控後刪除 VPC 端點和相關聯的安全群組。如需詳細資訊，請參閱[在執行期監控中停用、解除安裝和清除資源](runtime-monitoring-agent-resource-clean-up.md)。

當您使用 IaC 工具時，它會維護資源的相依性圖表。使用 IaC 工具刪除資源時，只會刪除可做為資源相依性圖表一部分追蹤的資源。IaC 工具可能不知道在其指定的組態之外建立的資源。例如，您可以使用 IaC 工具建立 VPC，然後使用 AWS 主控台或 API 操作將安全群組新增至此 VPC。在資源相依性圖表中，您建立的 VPC 資源取決於相關聯的安全群組。如果您使用 IaC 工具刪除此 VPC 資源，則會收到錯誤。解決此錯誤的方法是手動刪除相關聯的安全群組，或更新 IaC 組態以包含此新增的資源。

## 常見問題 - 刪除 IaC 中的資源
<a name="runtime-monitoring-iac-delete-failure"></a>

使用 GuardDuty 自動化代理程式組態時，您可能想要刪除使用 IaC 工具建立的資源 (Amazon EKS、Amazon EC2 或 Amazon ECS-Fargate)。不過，此資源取決於 GuardDuty 建立的 VPC 端點。這可防止 IaC 工具自行刪除資源，並要求您停用執行期監控，以進一步自動刪除 VPC 端點。

例如，當您嘗試刪除 GuardDuty 代表您建立的 VPC 端點時，您會收到類似下列範例的錯誤。

**Example**  
**使用 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)
```

**Example**  
**使用 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
```

### 解決方案 - 防止資源刪除問題
<a name="runtime-monitoring-iac-delete-fail-solution"></a>

本節可協助您管理獨立於 GuardDuty 的 VPC 端點和安全群組。

若要取得使用 IaC 工具設定之資源的完整擁有權，請依列出的順序執行下列步驟：

1. 建立 VPC。若要允許輸入許可，請將 GuardDuty VPC 端點與安全群組建立關聯，並與此 VPC 建立關聯。

1. 為您的資源類型啟用 GuardDuty 自動化代理程式組態

完成上述步驟後，GuardDuty 將不會建立自己的 VPC 端點，並會重複使用您使用 IaC 工具建立的端點。

如需有關建立您自己的 VPC 的資訊，請參閱 Amazon [VPC Transit Gateways 中的僅建立](https://docs.aws.amazon.com/vpc/latest/userguide/create-vpc.html#create-vpc-only) VPC。 **如需建立 VPC 端點的相關資訊，請參閱下一節的資源類型：
+ 對於 Amazon EC2，請參閱 [先決條件 – 手動建立 Amazon VPC 端點](creating-vpc-endpoint-ec2-agent-manually.md)。
+ 如需 Amazon EKS，請參閱 [先決條件 – 建立 Amazon VPC 端點](eksrunmon-prereq-deploy-security-agent.md)。