Amazon EKS 클러스터의 런타임 범위 및 문제 해결 - Amazon GuardDuty

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Amazon EKS 클러스터의 런타임 범위 및 문제 해결

런타임 모니터링을 활성화하고 EKS 수동 또는 자동 에이전트 구성을 통해 GuardDuty 보안 에이전트(추가 기능)를 설치한 후 EKS 클러스터의 적용 범위 평가를 시작할 수 있습니다.

적용 범위 통계 검토

자체 계정 또는 멤버 계정과 연결된 EKS 클러스터의 적용 범위 통계는 선택한 의 모든 EKS 클러스터에 대한 정상 EKS 클러스터의 백분율입니다 AWS 리전. 다음 등식은 이를 다음과 같이 나타냅니다.

(정상 클러스터/모든 클러스터)*100

액세스 방법 중 하나를 선택하여 계정의 적용 범위 통계를 검토합니다.

Console
  • 에 로그인 AWS Management Console 하고 에서 GuardDuty 콘솔을 엽니다https://console.aws.amazon.com/guardduty/.

  • 탐색 창에서 런타임 모니터링을 선택합니다.

  • EKS 클러스터 런타임 적용 범위 탭을 선택합니다.

  • EKS 클러스터 런타임 적용 범위 탭에서 클러스터 목록 테이블에서 사용할 수 있는 적용 범위 상태로 집계된 적용 범위 통계를 볼 수 있습니다.

    • 다음 열을 기준으로 클러스터 목록 테이블을 필터링할 수 있습니다.

      • 클러스터 이름

      • 계정 ID

      • 에이전트 관리 유형

      • 적용 범위 상태

      • 추가 기능 버전

  • EKS 클러스터 중 하나라도 적용 범위 상태가 비정상 인 경우 문제 열에는 비정상 상태 이유에 대한 추가 정보가 포함될 수 있습니다.

API/CLI
  • 고유한 유효한 탐지기 ID, 리전 및 서비스 엔드포인트ListCoverageAPI로 를 실행합니다. 이 를 사용하여 클러스터 목록을 필터링하고 정렬할 수 있습니다API.

    • CriterionKey에 대한 다음 옵션 중 하나를 사용하여 예시 filter-criteria를 변경할 수 있습니다.

      • ACCOUNT_ID

      • CLUSTER_NAME

      • RESOURCE_TYPE

      • COVERAGE_STATUS

      • ADDON_VERSION

      • MANAGEMENT_TYPE

    • 다음 옵션을 사용하여 sort-criteria에서 예시 AttributeName을 변경할 수 있습니다.

      • ACCOUNT_ID

      • CLUSTER_NAME

      • COVERAGE_STATUS

      • ISSUE

      • ADDON_VERSION

      • UPDATED_AT

    • 를 변경할 수 있습니다.max-results (최대 50).

    • 계정 및 현재 리전에 detectorId 대한 를 찾으려면 https://console.aws.amazon.com/guardduty/ 콘솔의 설정 페이지를 참조하거나 ListDetectors API.

    aws guardduty --region us-east-1 list-coverage --detector-id 12abc34d567e8fa901bc2d34e56789f0 --sort-criteria '{"AttributeName": "EKS_CLUSTER_NAME", "OrderBy": "DESC"}' --filter-criteria '{"FilterCriterion":[{"CriterionKey":"ACCOUNT_ID", "FilterCondition":{"EqualsValue":"111122223333"}}] }' --max-results 5
  • 를 실행GetCoverageStatisticsAPI하여 를 기반으로 적용 범위 집계 통계를 검색합니다statisticsType.

    • 다음 옵션 중 하나를 사용하여 예시 statisticsType을 변경할 수 있습니다.

      • COUNT_BY_COVERAGE_STATUS - 적용 범위 상태로 집계된 EKS 클러스터의 적용 범위 통계를 나타냅니다.

      • COUNT_BY_RESOURCE_TYPE - 목록의 AWS 리소스 유형에 따라 집계된 적용 범위 통계입니다.

      • 명령에서 예시 filter-criteria를 변경할 수 있습니다. CriterionKey에 대해 다음 옵션을 사용할 수 있습니다.

        • ACCOUNT_ID

        • CLUSTER_NAME

        • RESOURCE_TYPE

        • COVERAGE_STATUS

        • ADDON_VERSION

        • MANAGEMENT_TYPE

    • 계정 및 현재 리전에 detectorId 대한 를 찾으려면 https://console.aws.amazon.com/guardduty/ 콘솔의 설정 페이지를 참조하거나 ListDetectors API.

    aws guardduty --region us-east-1 get-coverage-statistics --detector-id 12abc34d567e8fa901bc2d34e56789f0 --statistics-type COUNT_BY_COVERAGE_STATUS --filter-criteria '{"FilterCriterion":[{"CriterionKey":"ACCOUNT_ID", "FilterCondition":{"EqualsValue":"123456789012"}}] }'

