Security Command Center 오류 해결

이 페이지에서는 SCC 오류를 해결하기 위한 참조 가이드 및 기술 목록을 제공합니다.

시작하기 전에

발견 항목을 보거나 편집하고, Google Cloud 리소스를 액세스 또는 수정하려면 적합한 Identity and Access Management(IAM) 역할이 필요합니다. Google Cloud 콘솔에서 Security Command Center에 액세스할 때 권한 오류가 발생하면 관리자에게 지원을 요청하세요. 역할에 대한 자세한 내용은 액세스 제어를 참조하세요. 리소스 오류를 해결하려면 영향을 받는 제품 관련 문서를 참조하세요.

Google Cloud 콘솔에서 발견 항목 검토

SCC 오류는 Security Command Center가 예상대로 작동하지 못하게 막는 구성 오류입니다. Security Command Center 소스에서 이러한 발견 항목을 생성합니다.

Security Command Center가 조직에 설정되어 있거나 프로젝트 오류를 감지할 때마다 오류 발견 항목을 생성합니다. Google Cloud 콘솔에서 SCC 오류를 열람할 수 있습니다.

Google Cloud 콘솔에서 발견 항목을 검토하려면 다음 절차를 따르세요.

  1. Google Cloud 콘솔에서 Security Command Center 발견 항목 페이지로 이동합니다.

    발견 항목으로 이동

  2. Google Cloud 프로젝트 또는 조직을 선택합니다.

    프로젝트 선택기

  3. 빠른 필터 섹션의 소스 표시 이름 하위 섹션에서 Security Command Center를 선택합니다.

  4. 특정 발견 항목의 세부정보를 보려면 Category에서 '발견 항목 이름'을 클릭합니다. 발견 항목 세부정보 창이 확장되어 다음이 포함된 정보가 표시됩니다.

    • AI 생성 요약미리보기: 발견된 문제에 대한 동적으로 생성된 설명
    • 설명: 감지된 오류에 대한 간략한 설명
    • 이벤트 시간: 발견 항목이 발생한 시간
    • 리소스 표시 이름: 영향을 받은 리소스
    • 다음 단계: 오류 해결 방법에 대한 안내
    • 발견 항목 표준 이름: 발견 항목의 고유 식별자입니다.
    • 소스 표시 이름: Security Command Center
  5. 선택사항: 발견 항목의 전체 JSON 정의를 보려면 JSON 탭을 클릭합니다.

    창에 발견 항목의 모든 JSON 속성을 검사할 수 있는 발견 항목의 JSON 정의가 표시됩니다.

해결 후 SCC 오류 비활성화

SCC error 발견 항목을 해결한 후 Security Command Center는 다음 스캔 중에 발견 항목 상태를 INACTIVE로 자동으로 설정합니다. Security Command Center에서 구제 조치 발견 항목의 상태를 INACTIVE로 설정하는 데 걸리는 시간은 발견 항목을 수정할 때와 오류를 감지하는 스캔 일정에 따라 다릅니다.

SCC error 발견 항목의 스캔 빈도에 대한 자세한 내용은 오류 감지기의 발견 항목 요약을 참조하세요.

SCC 오류 해결

이 섹션에는 모든 SCC 오류의 해결 방법에 대한 안내가 포함되어 있습니다.

API disabled

API의 카테고리 이름: API_DISABLED

프로젝트에서 다음 서비스 중 하나가 중지되었습니다.

중지된 서비스는 발견 항목을 생성할 수 없습니다.

이 발견 항목을 해결하려면 다음 단계를 수행합니다.

  1. 발견 항목을 검토하여 중지된 API를 확인합니다.
  2. API를 사용 설정합니다.

이 발견 항목 유형의 지원되는 애셋 및 스캔 설정에 대해 알아봅니다.

APS no resource value configs match any resources

API의 카테고리 이름: APS_NO_RESOURCE_VALUE_CONFIGS_MATCH_ANY_RESOURCES

리소스 값 구성이 공격 경로 시뮬레이션에 정의되지만 사용자 환경의 어떤 리소스 인스턴스와도 일치하지 않습니다. 이 시뮬레이션에서는 기본 고가치 리소스 세트를 대신 사용합니다.

리소스 값 구성은 Google Cloud 콘솔의 발견 항목 설명에서 식별되는 다음과 같은 이유로 리소스와 일치하지 않을 수 있습니다.

  • 리소스 값 구성 중에 리소스 인스턴스와 일치하는 구성이 없습니다.
  • NONE을 지정하는 하나 이상의 리소스 값 구성이 다른 모든 유효한 구성을 재정의합니다.
  • 정의된 모든 리소스 값 구성에서 NONE 값을 지정합니다.

