手动管理 Amazon EKS 集群的安全代理 - Amazon GuardDuty

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

手动管理 Amazon EKS 集群的安全代理

本节介绍在启用运行时监控后如何管理您的 Amazon EKS 附加GuardDuty 代理(代理)。要使用运行时监控,您必须启用运行时监控并配置 Amazon EKS 附加组件aws-guardduty-agent。仅执行这两个步骤中的一个步骤无助于 GuardDuty 检测潜在威胁或生成调查结果。

部署 GuardDuty 安全代理的先决条件

本节介绍手动为 EKS 集群部署 GuardDuty 安全代理的先决条件。在继续操作之前,请确保您已经为账户配置了运行时监控。如果您不配置运行时监控,则 GuardDuty 安全代理(EKS 附加组件)将无法运行。有关更多信息,请参阅 启用 GuardDuty 运行时监控。完成下列步骤后,请参阅 部署 GuardDuty 安全代理

选择您的首选访问方法来创建 Amazon VPC 端点。

Console
创建 VPC 端点
  1. 通过 https://console.aws.amazon.com/vpc/ 打开 Amazon VPC 控制台。

  2. 在导航窗格中的虚拟私有云下,选择端点

  3. 选择 Create Endpoint(创建端点)。

  4. 创建端点页面​​上,对于服务类别,选择其他端点服务

  5. 对于服务名称,输入 com.amazonaws.us-east-1.guardduty-data

    确保将 us-east-1 替换为正确的区域。该区域必须与属于您的 AWS 账户 ID 的 EKS 集群位于同一区域。

  6. 选择验证服务

  7. 成功验证服务名称后,选择集群所在的 VPC。添加以下策略,仅限指定账户使用 VPC 端点。使用此策略下面提供的组织 Condition,您可以更新以下策略来限制对端点的访问。要为组织中的特定账户 ID 提供 VPC 端点支持,请参阅 Organization condition to restrict access to your endpoint

    { "Version": "2012-10-17", "Statement": [ { "Action": "*", "Resource": "*", "Effect": "Allow", "Principal": "*" }, { "Condition": { "StringNotEquals": { "aws:PrincipalAccount": "111122223333" } }, "Action": "*", "Resource": "*", "Effect": "Deny", "Principal": "*" } ] }

    aws:PrincipalAccount 账户 ID 必须与包含 VPC 和 VPC 端点的账户匹配。以下列表显示了如何与其他 AWS 账户 ID 共享 VPC 端点:

    限制访问端点的组织条件
    • 要指定多个账户访问 VPC 端点,请将 "aws:PrincipalAccount": "111122223333" 替换为以下内容:

      "aws:PrincipalAccount": [ "666666666666", "555555555555" ]
    • 要允许组织中的所有成员访问 VPC 端点,请将 "aws:PrincipalAccount": "111122223333" 替换为以下内容:

      "aws:PrincipalOrgID": "o-abcdef0123"
    • 要限制组织 ID 的访问资源,请将您的 ResourceOrgID 添加到策略中。

      有关更多信息,请参阅 ResourceOrgID

      "aws:ResourceOrgID": "o-abcdef0123"
  8. 其他设置下,选择启用 DNS 名称

  9. 子网下,选择集群所在的子网。

  10. 安全组下,选择从 VPC(或 EKS 集群)启用了入站端口 443 的安全组。如果您还没有启用入站端口 443 的安全组,请创建安全组

    如果在限制 VPC(或集群)的入站权限时出现问题,请为来自任何 IP 地址(0.0.0.0/0)的入站 443 端口提供支持。

API/CLI
  • 调用CreateVpcEndpoint

  • 为参数使用以下值:

    • 对于服务名称,输入 com.amazonaws.us-east-1.guardduty-data

      确保将 us-east-1 替换为正确的区域。该区域必须与属于您的 AWS 账户 ID 的 EKS 集群位于同一区域。

    • 对于 DNSOptions,通过将其设置为 true 来启用私有 DNS 选项。

  • 有关信息 AWS Command Line Interface,请参阅create-vpc-endpoint

为 Amazon EKS 配置 GuardDuty 安全代理(附加组件)参数

您可以为 Amazon EKS 配置 GuardDuty 安全代理的特定参数。此支持适用于 GuardDuty 安全代理版本 1.5.0 及更高版本。有关最新插件版本的信息,请参阅GuardDuty 适用于 Amazon EKS 集群的安全代理

我为什么要更新安全代理配置架构

在 Amazon EKS 集群中的所有容器中, GuardDuty 安全代理的配置架构都是相同的。当默认值与关联的工作负载和实例大小不一致时,可以考虑配置 CPU 设置PriorityClass、内存设置和dnsPolicy设置。无论您如何管理 Amazon EKS 集群的 GuardDuty 代理,都可以配置或更新这些参数的现有配置。

使用已配置参数自动配置代理的行为

代表您 GuardDuty 管理安全代理(EKS 附加组件)时,它会根据需要更新插件。 GuardDuty 会将可配置参数的值设置为默认值。但是,您仍然可以将参数更新为所需的值。如果这导致冲突,则 ResolveCon flicts 的默认选项为。None

可配置的参数和值

有关配置插件参数的步骤的信息,请参阅:

下表提供了可用于手动部署 Amazon EKS 附加组件或更新现有插件设置的范围和值。

CPU 设置

参数

默认值

可配置范围

请求

200m

介于 200 米到 10000 米之间,两者兼而有之

限制

1000m

内存设置

参数

默认值

可配置范围

请求

256Mi

