Amazon EKS 클러스터 적용 범위 - 아마존 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 클러스터가 있는 경우 Issue 열에 비정상 상태의 원인에 대한 추가 정보가 포함될 수 있습니다.

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개).

    • 계정과 현재 지역을 찾으려면 https://console.aws.amazon.com/guardduty/콘솔의 설정 페이지를 참조하거나 를 실행하십시오 ListDetectorsAPI. detectorId

    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/콘솔의 설정 페이지를 참조하거나 를 실행하십시오. ListDetectorsAPI

    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클러스터의 커버리지 상태가 비정상인 경우 을 참조하십시오EKS커버리지 문제 해결.

적용 범위 상태 변경 알림 구성

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

샘플 알림 스키마

EventBridge 규칙적으로 사전 정의된 샘플 이벤트와 이벤트 패턴을 사용하여 커버리지 상태 알림을 받을 수 있습니다. EventBridge 규칙 생성에 대한 자세한 내용은 Amazon EventBridge 사용 설명서의 규칙 생성을 참조하십시오.

또한 다음 예시 알림 스키마를 사용하여 사용자 지정 이벤트 패턴을 생성할 수 있습니다. 계정에 대한 값을 바꿔야 합니다. Amazon EKS 클러스터의 커버리지 상태가 에서 HealthyUnhealthy 변경될 때 알림을 받으려면 detail-type 다음을 수행해야 합니다.GuardDuty Runtime Protection Unhealthy. 커버리지 상태가 에서 Unhealthy 로 변경될 때 알림을 받으려면 의 값을 Healthy 다음으로 detail-type 바꾸십시오.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" } }

EKS커버리지 문제 해결

EKS클러스터의 커버리지 상태가 인 Unhealthy 경우 GuardDuty 콘솔의 Issue 열에서 또는 CoverageResource데이터 유형을 사용하여 해당 오류를 확인할 수 있습니다.

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

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

문제 유형(접두사)

추가 정보

권장 문제 해결 단계

애드온 생성 실패

aws-guardduty-agent애드온은 클러스터의 현재 클러스터 버전과 호환되지 않습니다.ClusterName. 지정된 애드온은 지원되지 않습니다.

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

애드온 생성 실패

애드온 업데이트 실패

애드온 상태 비정상

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 또는 Amazon ECS (AWS Fargate)) 에 대해 런타임 모니터링 및 자동 에이전트 구성을 활성화해야 합니다. 자세한 내용은 런타임 모니터링과 관련된 GuardDuty 사전 요구 사항 단원을 참조하십시오.

비공개를 DNS 활성화하려면 enableDnsSupportenableDnsHostnames VPC 속성을 모두 for로 설정해야 합니다true.vpcId (서비스: Ec2, 상태 코드:400, 요청 ID: a1b2c3d4-5678-90ab-cdef-EXAMPLE11111).

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

Amazon VPC Console https://console.aws.amazon.com/vpc/at를 사용하여 VPC Amazon을 생성하는 경우 DNS호스트 이름 활성화와 DNS 확인 활성화를 모두 선택해야 합니다. 자세한 내용은 VPC구성 옵션을 참조하십시오.

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

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

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

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

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

로컬 EKS 클러스터

EKS로컬 아웃포스트 클러스터에서는 애드온이 지원되지 않습니다.

실행 불가.

자세한 내용은 전초 EKS기지에 관한 Amazon을 AWS 참조하십시오.

EKS런타임 모니터링 활성화 권한이 부여되지 않았습니다.

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

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

  2. EKS런타임 모니터링을 전환하여 껐다가 다시 켜십시오. GuardDuty 에이전트가 자동으로 배포되든 GuardDuty 수동으로든 관계없이 배포되도록 하세요.

EKS런타임 모니터링 지원 리소스 프로비저닝 진행 중

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

실행 불가.

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

기타 (기타 문제)

인증 실패로 인한 오류

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

애드온 생성 또는 업데이트 오류

문제 해결 단계

EKS애드온 문제 -InsufficientNumberOfReplicas: 원하는 수의 복제본이 없어서 애드온이 비정상입니다.

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

근본 원인을 수정한 후 해당 단계 (애드온 생성 또는 업데이트) 를 다시 시도하세요.

EKS애드온 이슈 -AdmissionRequestDenied: 승인 웹훅이 요청을 "validate.kyverno.svc-fail" 거부함: 리소스 DaemonSet/amazon-guardduty/aws-guardduty-agent 위반에 대한 정책:::... restrict-image-registries autogen-validate-registries

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

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

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

애드온을 만들거나 업데이트할 때 충돌 OVERWRITE 해결 플래그를 제공하십시오. 이렇게 하면 쿠버네티스를 사용하여 쿠버네티스의 관련 리소스에 직접 적용한 모든 변경 사항을 덮어쓸 수 있습니다. 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 수동으로 추가해야 합니다. 에 eks:addon-cluster-admin 다음을 yaml 추가하세요.

--- 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 ---

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

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