이 발견 항목을 해결하려면 다음 단계를 수행합니다.

  1. Security Command Center 설정공격 경로 시뮬레이션 페이지로 이동합니다.

    설정으로 이동

  2. 조직을 선택합니다. 기존 구성이 표시된 공격 경로 시뮬레이션 페이지가 열립니다.

  3. 리소스 값 구성 목록의 리소스 값 열에서 None의 값을 확인합니다.

  4. None을 지정한 구성의 경우 다음을 수행합니다.

    1. 리소스 값 구성 이름을 클릭하여 구성 사양을 표시합니다.

    2. 필요한 경우 리소스 속성 사양을 수정하여 구성과 일치하는 리소스 인스턴스 수를 줄입니다.

  5. 지나치게 광범위한 None 사양으로 인해 문제가 발생하지 않는 경우 다음을 수행하세요.

    1. HIGH, MEDIUM 또는 LOW 값을 지정하는 각 구성의 이름을 클릭하여 리소스 속성 사양을 표시합니다.

    2. 구성을 검토하고 필요에 따라 수정하여 범위, 리소스 유형, 태그 또는 라벨 사양을 원하는 리소스와 일치하도록 수정합니다.

  6. 필요한 경우 새 리소스 값 구성을 만듭니다.

변경사항은 다음 공격 경로 시뮬레이션에 적용됩니다.

이 발견 항목 유형의 지원되는 애셋 및 스캔 설정에 대해 알아봅니다.

APS resource value assignment limit exceeded

API의 카테고리 이름: APS_RESOURCE_VALUE_ASSIGNMENT_LIMIT_EXCEEDED

마지막 공격 경로 시뮬레이션에서 리소스 값 구성으로 식별된 고가치 리소스 인스턴스의 수가 고가치 리소스 세트의 리소스 인스턴스 한도인 1,000개를 초과했습니다. 따라서 Security Command Center가 고가치 리소스 세트에서 초과된 인스턴스 수를 제외했습니다.

이 발견 항목을 해결하려면 다음 작업을 수행하면 됩니다.

  • 태그 또는 라벨을 사용하여 지정된 리소스 유형 또는 지정된 범위 내에서 일치하는 항목 수를 줄입니다. 태그 또는 라벨이 리소스 값 구성과 일치하려면 먼저 이를 리소스 인스턴스에 적용해야 합니다.
  • 다른 구성에 지정된 리소스의 하위 집합에 NONE리소스 값을 할당하는 리소스 값 구성을 만듭니다. NONE 값을 지정하면 다른 구성이 재정의되고 고가치 리소스 세트에서 리소스 인스턴스가 제외됩니다.
  • 리소스 값 구성에서 범위 리소스 속성 사양을 줄입니다.
  • LOW 값을 할당하는 리소스 값 구성을 삭제합니다.

리소스 값 구성 만들기, 수정 또는 삭제에 대한 안내는 고가치 리소스 세트 정의 및 관리를 참조하세요.

이 발견 항목 유형의 지원되는 애셋 및 스캔 설정에 대해 알아봅니다.

GKE service account missing permissions

API의 카테고리 이름: GKE_SERVICE_ACCOUNT_MISSING_PERMISSIONS

클러스터의 GKE 기본 서비스 계정에 권한이 누락되어 Container Threat Detection에서 Google Kubernetes Engine 클러스터의 발견 항목을 생성할 수 없습니다. 그로 인해 클러스터에서 Container Threat Detection이 성공적으로 사용 설정되지 않습니다.

이 발견 항목을 해결하려면 GKE 기본 서비스 계정을 복원하고 서비스 계정에 Kubernetes Engine 서비스 에이전트(roles/container.serviceAgent) 역할이 있는지 확인합니다.

이 발견 항목 유형의 지원되는 애셋 및 스캔 설정에 대해 알아봅니다.

KTD blocked by admission controller

API의 카테고리 이름: KTD_BLOCKED_BY_ADMISSION_CONTROLLER

서드 파티 승인 컨트롤러가 필수 Kubernetes DaemonSet 객체 배포를 차단하므로 클러스터에서 Container Threat Detection을 사용 설정할 수 없습니다.

이 발견 항목을 해결하려면 클러스터에서 실행 중인 허용 컨트롤러가 Container Threat Detection이 필요한 Kubernetes 객체를 만들 수 있는지 확인하세요.

허용 컨트롤러 확인

