Cloud 애셋 인벤토리로 리전 보안 비밀 분석

이 페이지에서는 Cloud 애셋 인벤토리를 사용하여 보안 비밀을 모니터링하고, 분석용 데이터를 내보내고, 강력한 쿼리를 실행하여 필요한 인사이트를 얻는 방법을 설명합니다.

개요

Cloud 애셋 인벤토리는 Google Cloud 환경을 분석하고 가상 머신, 데이터베이스, 스토리지 버킷, Secret Manager 보안 비밀과 같은 클라우드 리소스의 변경사항을 기록합니다. Secret Manager와 Cloud 애셋 인벤토리를 통합하면 다음 기능의 이점을 누릴 수 있습니다.

  • 쿼리 실행: 특정 보안 비밀을 검색하거나 보안 비밀에서 패턴을 식별합니다.

  • 알림 설정: 보안 비밀이 생성, 수정, 삭제되었을 때와 같은 특정 이벤트가 발생할 때 Pub/Sub에 알림을 전송하도록 Cloud 애셋 인벤토리를 구성합니다.

  • 데이터 내보내기: 심층 분석 및 보고를 위해 BigQuery에 보안 비밀 인벤토리를 내보냅니다.

  • 보안 비밀 관리 및 분석: 프로젝트 및 전체 조직 간에 한 곳에서 모든 보안 비밀을 확인하고 잘못 구성되었거나 조직의 보안 정책을 위반하는 보안 비밀을 식별합니다. 예를 들어 정기적으로 순환되지 않거나 적절한 액세스 제어가 부족한 보안 비밀을 찾을 수 있습니다.

이는 Secret Manager 사용자의 고급 태스크입니다. 이 페이지를 읽기 전에 다음을 읽어보는 것이 좋습니다.

Secret Manager 쿼리

SQL과 비슷한 쿼리로 보안 비밀을 분석할 때는 보안 비밀 및 보안 비밀 버전을 BigQuery로 내보내는 것이 좋습니다. Secret Manager는 애셋 검색 또는 정책 분석 도구와 통합되지 않습니다. 이러한 쿼리는 Google Cloud CLI 및 BigQuery를 사용하여 애셋을 검색합니다.

제한사항

Cloud 애셋 인벤토리를 사용하여 Secret Manager 리소스를 분석하는 데에는 다음과 같은 제한사항이 있습니다.

  • Cloud 애셋 인벤토리는 지난 5주 동안만의 스냅샷 내보내기 및 나열을 지원합니다.

애셋 변경사항 모니터링

Cloud 애셋 인벤토리는 실시간 업데이트를 추적하고 이러한 변경사항 모니터링을 지원합니다. 피드를 구성하여 리소스가 수정될 때마다 구성된 Pub/Sub 주제 모음에 알림을 보낼 수 있습니다. 또한 Cloud 애셋 인벤토리는 피드의 조건 구성을 지원하므로 특정 애셋 유형의 특정 변경사항을 모니터링할 수 있습니다. 애셋 변경사항에 따라 워크플로를 트리거하는 방법은 Pub/Sub 문서를 참조하세요.

BigQuery로 애셋 내보내기

보안 비밀과 보안 비밀 버전을 BigQuery로 내보내면 대규모 데이터에 대해 SQL과 유사한 쿼리를 실행하고 애셋에 대한 의미 있는 정보를 생성할 수 있습니다. 애셋을 내보내기 전에 데이터 세트 및 서비스 계정이 올바르게 구성되었는지 확인하세요.

애셋을 내보내려면 다음 명령어를 실행합니다.

gcloud

아래의 명령어 데이터를 사용하기 전에 다음을 바꿉니다.

  • CONTENT_TYPE: 애셋 콘텐츠 유형입니다(RESOURCE).
  • PROJECT_ID: 분석할 보안 비밀이 포함된 프로젝트의 ID입니다.
  • SNAPSHOT_TIME: 리소스의 스냅샷을 만들 시간입니다. 현재 시간부터 과거 5주 사이의 특정 시점일 수 있습니다.
  • BIGQUERY_PROJECT_ID: BigQuery 테이블이 있는 프로젝트의 ID입니다.
  • DATASET_ID: BigQuery 데이터 세트의 ID입니다.
  • TABLE_NAME: 메타데이터를 내보내려는 대상 테이블입니다. 테이블이 없으면 생성됩니다.