EKS 클러스터의 적용 범위 상태가 비정상인 경우 섹션을 참조하세요Amazon EKS 런타임 적용 범위 문제 해결.

알림을 통한 EventBridge 보장 상태 변경

계정에 있는 EKS 클러스터의 적용 범위 상태는 비정상 으로 표시될 수 있습니다. 적용 범위 상태가 비정상이 된 시점을 탐지하려면 주기적으로 적용 범위 상태를 모니터링하고 상태가 비정상인 경우 문제를 해결하는 것이 좋습니다. 또는 Amazon EventBridge 규칙을 생성하여 적용 범위 상태가 에서 Healthy 또는 로 변경되는 경우 이를 알릴 Unhealthy 수 있습니다. 기본적으로 는 계정의 EventBridge 버스에 이를 GuardDuty 게시합니다.

샘플 알림 스키마

EventBridge 규칙에서 사전 정의된 샘플 이벤트 및 이벤트 패턴을 사용하여 적용 범위 상태 알림을 받을 수 있습니다. EventBridge 규칙 생성에 대한 자세한 내용은 Amazon EventBridge 사용 설명서규칙 생성을 참조하세요.

또한 다음 예시 알림 스키마를 사용하여 사용자 지정 이벤트 패턴을 생성할 수 있습니다. 계정에 대한 값을 바꿔야 합니다. Amazon EKS 클러스터의 적용 범위 상태가 에서 Healthy로 변경될 때 알림을 받으려면 Unhealthydetail-typeGuardDuty Runtime Protection Unhealthy. 적용 범위 상태가 에서 Unhealthy로 변경될 때 알림을 받으려면 의 값을 detail-typeHealthy바꿉니다.GuardDuty Runtime Protection Healthy.

{ "version": "0", "id": "event ID", "detail-type": "GuardDuty Runtime Protection Unhealthy", "source": "aws.guardduty", "account": "AWS 계정 ID", "time": "event timestamp (string)", "region": "AWS 리전", "resources": [ ], "detail": { "schemaVersion": "1.0", "resourceAccountId": "string", "currentStatus": "string", "previousStatus": "string", "resourceDetails": { "resourceType": "EKS", "eksClusterDetails": { "clusterName": "string", "availableNodes": "string", "desiredNodes": "string", "addonVersion": "string" } }, "issue": "string", "lastUpdatedAt": "timestamp" } }

Amazon EKS 런타임 적용 범위 문제 해결

EKS 클러스터의 적용 범위 상태가 인 경우 GuardDuty 콘솔의 문제 열에서 또는 CoverageResource 데이터 유형을 사용하여 해당 오류를 볼 Unhealthy수 있습니다.

EKS 클러스터를 선택적으로 모니터링하기 위해 포함 또는 제외 태그를 사용하는 경우 태그가 동기화되는 데 시간이 걸릴 수 있습니다. 이는 연결된 EKS 클러스터의 적용 범위에 영향을 미칠 수 있습니다. 해당 태그(포함 또는 제외)를 제거하고 다시 추가할 수 있습니다. 자세한 내용은 Amazon 사용 설명서의 Amazon EKS 리소스 태그 지정을 참조하세요. EKS

적용 범위 문제의 구조는 Issue type:Extra information입니다. 일반적으로 문제에는 선택 사항으로 추가 정보가 있으며, 특정 클라이언트 측 예외 또는 문제에 대한 설명이 포함될 수 있습니다. 추가 정보 에 따라 다음 표는 EKS 클러스터의 적용 범위 문제를 해결하기 위한 권장 단계를 제공합니다.

문제 유형(접두사)

추가 정보

권장 문제 해결 단계

추가 기능 생성 실패

Addonaws-guardduty-agent은 클러스터의 현재 클러스터 버전과 호환되지 않습니다.ClusterName. 지정된 추가 기능은 지원되지 않습니다.