클러스터의 허용 컨트롤러가 Container Threat Detection DaemonSet 객체 배포를 거부하는지 확인합니다.

  1. Google Cloud 콘솔의 발견 항목 세부정보의 발견 항목 설명에서 Kubernetes에 포함된 오류 메시지를 검토합니다. Kubernetes 오류 메시지는 다음 메시지와 유사합니다.

    generic::failed_precondition: incompatible admission webhook:
    admission webhook "example.webhook.sh" denied the request:
    [example-constraint] you must provide labels: {"example-required-label"}.
    
  2. 클러스터가 포함된 프로젝트의 관리자 활동 Cloud 감사 로그에서 발견 항목 세부정보의 설명 필드에 표시된 오류 메시지를 찾습니다.

  3. 허용 컨트롤러가 작동하지만 Container Threat Detection DaemonSet 객체의 배포를 거부하는 경우 Container Threat Detection용 Google 관리 서비스 계정kube-system 네임스페이스의 객체를 관리할 수 있도록 허용 컨트롤러를 구성하세요.

    Container Threat Detection의 서비스 계정에서 특정 Kubernetes 객체를 관리할 수 있어야 합니다.

Container Threat Detection에서 허용 컨트롤러를 사용하는 방법에 대한 자세한 내용은 PodSecurityPolicy 및 허용 컨트롤러를 참조하세요.

해결 확인

오류를 수정하면 Security Command Center에서 자동으로 Container Threat Detection을 사용 설정하려고 시도합니다. 사용 설정이 완료될 때까지 기다린 후 다음 단계를 수행하여 Container Threat Detection이 활성 상태인지 확인할 수 있습니다.

  1. 콘솔에서 Kubernetes Engine 워크로드 페이지로 이동합니다.

    Kubernetes 워크로드로 이동

  2. 필요한 경우 시스템 워크로드 표시를 선택합니다.

  3. 워크로드 페이지에서 먼저 클러스터 이름을 기준으로 워크로드를 필터링합니다.

  4. container-watcher 워크로드를 찾습니다. container-watcher가 있고 상태가 OK로 표시되면 Container Threat Detection이 활성 상태입니다.

KTD image pull failure

API의 카테고리 이름: KTD_IMAGE_PULL_FAILURE

Container Registry 이미지 호스트인 gcr.io에서 필요한 컨테이너 이미지를 가져오거나 다운로드할 수 없으므로 클러스터에서 Container Threat Detection을 사용 설정할 수 없습니다.

컨테이너 이미지 가져오기 또는 다운로드는 여러 이유로 실패할 수 있습니다.

다음을 확인하세요.

  • VPC 네트워크, DNS, 방화벽 설정이 클러스터에서 gcr.io 이미지 호스트로의 네트워크 액세스를 차단하지 않는지 확인합니다.
  • 클러스터가 비공개인 경우 gcr.io 이미지 호스트에 대한 액세스를 허용하도록 비공개 Google 액세스가 사용 설정되어 있는지 확인합니다.
  • 네트워크 설정 또는 비공개 Google 액세스가 실패의 원인이 아닌 경우 ImagePullBackOff 및 ErrImagePull 오류의 GKE 문제 해결 문서를 참조하세요.

이 발견 항목 유형의 지원되는 애셋 및 스캔 설정에 대해 알아봅니다.

KTD service account missing permissions

API의 카테고리 이름: KTD_SERVICE_ACCOUNT_MISSING_PERMISSIONS

Google Cloud 콘솔의 발견 항목 세부정보에서 식별된 Container Threat Detection 서비스 계정에 필요한 권한이 없습니다. 모든 또는 일부 Container Threat Detection 발견 항목은 Security Command Center로 전송되지 않습니다.

이 발견 항목을 해결하려면 다음 단계를 수행합니다.

  1. 서비스 계정에 Container Threat Detection 서비스 에이전트 역할(roles/containerthreatdetection.serviceAgent)을 부여합니다. 자세한 내용은 단일 역할 부여를 참조하세요.

    또는 커스텀 역할을 사용하려면 Container Threat Detection 서비스 에이전트 역할의 권한이 있는지 확인합니다.

  2. 서비스 계정이 Container Threat Detection 서비스 에이전트 역할의 권한을 사용하지 못하도록 하는 IAM 거부 정책이 없는지 확인합니다. 액세스를 차단하는 거부 정책이 있으면 거부 정책에 서비스 계정을 예외 주 구성원으로 추가합니다.

Container Threat Detection 서비스 계정과 필요한 역할 및 권한에 대한 자세한 내용은 다음을 참조하세요.