介于 256 英里和 200000 英里之间,两者兼而有之

限制

1024 英里

PriorityClass 设置

在 GuardDuty 为您创建 Amazon EKS 加载项时,分配的PriorityClassaws-guardduty-agent.priorityclass。这意味着不会根据代理窗格的优先级采取任何操作。您可以通过选择以下PriorityClass选项之一来配置此插件参数:

可配置 PriorityClass

preemptionPolicy

preemptionPolicy描述

Pod 值

aws-guardduty-agent.priorityclass

Never

无需操作

1000000

aws-guardduty-agent.priorityclass-high

PreemptLowerPriority

分配此值将抢占优先级值低于代理 pod 值的 Pod 运行。

100000000

system-cluster-critical1

PreemptLowerPriority

2000000000

system-node-critical1

PreemptLowerPriority

2000001000

1 Kubernetes 提供了这两个PriorityClass选项——和。system-cluster-critical system-node-critical有关更多信息,请参阅 Kubernetes 文档PriorityClass中的。

dnsPolicy 设置

选择以下 Kubernetes 支持的 DNS 策略选项之一。如果未指定任何配置,ClusterFirst则用作默认值。

  • ClusterFirst

  • ClusterFirstWithHostNet

  • Default

有关这些策略的信息,请参阅 Kubernet es 文档中的 Pod 的 DNS 政策

部署 GuardDuty 安全代理

本节介绍如何首次为特定 EKS 集群部署 GuardDuty 安全代理。在继续本节之前,请确保您已经为账户设置了先决条件并启用了运行时监控。如果您不启用运行时监控,则 GuardDuty安全代理(EKS 附加组件)将无法运行。

选择您的首选访问方法以首次部署 GuardDuty 安全代理。

Console
  1. 从以下位置打开 Amazon EKS 控制台:https://console.aws.amazon.com/eks/home#/clusters

  2. 选择集群名称

  3. 选择附加组件选项卡。

  4. 选择获取更多附加组件

  5. 选择插件页面上,选择 Amazon GuardDuty 运行时监控

  6. 配置选定插件设置页面上,使用默认设置。如果您的 EKS 附加组件的状态为 “需要激活”,请选择 “激活” GuardDuty。此操作将打开 GuardDuty 控制台,为您的账户配置运行时监控。

  7. 为账户配置运行时监控后,切换回 Amazon EKS 控制台。您的 EKS 插件的状态应变为准备安装

  8. (可选)提供 EKS 插件配置架构

    对于附加版本,如果您选择 v1.5.0 及更高版本,则运行时监控支持配置代理的 GuardDuty 特定参数。有关参数范围的信息,请参见配置 EKS 插件参数

    1. 展开可选配置设置以查看可配置参数及其预期值和格式。

    2. 设置参数。这些值必须在中提供的范围内配置 EKS 插件参数

    3. 选择 “保存更改”,根据高级配置创建插件。

    4. 对于冲突解决方法,当您将参数的值更新为非默认值时,将使用您选择的选项来解决冲突。有关所列选项的更多信息,请参阅《亚马逊 EKS API 参考》中的 ResolveConflicts

  9. 选择下一步

  10. 查看和创建页面上,验证所有详细信息,然后选择创建

  11. 导航回集群详细信息,然后选择资源选项卡。

  12. 您可以查看带有前缀的新窗格aws-guardduty-agent

API/CLI

您可以使用以下任一选项来配置 Amazon EKS 插件代理(aws-guardduty-agent):

  • CreateAddon为你的账户跑步。

  • 注意

    对于附加组件version,如果您选择 v1.5.0 及更高版本,则运行时监控支持配置代理的 GuardDuty 特定参数。有关更多信息,请参阅 配置 EKS 插件参数

    对请求参数使用以下值:

    • 对于 addonName,输入 aws-guardduty-agent

      在使用插件版本 1.5.0 及更高版本支持的可配置值时,可以使用以下 AWS CLI 示例。确保替换以红色突出显示的占位符值以及Example.json与配置值关联的占位符值。

      aws eks create-addon --region us-east-1 --cluster-name myClusterName --addon-name aws-guardduty-agent --addon-version v1.5.0-eksbuild.1 --configuration-values 'file://example.json'
      例 example.json
      { "priorityClassName": "aws-guardduty-agent.priorityclass-high", "dnsPolicy": "Default", "resources": { "requests": { "cpu": "237m", "memory": "512Mi" }, "limits": { "cpu": "2000m", "memory": "2048Mi" } } }
    • 有关支持的 addonVersion 的信息,请参阅 安全代理支持的 Kubernetes 版本 GuardDuty

  • 或者,你可以使用 AWS CLI。有关更多信息,请参阅创建插件

验证配置架构更新

配置完参数后,请执行以下步骤以验证配置架构是否已更新:

  1. 从以下位置打开 Amazon EKS 控制台:https://console.aws.amazon.com/eks/home#/clusters

  2. 在导航窗格中,选择集群

  3. 集群页面上,选择要验证更新的集群名称

  4. 选择资源选项卡。

  5. 从 “资源类型” 窗格的 “工作负载” 下选择DaemonSets

  6. 选择aws-guardduty-agent

  7. 在该aws-guardduty-agent页面上,选择原始视图以查看未格式化的 JSON 响应。验证可配置参数是否显示您提供的值。

验证后,切换到 GuardDuty 控制台。选择相应的, AWS 区域 然后查看您的 Amazon EKS 集群的覆盖状态。有关更多信息,请参阅 Amazon EKS 集群的覆盖范围