지속성: Gemini Discovery Engine API 앱에 대한 외부 액세스 권한 부여됨

이 문서에서는 Security Command Center의 위협 발견 사항 유형에 대해 설명합니다. 위협 발견 사항은 위협 감지기가 클라우드 리소스에서 잠재적인 위협을 감지할 때 생성됩니다. 사용 가능한 위협 발견 사항의 전체 목록은 위협 발견 사항 색인을 확인하세요.

개요

조직 외부의 주 구성원에게 Gemini Enterprise AI 애플리케이션 또는 리소스에 대한 액세스 권한을 제공하는 IAM 역할이 부여되었습니다. 발견 항목은 기본적으로 심각도가 보통으로 분류됩니다.

이 발견 항목은 조직 외부의 사용자, 서비스 계정 또는 AI 에이전트에 다음 Gemini Enterprise (Discovery Engine) 역할 중 하나가 부여될 때 생성됩니다.

  • roles/discoveryengine.admin
  • roles/discoveryengine.agentAdmin
  • roles/discoveryengine.agentOwner
  • roles/discoveryengine.agentUser
  • roles/discoveryengine.agentspaceAdmin
  • roles/discoveryengine.agentspaceUser
  • roles/discoveryengine.editor
  • roles/discoveryengine.user

Event Threat Detection이 이 발견 사항의 소스입니다.

대응 방법

이 발견 사항에 대응하려면 다음을 수행하세요.

1단계: 발견 항목 세부정보 검토하기

  1. 발견 사항 검토의 지시에 따라 Persistence: External Access Granted to Gemini Discovery Engine API Apps 발견 사항을 엽니다. 발견 항목의 세부정보 패널의 요약 탭이 열립니다.

  2. 요약 탭에서 다음 섹션의 정보를 검토합니다.

    • 특히 다음 필드를 포함하는 감지된 항목:
      • 기본 이메일: 역할을 할당한 사용자 또는 서비스 계정의 이메일 주소
      • 문제가 되는 액세스 권한 부여: 추가된 Gemini Enterprise 역할 및 외부 구성원의 세부정보 (iamBindings)입니다.
    • 영향을 받는 리소스
    • 특히 다음 필드를 포함하는 관련 링크:
      • Cloud Logging URI: Logging 항목의 링크
      • MITRE ATT&CK 메서드: MITRE ATT&CK 문서의 링크

2단계: 로그 확인하기

  1. 발견 사항 세부정보 패널의 요약 탭에서 Cloud Logging URI 링크를 클릭하여 로그 탐색기를 엽니다.
  2. 로드되는 페이지에서 다음 필터를 사용하여 새 IAM 정책 바인딩 또는 업데이트된 IAM 정책 바인딩을 찾습니다.
    • protoPayload.methodName="SetIamPolicy"

3단계: 공격 및 대응 방법 조사하기

  1. 이 발견 사항 유형의 MITRE ATT&CK 프레임워크 항목을 검토합니다. 계정 조작: 추가 클라우드 역할
  2. 대응 계획을 개발하려면 조사 결과를 MITRE 연구와 결합합니다.

4단계: 대응 구현하기

다음의 응답 계획이 이 발견 사항에 적합할 수 있지만 작업에도 영향을 줄 수 있습니다. 조사에서 수집한 정보를 신중하게 평가하여 발견 항목을 해결할 최선의 방법을 결정해야 합니다.

  1. 외부 역할 부여가 발생한 프로젝트 또는 리소스의 소유자에게 문의하여 액세스가 승인되었는지 확인합니다.
  2. 외부 주 구성원에서 승인되지 않은 IAM 역할 바인딩을 취소합니다.
  3. 역할을 부여한 계정 (principalEmail)이 침해된 경우 액세스 권한을 취소하거나 침해된 서비스 계정을 삭제하고 키를 순환합니다.
  4. 리소스에 외부 주 구성원을 추가하는 것을 제한하려면 도메인 제한 공유 조직 정책 제약조건을 사용합니다.

대응 권장사항은 AI 위협 발견 사항에 대응을 참조하세요.

발견 항목 JSON 예시

다음은 기본값이 생략된 발견 항목 JSON의 예시입니다.