이 발견 항목 유형의 지원되는 애셋 및 스캔 설정에 대해 알아봅니다.

Misconfigured Cloud Logging Export

API의 카테고리 이름: MISCONFIGURED_CLOUD_LOGGING_EXPORT

Cloud Logging으로 지속적 내보내기에 구성된 프로젝트를 사용할 수 없습니다. 따라서 Security Command Center에서 발견 항목을 Logging으로 전송할 수 없습니다.

이 발견 항목을 해결하려면 다음 중 하나를 수행합니다.

이 발견 항목 유형의 지원되는 애셋 및 스캔 설정에 대해 알아봅니다.

VPC Service Controls Restriction

API의 카테고리 이름: VPC_SC_RESTRICTION

프로젝트가 서비스 경계로 보호되기 때문에 Security Health Analytics는 프로젝트의 특정 발견 항목을 생성할 수 없습니다. 사용자는 Security Command Center 서비스 계정에 서비스 경계에 대한 인바운드 액세스 권한을 부여해야 합니다.

서비스 계정 식별자는 다음 형식의 이메일 주소입니다.

service-RESOURCE_KEYWORD-RESOURCE_ID@security-center-api.iam.gserviceaccount.com

다음을 바꿉니다.

  • RESOURCE_KEYWORD: 서비스 계정을 소유하는 리소스에 따라 키워드 org 또는 project
  • RESOURCE_ID: 다음 중 하나
    • 조직에서 서비스 계정을 소유한 경우의 조직 ID
    • 프로젝트에서 서비스 계정을 소유하는 경우의 프로젝트 번호

조직 수준 서비스와 프로젝트 수준 서비스 계정이 모두 있는 경우 두 계정 모두에 해결 조치를 적용합니다.

이 발견 항목을 해결하려면 다음 단계를 수행합니다.

1단계: Security Health Analytics를 차단하는 서비스 경계 확인

  1. VPC 서비스 제어 고유 ID와 발견 항목과 연관된 프로젝트 ID를 가져옵니다.
    1. 발견 항목의 세부정보를 보려면 해당 카테고리 이름을 클릭합니다.
    2. 설명 필드에서 VPC 서비스 제어 고유 ID(예: 5e4GI409D6BTWfOp_6C-uSwmTpOQWcmW82sfZW9VIdRhGO5pXyCJPQ)를 복사합니다.
    3. 리소스 경로 필드에서 프로젝트 ID를 복사합니다.
  2. 액세스 정책 ID 및 서비스 경계 이름을 가져옵니다.

    1. Google Cloud 콘솔에서 로그 탐색기 페이지로 이동합니다.

      로그 탐색기로 이동

    2. 툴바에서 발견 항목과 연결된 프로젝트를 선택합니다.

      프로젝트 선택기

    3. 검색창에 오류의 고유 ID를 입력합니다.

      오류 UID로 검색

      오류가 쿼리 결과에 표시되지 않으면 히스토그램에서 타임라인을 확장한 후 쿼리를 다시 실행하세요.

    4. 표시되는 오류를 클릭합니다.

    5. 중첩 필드 확장을 클릭합니다.

    6. servicePerimeterName 필드 값을 복사합니다. 값의 형식은 다음과 같습니다.

      accessPolicies/ACCESS_POLICY/servicePerimeters/SERVICE_PERIMETER

      이 예시에서 서비스 경계의 전체 리소스 이름은 accessPolicies/540107806624/servicePerimeters/vpc_sc_misconfigured입니다.

      • ACCESS_POLICY: 액세스 정책 ID(예: 540107806624)
      • SERVICE_PERIMETER: 서비스 경계의 이름(예: vpc_sc_misconfigured)

      서비스 경계의 전체 리소스 이름

    7. 액세스 정책 ID에 해당하는 표시 이름을 가져오려면 gcloud CLI를 사용합니다.

      조직 수준의 쿼리를 실행할 수 없으면 이 단계를 수행하도록 관리자에게 요청하세요.

      gcloud access-context-manager policies list --organization ORGANIZATION_ID
      

      ORGANIZATION_ID를 조직의 숫자 ID로 바꿉니다.

      다음과 비슷한 출력이 표시됩니다.

      NAME          ORGANIZATION  SCOPES                 TITLE           ETAG
      540107806624  549441802605                         default policy  2a9a7e30cbc14371
      352948212018  549441802605  projects/393598488212  another_policy  d7b47a9ecebd4659

      표시 이름은 액세스 정책 ID에 해당하는 제목입니다. 액세스 정책의 표시 이름과 서비스 경계의 이름을 기록해 둡니다. 다음 섹션에서 필요합니다.

