기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Amazon EKS 클러스터의 런타임 범위 및 문제 해결
런타임 모니터링을 사용 설정하고 수동 또는 자동 에이전트 구성을 통해 EKS용 GuardDuty 보안 에이전트(애드온)를 설치한 후, EKS 클러스터에 대한 적용 범위 평가를 시작할 수 있습니다.
적용 범위 통계 검토
자체 계정 또는 멤버 계정과 연결된 EKS 클러스터의 적용 범위 통계는 선택한 AWS 리전의 모든 EKS 클러스터에 대한 정상 EKS 클러스터 비율입니다. 다음 등식은 이를 다음과 같이 나타냅니다.
(정상 클러스터/모든 클러스터)*100
액세스 방법 중 하나를 선택하여 계정의 적용 범위 통계를 검토합니다.
- Console
-
에 로그인 AWS Management Console 하고 https://console.aws.amazon.com/guardduty/ GuardDuty 콘솔을 엽니다.
-
탐색 창에서 작업 실행 모니터링을 선택합니다.
-
EKS 클러스터 실행 시간 적용 범위 탭을 선택합니다.
-
EKS 클러스터 실행 시간 적용 범위 탭에서 클러스터 목록 테이블에 제공된 적용 범위 상태별로 집계된 적용 범위 통계를 볼 수 있습니다.
-
적용 범위 상태가 비정상인 EKS 클러스터가 있는 경우 문제 열에 비정상 상태의 이유에 대한 추가 정보가 포함될 수 있습니다.
- API/CLI
-
-
자체 유효한 탐지기 ID, 리전 및 서비스 엔드포인트를 사용하여 ListCoverage API를 실행합니다. 이 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
-
GetCoverageStatistics API를 실행하여 statisticsType
을 기반으로 적용 범위 집계 통계를 검색합니다.
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 규칙을 생성하여 적용 범위 상태가 Unhealthy
에서 Healthy
등으로 변경될 때 알림을 받을 수 있습니다. 기본적으로 GuardDuty는 알림을 계정의 EventBridge 버스에 게시합니다.
샘플 알림 스키마
EventBridge 규칙에서 사전 정의된 샘플 이벤트 및 이벤트 패턴을 사용하여 적용 범위 상태 알림을 받을 수 있습니다. EventBridge 규칙 생성에 대한 자세한 내용은 Amazon EventBridge 사용 설명서의 규칙 생성을 참조하세요.
또한 다음 예시 알림 스키마를 사용하여 사용자 지정 이벤트 패턴을 생성할 수 있습니다. 계정에 대한 값을 바꿔야 합니다. Amazon EKS 클러스터의 적용 범위 상태가 Healthy
에서 Unhealthy
로 변경될 때 알림을 받으려면 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"
}
}
Amazon EKS 런타임 적용 범위 문제 해결
EKS 클러스터의 적용 범위 상태가 Unhealthy
인 경우 GuardDuty 콘솔의 문제 열에서 또는 CoverageResource 데이터 유형을 사용하여 해당되는 오류를 확인할 수 있습니다.
EKS 클러스터를 선택적으로 모니터링하기 위해 포함 또는 제외 태그를 사용하는 경우 태그 동기화에 시간이 걸릴 수 있습니다. 이는 연결된 EKS 클러스터의 적용 범위 상태에 영향을 미칠 수 있습니다. 해당 태그(포함 또는 제외)를 제거하고 다시 추가할 수 있습니다. 자세한 내용은 Amazon EKS 사용 설명서의 Amazon EKS 리소스 태깅을 참조하세요.
적용 범위 문제의 구조는 Issue type:Extra information
입니다. 일반적으로 문제에는 선택 사항으로 추가 정보가 있으며, 특정 클라이언트 측 예외 또는 문제에 대한 설명이 포함될 수 있습니다. 추가 정보에 따라 다음 표에서는 EKS 클러스터의 적용 범위 문제를 해결하기 위한 권장 단계를 제공합니다.
문제 유형(접두사) |
추가 정보 |
권장 문제 해결 단계 |
애드온 기능 생성 실패 |
추가 기능 aws-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 vpcId 에 대해 VPC 엔드포인트 생성이 지원되지 않음
|
런타임 모니터링은 이제 조직 내에서 공유 VPC 사용을 지원합니다. 계정이 모든 사전 조건을 충족하는지 확인합니다. 자세한 내용은 공유 VPC를 사용하기 위한 사전 조건 단원을 참조하십시오.
|
자동화된 에이전트 구성과 함께 공유 VPC를 사용하는 경우에만
공유 VPC vpcId 의 소유자 계정 ID 111122223333 에는 런타임 모니터링, 자동 에이전트 구성 또는 둘 다 활성화되어 있지 않습니다.
|
공유 VPC 소유자 계정은 하나 이상의 리소스 유형(Amazon EKS 또는 Amazon ECS(AWS Fargate))에 대해 런타임 모니터링 및 자동 에이전트 구성을 활성화해야 합니다. 자세한 내용은 GuardDuty 런타임 모니터링 관련 사전 조건 단원을 참조하십시오. |
프라이빗 DNS를 활성화하려면 vpcId (서비스: Ec2, 상태 코드:400, 요청 ID: a1b2c3d4-5678-90ab-cdef-EXAMPLE11111 )에 대해 enableDnsSupport 및 enableDnsHostnames VPC 속성 모두 true 로 설정되어야 합니다. |
다음 enableDnsSupport 및 enableDnsHostnames VPC 속성이 true 로 설정되어야 합니다. 자세한 내용을 알아보려면 VPC의 DNS 속성을 참조하세요.
Amazon VPC 콘솔(https://console.aws.amazon.com/vpc/)을 사용하여 Amazon VPC를 생성하는 경우 DNS 호스트 이름 활성화와 DNS 확인 활성화를 모두 선택해야 합니다. 자세한 내용은 VPC 구성 옵션을 참조하세요. |
공유 VPC 엔드포인트 삭제 실패 |
계정 ID 111122223333 , 공유 VPC vpcId , 소유자 계정 ID 555555555555 에는 공유 VPC 엔드포인트 삭제가 허용되지 않습니다. |
잠재적 단계:
-
공유 VPC 참가자 계정의 런타임 모니터링 상태를 비활성화해도 공유 VPC 엔드포인트 정책 및 소유자 계정에 존재하는 보안 그룹에는 영향을 미치지 않습니다.
공유 VPC 엔드포인트 및 보안 그룹을 삭제하려면 공유 VPC 소유자 계정에서 런타임 모니터링 또는 자동화된 에이전트 구성 상태를 비활성화해야 합니다.
-
공유 VPC 참여자 계정에서는 공유 VPC 소유자 계정에서 호스팅되는 공유 VPC 엔드포인트 및 보안 그룹을 삭제할 수 없습니다.
|
로컬 EKS 클러스터 |
EKS 추가 기능은 로컬 Outpost 클러스터에서 지원되지 않습니다. |
실행 불가.
자세한 내용은 Amazon EKS on AWS Outposts를 참조하세요.
|
EKS 런타임 모니터링 활성화 권한이 부여되지 않음 |
(추가 정보를 표시할 수도, 표시하지 않을 수도 있음) |
-
이 문제에 대한 추가 정보가 제공된 경우 근본 원인을 수정하고 다음 단계를 따릅니다.
-
EKS 런타임 모니터링을 끄고 다시 켭니다. GuardDuty를 통해 자동으로 또는 수동으로 GuardDuty 에이전트가 배포되도록 합니다.
|
EKS 런타임 모니터링 활성화 리소스 프로비저닝 진행 중 |
(추가 정보를 표시할 수도, 표시하지 않을 수도 있음) |
실행 불가.
EKS 런타임 모니터링을 활성화한 후에는 리소스 프로비저닝 단계가 완료될 때까지 적용 범위 상태가 Unhealthy 로 지속될 수 있습니다. 적용 범위 상태는 정기적으로 모니터링 및 업데이트됩니다. |
기타(기타 문제) |
인증 실패로 인한 오류 |
EKS 런타임 모니터링을 끄고 다시 켭니다. GuardDuty를 통해 자동으로 또는 수동으로 GuardDuty 에이전트가 배포되도록 합니다. |
Addon 문제 코드를 사용한 Addon 생성/업데이트 오류 문제 해결 단계
추가 기능 생성 또는 업데이트 오류 |
문제 해결 단계 |
EKS 추가 기능 문제 - InsufficientNumberOfReplicas : 원하는 복제본 수가 없기 때문에 추가 기능이 비정상입니다.
|
-
문제 메시지를 사용하여 근본 원인을 파악하고 해결할 수 있습니다. 클러스터를 설명하여 시작할 수 있습니다. 예를 들어 kubectl describe pods 를 사용하여 포드 장애의 근본 원인을 식별합니다.
근본 원인을 해결한 후 단계를 다시 시도합니다(추가 기능 생성 또는 업데이트).
-
문제가 지속되면 Amazon EKS 클러스터의 VPC 엔드포인트가 올바르게 구성되어 있는지 확인하세요. 자세한 내용은 VPC 엔드포인트 구성 검증 단원을 참조하십시오.
|
EKS 추가 기능 문제 - InsufficientNumberOfReplicas : 하나 이상의 포드가 예약된 0/x 노드를 사용할 수 없으므로 추가 기능이 비정상입니다x Insufficient cpu. preemption: not eligible due to preemptionPolicy=Never .
|
이 문제를 해결하려면 다음 중 한 가지 방법을 시도하면 됩니다.
GuardDuty는 처음 발견된 오류만 보고o/x 하므로 메시지가 표시됩니다. GuardDuty 데몬셋에서 실행 중인 실제 포드 수는 0보다 클 수 있습니다.
|
EKS 추가 기능 문제 - InsufficientNumberOfReplicas : 하나 이상의 포드가 예약된 0/x 노드를 사용할 수 없으므로 추가 기능이 비정상입니다x Too many pods. preemption: not eligible due to preemptionPolicy=Never .
|
EKS 추가 기능 문제 - InsufficientNumberOfReplicas : 하나 이상의 포드가 예약된 0/x 노드를 사용할 수 없으므로 추가 기능이 비정상입니다1 Insufficient memory. preemption: not eligible due to preemptionPolicy=Never .
|
EKS 추가 기능 문제 - InsufficientNumberOfReplicas : 하나 이상의 포드에 대기 컨테이너가 있으므로 추가 기능이 비정상입니다. CrashLoopBackOff: Completed
|
포드와 연결된 로그를 보고 문제를 식별할 수 있습니다. 이 작업을 수행하는 방법에 대한 자세한 내용은 Kubernetes 설명서의 Debug Running Pod를 참조하세요.
다음 체크리스트를 사용하여이 추가 기능 문제를 해결합니다.
-
런타임 모니터링이 활성화되어 있는지 확인합니다.
-
확인된 OS 배포 및 지원되는 Kubernetes 버전Amazon EKS 클러스터 지원을 위한 사전 조건과 같은가 충족되는지 확인합니다.
-
보안 에이전트를 수동으로 관리할 때 모든 VPC에 대해 VPCs 엔드포인트를 생성했는지 확인합니다. GuardDuty 자동 구성을 활성화해도 VPC 엔드포인트가 생성되는지 확인해야 합니다. 예를 들어 자동 구성에서 공유 VPC를 사용하는 경우입니다.
이를 검증하려면 섹션을 참조하세요VPC 엔드포인트 구성 검증.
-
GuardDuty 보안 에이전트가 GuardDuty VPC 엔드포인트 프라이빗 DNS를 확인할 수 있는지 확인합니다. 엔드포인트를 알아보려면의 엔드포인트에 대한 프라이빗 DNS 이름을 참조하세요GuardDuty 보안 에이전트 관리.
이렇게 하려면 Windows 또는 Mac에서 nslookup 도구를 사용하거나 Linux에서 dig 도구를 사용할 수 있습니다. nslookup을 사용하는 경우 us-west-2 리전을 해당 리전으로 바꾼 후 다음 명령을 사용할 수 있습니다.
nslookup guardduty-data.us-west-2 .amazonaws.com
-
GuardDuty VPC 엔드포인트 정책 또는 서비스 제어 정책이 guardduty:SendSecurityTelemetry 작업에 영향을 주지 않는지 확인합니다.
|
EKS 추가 기능 문제 - InsufficientNumberOfReplicas : 하나 이상의 포드에 대기 컨테이너가 있으므로 추가 기능이 비정상입니다. CrashLoopBackOff: Error
|
포드와 연결된 로그를 보고 문제를 식별할 수 있습니다. 이 작업을 수행하는 방법에 대한 자세한 내용은 Kubernetes 설명서의 Debug Running Pod를 참조하세요.
문제를 식별한 후 다음 체크리스트를 사용하여 문제를 해결합니다.
|
EKS 추가 문제 - AdmissionRequestDenied : 허용 웹후크 "validate.kyverno.svc-fail" 가 요청을 거부함: DaemonSet/amazon-guardduty/aws-guardduty-agent 리소스 위반 정책: restrict-image-registries: autogen-validate-registries : ... |
-
Amazon EKS 클러스터 또는 보안 관리자는 애드온 업데이트를 차단하는 보안 정책을 검토해야 합니다.
-
컨트롤러(webhook )를 비활성화하거나 컨트롤러가 Amazon EKS의 요청을 수락하도록 해야 합니다.
|
EKS 추가 기능 문제 - ConfigurationConflict : 적용하려고 할 때 충돌이 발견되었습니다. 충돌 해결 모드로 인해 계속되지 않습니다. Conflicts: DaemonSet.apps
aws-guardduty-agent -
.spec.template.spec.containers[name="aws-guardduty-agent"].image |
추가 기능을 생성하거나 업데이트할 때 OVERWRITE 충돌 해결 플래그를 제공합니다. 이렇게 하면 Kubernetes API를 사용하여 Kubernetes의 관련 리소스에 직접 수행한 모든 변경 사항을 덮어쓸 수 있습니다.
먼저 클러스터에서 Amazon EKS 추가 기능을 제거한 다음 다시 설치할 수 있습니다.
|
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 에 수동으로 추가해야 합니다. 다음 yaml 를 eks: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
|
AddonUpdationFailed: EKSAddonIssue - AccessDenied: namespaces\"amazon-guardduty\"isforbidden:User\"eks:addon-manager\"cannotpatchresource\"namespaces\"inAPIgroup\"\"inthenamespace\"amazon-guardduty\"
|
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:
[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 |
GuardDuty용 이미지 레지스트리를 승인 컨트롤러의 allowed-container-registries 에 추가합니다. 자세한 내용은의 EKS v1.8.1-eks-build.2용 ECR 리포지토리를 참조하세요Amazon ECR 리포지토리 호스팅 GuardDuty 에이전트.
|