{
  "finding": {
    "name": "organizations/ORGANIZATION_ID/sources/SOURCE_ID/locations/global/findings/FINDING_ID",
    "parent": "organizations/ORGANIZATION_ID/sources/SOURCE_ID/locations/global",
    "resourceName": "//cloudresourcemanager.googleapis.com/projects/PROJECT_NUMBER",
    "state": "ACTIVE",
    "category": "Persistence: External Access Granted to Gemini Discovery Engine API Apps",
    "securityMarks": {
      "name": "organizations/ORGANIZATION_ID/sources/SOURCE_ID/locations/global/findings/FINDING_ID/securityMarks"
    },
    "eventTime": "TIMESTAMP",
    "createTime": "TIMESTAMP",
    "severity": "MEDIUM",
    "canonicalName": "projects/PROJECT_NUMBER/sources/SOURCE_ID/locations/global/findings/FINDING_ID",
    "findingClass": "THREAT",
    "access": {
      "principalEmail": "PRINCIPAL_EMAIL",
      "callerIp": "IP_ADDRESS",
      "callerIpGeo": {
        "regionCode": "COUNTRY_CODE"
      },
      "userAgent": "USER_AGENT",
      "serviceName": "cloudresourcemanager.googleapis.com",
      "methodName": "SetIamPolicy",
      "principalSubject": "user:PRINCIPAL_EMAIL"
    },
    "mitreAttack": {
      "primaryTactic": "PERSISTENCE",
      "primaryTechniques": [
        "ADDITIONAL_CLOUD_ROLES",
        "ACCOUNT_MANIPULATION"
      ],
      "additionalTactics": [
        "PRIVILEGE_ESCALATION"
      ]
    },
    "iamBindings": [
      {
        "action": "ADD",
        "role": "roles/discoveryengine.agentspaceUser",
        "member": "user:EXTERNAL_USER_EMAIL"
      }
    ],
    "parentDisplayName": "Event Threat Detection",
    "domains": [
      {
        "category": "AI"
      },
      {
        "category": "IDENTITY_AND_ACCESS"
      }
    ],
    "logEntries": [
      {
        "cloudLoggingEntry": {
          "insertId": "INSERT_ID",
          "logId": "cloudaudit.googleapis.com/activity",
          "resourceContainer": "projects/PROJECT_ID",
          "timestamp": "TIMESTAMP"
        }
      }
    ]
  },
  "resource": {
    "name": "//cloudresourcemanager.googleapis.com/projects/PROJECT_NUMBER",
    "displayName": "PROJECT_ID",
    "type": "google.cloud.resourcemanager.Project",
    "cloudProvider": "GOOGLE_CLOUD_PLATFORM",
    "service": "cloudresourcemanager.googleapis.com",
    "gcpMetadata": {
      "project": "//cloudresourcemanager.googleapis.com/projects/PROJECT_NUMBER",
      "projectDisplayName": "PROJECT_ID",
      "parent": "//cloudresourcemanager.googleapis.com/organizations/ORGANIZATION_ID",
      "parentDisplayName": "ORGANIZATION_DISPLAY_NAME",
      "organization": "organizations/ORGANIZATION_ID"
    },
    "resourcePath": {
      "nodes": [
        {
          "nodeType": "GCP_PROJECT",
          "id": "projects/PROJECT_NUMBER",
          "displayName": "PROJECT_ID"
        },
        {
          "nodeType": "GCP_ORGANIZATION",
          "id": "organizations/ORGANIZATION_ID"
        }
      ]
    },
    "resourcePathString": "organizations/ORGANIZATION_ID/projects/PROJECT_NUMBER"
  },
  "sourceProperties": {
    "sourceId": {
      "projectNumber": "PROJECT_NUMBER",
      "customerOrganizationNumber": "ORGANIZATION_ID"
    },
    "detectionCategory": {
      "ruleName": "granting_external_access_to_gemini_enterprise_ai_apps"
    },
    "detectionPriority": "MEDIUM",
    "affectedResources": [
      {
        "gcpResourceName": "//cloudresourcemanager.googleapis.com/projects/PROJECT_NUMBER"
      }
    ],
    "evidence": [
      {
        "sourceLogId": {
          "projectId": "PROJECT_ID",
          "resourceContainer": "projects/PROJECT_ID",
          "timestamp": {
            "seconds": "TIMESTAMP_SECONDS",
            "nanos": TIMESTAMP_NANOS
          },
          "insertId": "INSERT_ID",
          "logId": "cloudaudit.googleapis.com/activity"
        }
      }
    ],
    "findingId": "FINDING_ID",
    "contextUris": {
      "mitreUri": {
        "displayName": "MITRE Link",
        "url": "https://attack.mitre.org/techniques/T1098/003/"
      },
      "cloudLoggingQueryUri": [
        {
          "displayName": "Cloud Logging Query Link",
          "url": "https://console.cloud.google.com/logs/query;query=timestamp%3D%22TIMESTAMP%22%0AinsertId%3D%22INSERT_ID%22?project=PROJECT_ID"
        }
      ]
    },
    "domains": [
      {
        "category": "AI"
      },
      {
        "category": "IDENTITY_AND_ACCESS"
      }
    ]
  }
}

다음 단계