2단계: 프로젝트에 대해 액세스를 부여하는 인그레스 규칙 만들기

이 섹션에서는 VPC 서비스 제어에 대한 조직 수준의 액세스 권한이 있어야 합니다. 조직 수준의 액세스 권한이 없으면 관리자에게 이 단계를 수행하도록 요청합니다.

다음 단계에서는 1단계에서 식별한 서비스 경계에 대해 인그레스 규칙을 만듭니다.

서비스 계정에 서비스 경계에 대한 인바운드 액세스 권한을 부여하려면 다음 단계를 수행합니다.

  1. VPC 서비스 제어로 이동합니다.

    VPC 서비스 제어로 이동

  2. 툴바에서 Google Cloud 조직을 선택합니다.

    프로젝트 선택기

  3. 드롭다운 목록에서 액세스 권한을 부여할 서비스 경계가 포함된 액세스 정책을 선택합니다.

    액세스 정책 목록

    액세스 정책과 연결된 서비스 경계가 목록에 표시됩니다.

  4. 서비스 경계 이름을 클릭합니다.

  5. 경계 수정을 클릭합니다.

  6. 탐색 메뉴에서 인그레스 정책을 클릭합니다.

  7. 규칙 추가를 클릭합니다.

  8. 다음과 같이 규칙을 구성합니다.

    API 클라이언트의 FROM 속성

    1. 소스모든 소스를 선택합니다.
    2. ID에서 선택한 ID를 선택합니다.
    3. 사용자/서비스 계정 추가 필드에서 선택을 클릭합니다.
    4. 서비스 계정 이메일 주소를 입력합니다. 조직 수준 서비스와 프로젝트 수준 서비스 계정이 모두 있는 경우 둘 다 추가합니다.
    5. 저장을 클릭합니다.

    GCP 서비스/리소스의 TO 속성

    1. 프로젝트에 대해 모든 프로젝트를 선택하거나 발견 항목에 지정된 프로젝트를 선택합니다.

    2. 서비스에서 모든 서비스를 선택하거나 Security Health Analytics에 필요한 다음 개별 서비스를 각각 선택합니다.

      • BigQuery API
      • Binary Authorization API
      • Cloud Logging API
      • Cloud Monitoring API
      • Compute Engine API
      • Kubernetes Engine API

    서비스 경계에서 필수 서비스에 대한 액세스를 제한하면 Security Health Analytics가 이 서비스에 대한 발견 항목을 생성할 수 없습니다.

  9. 탐색 메뉴에서 저장을 클릭합니다.

자세한 내용은 인그레스 및 이그레스 정책 구성을 참조하세요.

이 발견 항목 유형의 지원되는 애셋 및 스캔 설정에 대해 알아봅니다.

Security Command Center service account missing permissions

API의 카테고리 이름: SCC_SERVICE_ACCOUNT_MISSING_PERMISSIONS

Security Command Center의 Google 관리 서비스 계정에 올바른 작동을 위해 필요한 권한이 없습니다.

서비스 계정 식별자는 다음 형식의 이메일 주소입니다.

service-RESOURCE_KEYWORD-RESOURCE_ID@security-center-api.iam.gserviceaccount.com

다음을 바꿉니다.

  • RESOURCE_KEYWORD: 서비스 계정을 소유하는 리소스에 따라 키워드 org 또는 project
  • RESOURCE_ID: 다음 중 하나
    • 조직에서 서비스 계정을 소유한 경우의 조직 ID
    • 프로젝트에서 서비스 계정을 소유하는 경우의 프로젝트 번호

조직 수준 서비스와 프로젝트 수준 서비스 계정이 모두 있는 경우 두 계정 모두에 해결 조치를 적용합니다.

이 발견 항목을 해결하려면 다음 단계를 수행합니다.

  1. 서비스 계정에 보안 센터 서비스 에이전트(roles/securitycenter.serviceAgent) 역할을 부여합니다.

    자세한 내용은 단일 역할 부여를 참조하세요.

    또는 커스텀 역할을 사용하려면 보안 센터 서비스 에이전트 역할에 권한이 있는지 확인합니다.

  2. 서비스 계정이 필요한 역할의 권한을 사용하지 못하도록 방해하는 IAM 거부 정책이 없는지 확인합니다. 액세스를 차단하는 거부 정책이 있으면 거부 정책에 서비스 계정을 예외 주 구성원으로 추가합니다.

이 발견 항목 유형의 지원되는 애셋 및 스캔 설정에 대해 알아봅니다.

다음 단계

Security Command Center 오류 알아보기