aws-guardduty-agent EKS 추가 기능 배포를 지원하는 Kubernetes 버전 중 하나를 사용하고 있는지 확인하세요. 자세한 내용은 GuardDuty 보안 에이전트에서 지원하는 Kubernetes 버전 단원을 참조하십시오. Kubernetes 버전 업데이트에 대한 자세한 내용은 Amazon EKS 클러스터 Kubernetes 버전 업데이트를 참조하세요.

추가 기능 생성 실패

추가 업데이트 실패

애드온 상태 비정상

EKS 추가 기능 문제 - AddonIssueCode: AddonIssueMessage

특정 추가 기능 문제 코드의 권장 단계에 대한 자세한 내용은 섹션을 참조하세요Troubleshooting steps for Addon creation/updatation error with Addon issue code.

이 문제에서 발생할 수 있는 추가 기능 문제 코드 목록은 섹션을 참조하세요AddonIssue.

VPC 엔드포인트 생성 실패

VPC 공유에 대해 지원되지 않는 엔드포인트 생성 VPC vpcId

런타임 모니터링은 이제 조직 VPC 내에서 공유된 의 사용을 지원합니다. 계정이 모든 사전 조건을 충족하는지 확인합니다. 자세한 내용은 공유 사용을 위한 사전 조건 VPC 단원을 참조하십시오.

자동화된 에이전트 구성VPC과 공유된 를 사용하는 경우에만

소유자 계정 ID 111122223333 공유용 VPC vpcId 에는 런타임 모니터링, 자동 에이전트 구성 또는 둘 다 활성화되어 있지 않습니다.

공유 VPC 소유자 계정은 하나 이상의 리소스 유형(Amazon EKS 또는 AmazonECS(AWS Fargate))에 대해 런타임 모니터링 및 자동 에이전트 구성을 활성화해야 합니다. 자세한 내용은 GuardDuty 런타임 모니터링 관련 사전 조건 단원을 참조하십시오.

프라이빗을 활성화DNS하려면 에 대해 enableDnsSupportenableDnsHostnames VPC 속성을 로 설정해야 true 합니다.vpcId (서비스: Ec2, 상태 코드:400, 요청 ID: a1b2c3d4-5678-90ab-cdef-EXAMPLE11111).

다음 VPC 속성이 true - enableDnsSupport 및 로 설정되어 있는지 확인합니다enableDnsHostnames. 자세한 내용은 DNS 의 속성을 참조하세요VPC.

에서 Amazon VPC 콘솔https://console.aws.amazon.com/vpc/을 사용하여 Amazon 를 생성하는 경우 DNS 호스트 이름 활성화 DNS 해상도 활성화를 모두 선택해야 VPC합니다. 자세한 내용은 VPC 구성 옵션 섹션을 참조하세요.

공유 VPC 엔드포인트 삭제 실패

계정 ID에는 공유 VPC 엔드포인트 삭제가 허용되지 않습니다.111122223333, 공유됨 VPC vpcId, 소유자 계정 ID 555555555555.

잠재적 단계:
  • 공유 VPC 참가자 계정의 런타임 모니터링 상태를 비활성화해도 공유 VPC 엔드포인트 정책 및 소유자 계정에 있는 보안 그룹에는 영향을 주지 않습니다.

    공유 VPC 엔드포인트 및 보안 그룹을 삭제하려면 공유 VPC 소유자 계정에서 런타임 모니터링 또는 자동 에이전트 구성 상태를 비활성화해야 합니다.

  • 공유 VPC 참가자 계정은 공유 VPC 소유자 계정에서 호스팅되는 공유 VPC 엔드포인트 및 보안 그룹을 삭제할 수 없습니다.

로컬 EKS 클러스터

EKS 로컬 Outpost 클러스터에서는 추가 기능이 지원되지 않습니다.

실행 불가.

자세한 내용은 Amazon EKS on AWS outposts를 참조하세요.

EKS 런타임 모니터링 활성화 권한이 부여되지 않음

(추가 정보를 표시할 수도, 표시하지 않을 수도 있음)

  1. 이 문제에 대한 추가 정보가 제공된 경우 근본 원인을 수정하고 다음 단계를 따릅니다.

  2. EKS 런타임 모니터링을 토글하여 껐다가 다시 켭니다. 에이전트도 자동으로 GuardDuty 경유하든 수동으로 배포되는지 확인합니다 GuardDuty.

EKS 런타임 모니터링 활성화 리소스 프로비저닝 진행 중

(추가 정보를 표시할 수도, 표시하지 않을 수도 있음)

실행 불가.