다음 명령어를 실행합니다.

Linux, macOS 또는 Cloud Shell

gcloud asset export \
  --content-type=CONTENT_TYPE \
  --project=PROJECT_ID \
  --snapshot-time=SNAPSHOT_TIME \
  --bigquery-table=projects/BIGQUERY_PROJECT_ID/datasets/DATASET_ID/tables/TABLE_NAME \
  --output-bigquery-force

Windows(PowerShell)

gcloud asset export `
  --content-type=CONTENT_TYPE `
  --project=PROJECT_ID `
  --snapshot-time=SNAPSHOT_TIME `
  --bigquery-table=projects/BIGQUERY_PROJECT_ID/datasets/DATASET_ID/tables/TABLE_NAME `
  --output-bigquery-force

Windows(cmd.exe)

gcloud asset export ^
  --content-type=CONTENT_TYPE ^
  --project=PROJECT_ID ^
  --snapshot-time=SNAPSHOT_TIME ^
  --bigquery-table=projects/BIGQUERY_PROJECT_ID/datasets/DATASET_ID/tables/TABLE_NAME ^
  --output-bigquery-force

자세한 내용은 BigQuery로 내보내기를 참조하세요.

샘플 쿼리

다음 샘플 쿼리를 사용하여 특정 속성이 포함된 보안 비밀 및 보안 비밀 버전을 찾습니다.

지난 2주 동안 생성된 리전 보안 비밀

지난 2주 동안 조직에 추가된 보안 비밀(및 해당 속성)을 찾습니다.

BigQuery

  SELECT name, FROM BIGQUERY_TABLE
  WHERE asset_type='secretmanager.googleapis.com/Secret' AND
    resource.location <> "global" AND
    DATE(JSON_VALUE(resource.data, '$.createTime')) > DATE_SUB(CURRENT_DATE(), INTERVAL 2 WEEK);
  

BIGQUERY_TABLE을 이 문서의 BigQuery에 애셋 내보내기 섹션에 따라 모든 애셋을 내보낸 BigQuery 테이블의 전체 경로로 바꿉니다.

gcloud

아래의 명령어 데이터를 사용하기 전에 다음을 바꿉니다.

  • PROJECT_ID: 분석할 보안 비밀이 포함된 프로젝트의 ID입니다.

다음 명령어를 실행합니다.

Linux, macOS 또는 Cloud Shell

NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ")
gcloud asset list --project=PROJECT_ID \
    --asset-types='secretmanager.googleapis.com/Secret' \
    --snapshot-time=$NOW \
    --content-type='resource' \
    --filter="resource.location != global AND resource.data.createTime>-P2W"

Windows(PowerShell)

NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ")
gcloud asset list --project=PROJECT_ID `
    --asset-types='secretmanager.googleapis.com/Secret' `
    --snapshot-time=$NOW `
    --content-type='resource' `
    --filter="resource.location != global AND resource.data.createTime>-P2W"

Windows(cmd.exe)

NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ")
gcloud asset list --project=PROJECT_ID ^
    --asset-types='secretmanager.googleapis.com/Secret' ^
    --snapshot-time=$NOW ^
    --content-type='resource' ^
    --filter="resource.location != global AND resource.data.createTime>-P2W"

특정 위치의 리전 보안 비밀

us-central1과 같은 특정 위치에 저장된 모든 보안 비밀을 찾습니다.

BigQuery

    SELECT * FROM BIGQUERY_TABLE
    WHERE asset_type='secretmanager.googleapis.com/Secret' AND
      resource.location = "us-central1";
  

BIGQUERY_TABLE을 이 문서의 BigQuery에 애셋 내보내기 섹션에 따라 모든 애셋을 내보낸 BigQuery 테이블의 전체 경로로 바꿉니다.

gcloud

아래의 명령어 데이터를 사용하기 전에 다음을 바꿉니다.

  • PROJECT_ID: 분석할 보안 비밀이 포함된 프로젝트의 ID입니다.
  • LOCATION: 보안 비밀의 Google Cloud 위치입니다.

다음 명령어를 실행합니다.

Linux, macOS 또는 Cloud Shell

NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ")
gcloud asset list --project=PROJECT_ID \
    --asset-types='secretmanager.googleapis.com/Secret' \
    --snapshot-time=$NOW \
    --content-type='resource' \
    --filter="resource.location = LOCATION AND resource.data.createTime>-P2W"

Windows(PowerShell)

NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ")
gcloud asset list --project=PROJECT_ID `
    --asset-types='secretmanager.googleapis.com/Secret' `
    --snapshot-time=$NOW `
    --content-type='resource' `
    --filter="resource.location = LOCATION AND resource.data.createTime>-P2W"

Windows(cmd.exe)

NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ")
gcloud asset list --project=PROJECT_ID ^
    --asset-types='secretmanager.googleapis.com/Secret' ^
    --snapshot-time=$NOW ^
    --content-type='resource' ^
    --filter="resource.location = LOCATION AND resource.data.createTime>-P2W"

180일 전에 만든 리전 보안 비밀 버전

180일 이전에 생성된 모든 보안 비밀 버전을 나열합니다.

BigQuery

    SELECT * FROM BIGQUERY_TABLE
    WHERE asset_type='secretmanager.googleapis.com/SecretVersion'
      resource.location <> "global" AND
      DATE(JSON_VALUE(resource.data, '$.createTime')) < DATE_SUB(CURRENT_DATE(), INTERVAL 180 DAY) AND
      JSON_VALUE(resource.data, '$.state') = "ENABLED";
  

BIGQUERY_TABLE을 이 문서의 BigQuery에 애셋 내보내기 섹션에 따라 모든 애셋을 내보낸 BigQuery 테이블의 전체 경로로 바꿉니다.

gcloud

아래의 명령어 데이터를 사용하기 전에 다음을 바꿉니다.

  • PROJECT_ID: 분석할 보안 비밀이 포함된 프로젝트의 ID입니다.

다음 명령어를 실행합니다.

Linux, macOS 또는 Cloud Shell

NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ")
gcloud asset list --project=PROJECT_ID \
    --asset-types='secretmanager.googleapis.com/SecretVersion' \
    --snapshot-time=$NOW \
    --content-type='resource' \
    --filter="resource.location != global AND resource.data.createTime < P6M AND resource.data.state = ENABLED"

Windows(PowerShell)

NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ")
gcloud asset list --project=PROJECT_ID `
    --asset-types='secretmanager.googleapis.com/SecretVersion' `
    --snapshot-time=$NOW `
    --content-type='resource' `
    --filter="resource.location != global AND resource.data.createTime < P6M AND resource.data.state = ENABLED"

Windows(cmd.exe)

NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ")
gcloud asset list --project=PROJECT_ID ^
    --asset-types='secretmanager.googleapis.com/SecretVersion' ^
    --snapshot-time=$NOW ^
    --content-type='resource' ^
    --filter="resource.location != global AND resource.data.createTime < P6M AND resource.data.state = ENABLED"

CMEK가 구성되지 않은 리전 보안 비밀

고객 관리자 암호화 키(CMEK)로 암호화되지 않은 모든 보안 비밀을 나열합니다.

BigQuery

    SELECT * FROM BIGQUERY_TABLE
    WHERE asset_type='secretmanager.googleapis.com/Secret'
      resource.location <> "global" AND
      JSON_VALUE(resource.data, "$.customerManagedEncryption.kmsKeyName") IS NOT NULL;
  

BIGQUERY_TABLE을 이 문서의 BigQuery에 애셋 내보내기 섹션에 따라 모든 애셋을 내보낸 BigQuery 테이블의 전체 경로로 바꿉니다.

gcloud

아래의 명령어 데이터를 사용하기 전에 다음을 바꿉니다.

  • PROJECT_ID: 분석할 보안 비밀이 포함된 프로젝트의 ID입니다.

다음 명령어를 실행합니다.

Linux, macOS 또는 Cloud Shell

NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ")
gcloud asset list --project=PROJECT_ID \
    --asset-types='secretmanager.googleapis.com/Secret' \
    --snapshot-time=$NOW \
    --content-type='resource' \
    --filter="resource.location != global AND resource.data.customerManagedEncryption = NULL"

Windows(PowerShell)

NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ")
gcloud asset list --project=PROJECT_ID `
    --asset-types='secretmanager.googleapis.com/Secret' `
    --snapshot-time=$NOW `
    --content-type='resource' `
    --filter="resource.location != global AND resource.data.customerManagedEncryption = NULL"

Windows(cmd.exe)

NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ")
gcloud asset list --project=PROJECT_ID ^
    --asset-types='secretmanager.googleapis.com/Secret' ^
    --snapshot-time=$NOW ^
    --content-type='resource' ^
    --filter="resource.location != global AND resource.data.customerManagedEncryption = NULL"

CMEK가 구성된 리전 보안 비밀

CMEK로 암호화된 모든 보안 비밀을 나열합니다.

BigQuery

    SELECT * FROM BIGQUERY_TABLE
    WHERE asset_type='secretmanager.googleapis.com/Secret'
      resource.location <> "global" AND
      JSON_VALUE(resource.data, "$.customerManagedEncryption.kmsKeyName") IS NOT NULL;
  

BIGQUERY_TABLE을 이 문서의 BigQuery에 애셋 내보내기 섹션에 따라 모든 애셋을 내보낸 BigQuery 테이블의 전체 경로로 바꿉니다.

gcloud

아래의 명령어 데이터를 사용하기 전에 다음을 바꿉니다.

  • PROJECT_ID: 분석할 보안 비밀이 포함된 프로젝트의 ID입니다.

다음 명령어를 실행합니다.

Linux, macOS 또는 Cloud Shell

NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ")
gcloud asset list --project=PROJECT_ID \
    --asset-types='secretmanager.googleapis.com/Secret' \
    --snapshot-time=$NOW \
    --content-type='resource' \
    --filter="resource.location != global AND resource.data.customerManagedEncryption != NULL"

Windows(PowerShell)

NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ")
gcloud asset list --project=PROJECT_ID `
    --asset-types='secretmanager.googleapis.com/Secret' `
    --snapshot-time=$NOW `
    --content-type='resource' `
    --filter="resource.location != global AND resource.data.customerManagedEncryption != NULL"

Windows(cmd.exe)

NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ")
gcloud asset list --project=PROJECT_ID ^
    --asset-types='secretmanager.googleapis.com/Secret' ^
    --snapshot-time=$NOW ^
    --content-type='resource' ^
    --filter="resource.location != global AND resource.data.customerManagedEncryption != NULL"

특정 CMEK로 암호화된 리전 보안 비밀

특정 CMEK로 암호화된 보안 비밀을 찾습니다.

BigQuery

    SELECT * FROM BIGQUERY_TABLE
    WHERE asset_type='secretmanager.googleapis.com/Secret'
      resource.location <> "global" AND
      JSON_VALUE(resource.data, "$.customerManagedEncryption.kmsKeyName") = KMS_KEY_NAME;
  

다음을 바꿉니다.

  • BIGQUERY_TABLE: 이 문서의 BigQuery에 애셋 내보내기 섹션에 따라 모든 애셋을 내보낸 BigQuery 테이블의 전체 경로입니다.

  • KMS_KEY_NAME: 키의 ID 또는 키의 정규화된 식별자입니다.

gcloud

아래의 명령어 데이터를 사용하기 전에 다음을 바꿉니다.

  • PROJECT_ID: 분석할 보안 비밀이 포함된 프로젝트의 ID입니다.
  • KMS_KEY_NAME: 키의 ID 또는 키의 정규화된 식별자입니다.

다음 명령어를 실행합니다.

Linux, macOS 또는 Cloud Shell

NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ")
gcloud beta asset list --project=PROJECT_ID \
    --asset-types='secretmanager.googleapis.com/Secret' \
    --snapshot-time=$NOW \
    --content-type='resource' \
    --filter="resource.location != global AND resource.data.customerManagedEncryption.kmsKeyName=KMS_KEY_NAME"

Windows(PowerShell)

NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ")
gcloud beta asset list --project=PROJECT_ID `
    --asset-types='secretmanager.googleapis.com/Secret' `
    --snapshot-time=$NOW `
    --content-type='resource' `
    --filter="resource.location != global AND resource.data.customerManagedEncryption.kmsKeyName=KMS_KEY_NAME"

Windows(cmd.exe)

NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ")
gcloud beta asset list --project=PROJECT_ID ^
    --asset-types='secretmanager.googleapis.com/Secret' ^
    --snapshot-time=$NOW ^
    --content-type='resource' ^
    --filter="resource.location != global AND resource.data.customerManagedEncryption.kmsKeyName=KMS_KEY_NAME"

CMEK가 구성되지 않은 리전 보안 비밀 버전

CMEK로 암호화되지 않은 사용 설정된 모든 보안 비밀 버전을 찾습니다.

BigQuery

    SELECT * FROM BIGQUERY_TABLE
    WHERE asset_type='secretmanager.googleapis.com/SecretVersion'
      resource.location <> "global" AND
      JSON_VALUE(resource.data, "$.customerManagedEncryption.kmsKeyVersionName") IS NULL AND
      JSON_VALUE(resource.data, "$.state") = "ENABLED";
  

BIGQUERY_TABLE을 이 문서의 BigQuery에 애셋 내보내기 섹션에 따라 모든 애셋을 내보낸 BigQuery 테이블의 전체 경로로 바꿉니다.

gcloud

아래의 명령어 데이터를 사용하기 전에 다음을 바꿉니다.

  • PROJECT_ID: 분석할 보안 비밀이 포함된 프로젝트의 ID입니다.

다음 명령어를 실행합니다.

Linux, macOS 또는 Cloud Shell

NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ")
gcloud asset list --project=PROJECT_ID \
    --asset-types='secretmanager.googleapis.com/SecretVersion' \
    --snapshot-time=$NOW \
    --content-type='resource' \
    --filter="(resource.location != global AND resource.data.customerManagedEncryption.kmsKeyVersionName = NULL) AND resource.data.state=ENABLED"

Windows(PowerShell)

NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ")
gcloud asset list --project=PROJECT_ID `
    --asset-types='secretmanager.googleapis.com/SecretVersion' `
    --snapshot-time=$NOW `
    --content-type='resource' `
    --filter="(resource.location != global AND resource.data.customerManagedEncryption.kmsKeyVersionName = NULL) AND resource.data.state=ENABLED"

Windows(cmd.exe)

NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ")
gcloud asset list --project=PROJECT_ID ^
    --asset-types='secretmanager.googleapis.com/SecretVersion' ^
    --snapshot-time=$NOW ^
    --content-type='resource' ^
    --filter="(resource.location != global AND resource.data.customerManagedEncryption.kmsKeyVersionName = NULL) AND resource.data.state=ENABLED"

특정 CMEK로 암호화된 리전 보안 비밀 버전

특정 CMEK 버전으로 암호화된 모든 사용 설정된 보안 비밀 버전을 나열합니다.

BigQuery

    SELECT * FROM BIGQUERY_TABLE
    WHERE asset_type='secretmanager.googleapis.com/SecretVersion'
      resource.location <> "global" AND
      JSON_VALUE(resource.data, "$.customerManagedEncryption.kmsKeyVersionName") = KMS_KEY_VERSION_NAME AND
      JSON_VALUE(resource.data, "$.state") = "ENABLED";
  

다음을 바꿉니다.

  • BIGQUERY_TABLE: 이 문서의 BigQuery에 애셋 내보내기 섹션에 따라 모든 애셋을 내보낸 BigQuery 테이블의 전체 경로입니다.

  • KMS_KEY_VERSION_NAME: Cloud Key Management Service 키 버전 번호입니다.

gcloud

아래의 명령어 데이터를 사용하기 전에 다음을 바꿉니다.

  • PROJECT_ID: 분석할 보안 비밀이 포함된 프로젝트의 ID입니다.

다음 명령어를 실행합니다.

Linux, macOS 또는 Cloud Shell

NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ")
gcloud asset list --project=PROJECT_ID \
    --asset-types='secretmanager.googleapis.com/SecretVersion' \
    --snapshot-time=$NOW \
    --content-type='resource' \
    --filter="(resource.location != global AND resource.data.customerManagedEncryption.kmsKeyVersionName = KMS_KEY_VERSION_NAME) AND resource.data.state=ENABLED"

Windows(PowerShell)

NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ")
gcloud asset list --project=PROJECT_ID `
    --asset-types='secretmanager.googleapis.com/SecretVersion' `
    --snapshot-time=$NOW `
    --content-type='resource' `
    --filter="(resource.location != global AND resource.data.customerManagedEncryption.kmsKeyVersionName = KMS_KEY_VERSION_NAME) AND resource.data.state=ENABLED"

Windows(cmd.exe)

NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ")
gcloud asset list --project=PROJECT_ID ^
    --asset-types='secretmanager.googleapis.com/SecretVersion' ^
    --snapshot-time=$NOW ^
    --content-type='resource' ^
    --filter="(resource.location != global AND resource.data.customerManagedEncryption.kmsKeyVersionName = KMS_KEY_VERSION_NAME) AND resource.data.state=ENABLED"

순환이 구성되지 않은 리전 보안 비밀

순환 일정이 없는 모든 보안 비밀을 찾습니다.

BigQuery

    SELECT name FROM BIGQUERY_TABLE
    WHERE asset_type='secretmanager.googleapis.com/Secret' AND
      resource.location <> "global" AND
      JSON_EXTRACT(resource.data, '$.rotation') IS NULL;
  

BIGQUERY_TABLE을 이 문서의 BigQuery에 애셋 내보내기 섹션에 따라 모든 애셋을 내보낸 BigQuery 테이블의 전체 경로로 바꿉니다.

gcloud

아래의 명령어 데이터를 사용하기 전에 다음을 바꿉니다.

  • PROJECT_ID: 분석할 보안 비밀이 포함된 프로젝트의 ID입니다.

다음 명령어를 실행합니다.

Linux, macOS 또는 Cloud Shell

NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ")
gcloud asset list --project=PROJECT_ID \
    --asset-types='secretmanager.googleapis.com/Secret' \
    --snapshot-time=$NOW \
    --content-type='resource' \
    --filter="resource.location != global AND resource.data.rotation = NULL"

Windows(PowerShell)

NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ")
gcloud asset list --project=PROJECT_ID `
    --asset-types='secretmanager.googleapis.com/Secret' `
    --snapshot-time=$NOW `
    --content-type='resource' `
    --filter="resource.location != global AND resource.data.rotation = NULL"

Windows(cmd.exe)

NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ")
gcloud asset list --project=PROJECT_ID ^
    --asset-types='secretmanager.googleapis.com/Secret' ^
    --snapshot-time=$NOW ^
    --content-type='resource' ^
    --filter="resource.location != global AND resource.data.rotation = NULL"

특정 순환 기간이 있는 리전 보안 비밀

90일 미만마다 한 번 순환하도록 예약된 모든 보안 비밀을 찾습니다.

BigQuery

    SELECT *
    FROM BIGQUERY_TABLE
    WHERE asset_type='secretmanager.googleapis.com/Secret' AND
      resource.location <> "global" AND
      CAST(
        TRIM(
          JSON_VALUE(JSON_EXTRACT(resource.data, "$.rotation.rotationPeriod")),"s")
        AS INT64)
    < 86400 * 90 #Rotation period in seconds (86400s in 1 day * 90 days)
  

BIGQUERY_TABLE을 이 문서의 BigQuery에 애셋 내보내기 섹션에 따라 모든 애셋을 내보낸 BigQuery 테이블의 전체 경로로 바꿉니다.

gcloud

아래의 명령어 데이터를 사용하기 전에 다음을 바꿉니다.

  • PROJECT_ID: 분석할 보안 비밀이 포함된 프로젝트의 ID입니다.

다음 명령어를 실행합니다.

Linux, macOS 또는 Cloud Shell

NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ")
ROTATION_PERIOD_SECONDS=$((90 * 24 * 60 * 60))
gcloud asset list --project=PROJECT_ID \
    --asset-types='secretmanager.googleapis.com/Secret' \
    --snapshot-time=$NOW \
    --content-type='resource' \
    --filter="resource.location != global AND resource.data.rotation != null AND resource.data.rotation.rotationPeriod <= ${ROTATION_PERIOD_SECONDS}s"

Windows(PowerShell)

NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ")
ROTATION_PERIOD_SECONDS=$((90 * 24 * 60 * 60))
gcloud asset list --project=PROJECT_ID `
    --asset-types='secretmanager.googleapis.com/Secret' `
    --snapshot-time=$NOW `
    --content-type='resource' `
    --filter="resource.location != global AND resource.data.rotation != null AND resource.data.rotation.rotationPeriod <= ${ROTATION_PERIOD_SECONDS}s"

Windows(cmd.exe)

NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ")
ROTATION_PERIOD_SECONDS=$((90 * 24 * 60 * 60))
gcloud asset list --project=PROJECT_ID ^
    --asset-types='secretmanager.googleapis.com/Secret' ^
    --snapshot-time=$NOW ^
    --content-type='resource' ^
    --filter="resource.location != global AND resource.data.rotation != null AND resource.data.rotation.rotationPeriod <= ${ROTATION_PERIOD_SECONDS}s"

향후 30일 이내에 만료되는 리전 보안 비밀

향후 30일 이내에 만료되는 보안 비밀을 나열합니다.

BigQuery

    SELECT * FROM BIGQUERY_TABLE
    WHERE asset_type='secretmanager.googleapis.com/Secret' AND
      resource.location <> "global" AND
      DATE(JSON_VALUE(resource.data, '$.expireTime')) < DATE_ADD(CURRENT_DATE(), INTERVAL 30 DAY);
  

BIGQUERY_TABLE을 이 문서의 BigQuery에 애셋 내보내기 섹션에 따라 모든 애셋을 내보낸 BigQuery 테이블의 전체 경로로 바꿉니다.

gcloud

아래의 명령어 데이터를 사용하기 전에 다음을 바꿉니다.

  • PROJECT_ID: 모니터링할 애셋이 포함된 프로젝트의 ID입니다.

다음 명령어를 실행합니다.

Linux, macOS 또는 Cloud Shell

NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ")
gcloud asset list --project=PROJECT_ID \
    --asset-types='secretmanager.googleapis.com/Secret' \
    --snapshot-time=$NOW \
    --content-type='resource' \
    --filter="resource.location != global AND resource.data.expireTime < PD30"

Windows(PowerShell)

NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ")
gcloud asset list --project=PROJECT_ID `
    --asset-types='secretmanager.googleapis.com/Secret' `
    --snapshot-time=$NOW `
    --content-type='resource' `
    --filter="resource.location != global AND resource.data.expireTime < PD30"

Windows(cmd.exe)

NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ")
gcloud asset list --project=PROJECT_ID ^
    --asset-types='secretmanager.googleapis.com/Secret' ^
    --snapshot-time=$NOW ^
    --content-type='resource' ^
    --filter="resource.location != global AND resource.data.expireTime < PD30"

Pub/Sub 주제가 구성된 리전 보안 비밀

Pub/Sub 주제가 하나 이상 구성된 모든 보안 비밀을 나열합니다.

BigQuery

    SELECT name, ARRAY_LENGTH(JSON_EXTRACT_ARRAY(resource.data, '$.topics')) AS topics_count,
    FROM BIGQUERY_TABLE
    WHERE asset_type='secretmanager.googleapis.com/Secret' AND
      resource.location <> "global" AND
      ARRAY_LENGTH(JSON_EXTRACT_ARRAY(resource.data, '$.topics')) > 0
  

BIGQUERY_TABLE을 이 문서의 BigQuery에 애셋 내보내기 섹션에 따라 모든 애셋을 내보낸 BigQuery 테이블의 전체 경로로 바꿉니다.

gcloud

아래의 명령어 데이터를 사용하기 전에 다음을 바꿉니다.

  • PROJECT_ID: 모니터링할 애셋이 포함된 프로젝트의 ID입니다.

다음 명령어를 실행합니다.

Linux, macOS 또는 Cloud Shell

NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ")
gcloud asset list --project=PROJECT_ID \
    --asset-types='secretmanager.googleapis.com/Secret' \
    --snapshot-time=$NOW \
    --content-type='resource' \
    --filter="resource.location != global AND resource.data.topics != NULL"

Windows(PowerShell)

NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ")
gcloud asset list --project=PROJECT_ID `
    --asset-types='secretmanager.googleapis.com/Secret' `
    --snapshot-time=$NOW `
    --content-type='resource' `
    --filter="resource.location != global AND resource.data.topics != NULL"

Windows(cmd.exe)

NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ")
gcloud asset list --project=PROJECT_ID ^
    --asset-types='secretmanager.googleapis.com/Secret' ^
    --snapshot-time=$NOW ^
    --content-type='resource' ^
    --filter="resource.location != global AND resource.data.topics != NULL"

다음 단계