EKS 런타임 모니터링을 활성화한 후 리소스 프로비저닝 단계가 완료될 Unhealthy 때까지 적용 범위 상태가 유지될 수 있습니다. 적용 범위 상태는 정기적으로 모니터링 및 업데이트됩니다.

기타(기타 문제)

권한 부여 실패로 인한 오류

EKS 런타임 모니터링을 토글하여 껐다가 다시 켭니다. GuardDuty 에이전트도 GuardDuty 자동으로 또는 수동으로 배포되는지 확인합니다.

추가 기능 생성 또는 업데이트 오류

문제 해결 단계

EKS 추가 기능 문제 - InsufficientNumberOfReplicas: 원하는 복제본 수가 없기 때문에 추가 기능이 비정상입니다.

  • 문제 메시지를 사용하여 근본 원인을 식별하고 수정할 수 있습니다. 클러스터를 설명하여 시작할 수 있습니다. 예를 들어 kubectl describe pods를 사용하여 포드 장애의 근본 원인을 식별합니다.

    근본 원인을 해결한 후 단계를 다시 시도합니다(추가 기능 생성 또는 업데이트).

  • 문제가 지속되면 Amazon EKS 클러스터의 VPC 엔드포인트가 올바르게 구성되었는지 확인합니다. 자세한 내용은 VPC 엔드포인트 구성 검증 단원을 참조하십시오.

EKS 추가 문제 - AdmissionRequestDenied: 허용 웹후크가 요청을 "validate.kyverno.svc-fail" 거부함: DaemonSet/amazon-guardduty/aws-guardduty-agent 리소스 위반 정책: restrict-image-registries: autogen-validate-registries: ...

  1. Amazon EKS 클러스터 또는 보안 관리자는 Addon 업데이트를 차단하는 보안 정책을 검토해야 합니다.

  2. 컨트롤러(webhook)를 비활성화하거나 컨트롤러가 Amazon 의 요청을 수락하도록 해야 합니다EKS.

EKS 추가 문제 - ConfigurationConflict: 적용하려고 할 때 충돌이 발견되었습니다. 충돌 해결 모드로 인해 계속되지 않습니다. Conflicts: DaemonSet.apps aws-guardduty-agent - .spec.template.spec.containers[name="aws-guardduty-agent"].image

추가 기능을 생성하거나 업데이트할 때 충돌 OVERWRITE 해결 플래그를 제공합니다. 이렇게 하면 Kubernetes 를 사용하여 Kubernetes의 관련 리소스에 직접 적용된 변경 사항을 덮어쓸 수 있습니다API.

먼저 추가 기능을 삭제한 다음 다시 설치할 수 있습니다.

EKS 추가 기능 문제 - AccessDenied: priorityclasses.scheduling.k8s.io "aws-guardduty-agent.priorityclass" is forbidden: User "eks:addon-manager" cannot patch resource "priorityclasses" in API group "scheduling.k8s.io" at the cluster scope

누락된 권한을 에 eks:addon-cluster-admin ClusterRoleBinding 수동으로 추가해야 합니다. 에 다음을 추가합니다yamleks:addon-cluster-admin.

--- kind: ClusterRoleBinding apiVersion: rbac.authorization.k8s.io/v1 metadata: name: eks:addon-cluster-admin subjects: - kind: User name: eks:addon-manager apiGroup: rbac.authorization.k8s.io roleRef: kind: ClusterRole name: cluster-admin apiGroup: rbac.authorization.k8s.io ---

이제 다음 명령을 사용하여 Amazon EKS 클러스터에 적용할 수 yaml 있습니다.

kubectl apply -f eks-addon-cluster-admin.yaml

EKS 추가 기능 문제 - AccessDenied: admission webhook "validation.gatekeeper.sh" denied the request: [all-namespace-must-have-label-owner] All namespaces must have an `owner` label

컨트롤러를 비활성화하거나 컨트롤러가 Amazon EKS 클러스터의 요청을 수락하도록 해야 합니다.

추가 기능을 생성하거나 업데이트하기 전에 GuardDuty 네임스페이스를 생성하고 레이블을 지정할 수도 있습니다owner.

EKS 추가 기능 문제 - AccessDenied: admission webhook "validation.gatekeeper.sh" denied the request: [allowed-container-registries] container <aws-guardduty-agent> has an invalid image registry

에 지정된 대로 리전의 레지스트리에 액세스하도록 허용 컨트롤러 웹후크를 명시적으로 허용해야 합니다EKS 에이전트 버전 1.6.0 이상의 리포지토리.