Halaman ini menjelaskan cara menggunakan Inventaris Aset Cloud untuk memantau secret Anda, mengekspor data untuk dianalisis, dan menjalankan kueri yang efektif untuk mendapatkan insight yang Anda butuhkan.
Ringkasan
Cloud Asset Inventory menganalisis lingkungan Cloud de Confiance by S3NS Anda dan mencatat setiap perubahan pada resource cloud Anda, seperti virtual machine, database, bucket penyimpanan, dan dalam konteks ini, secret Secret Manager Anda. Integrasi antara Secret Manager dan Inventaris Aset Cloud membantu Anda melakukan hal berikut:
-
Menjalankan kueri: Cari rahasia tertentu atau identifikasi pola di seluruh rahasia Anda.
-
Siapkan pemberitahuan: Konfigurasi Inventaris Aset Cloud untuk mengirim notifikasi ke Pub/Sub saat peristiwa tertentu terjadi, seperti saat secret dibuat, diubah, atau dihapus.
-
Mengekspor data: Ekspor inventaris rahasia Anda ke BigQuery untuk analisis mendalam dan pelaporan.
-
Mengelola dan menganalisis rahasia Anda: Lihat semua rahasia Anda di satu tempat (di seluruh project dan seluruh organisasi Anda) dan identifikasi rahasia yang mungkin salah dikonfigurasi atau melanggar kebijakan keamanan organisasi Anda. Misalnya, Anda dapat menemukan rahasia yang tidak diubah secara berkala atau tidak memiliki kontrol akses yang tepat.
Ini adalah tugas lanjutan untuk pengguna Secret Manager. Sebelum membaca halaman ini, sebaiknya Anda membaca halaman berikut:
-
Ringkasan Secret Manager untuk memahami konsep dan fitur utama Secret Manager
-
Ringkasan Inventaris Aset Cloud untuk memahami Inventaris Aset Cloud dan melihat fitur pengelolaan asetnya yang komprehensif
Mengirim kueri ke Secret Manager
Untuk menganalisis secret Anda dengan kueri mirip SQL, sebaiknya ekspor secret dan versi secret Anda ke BigQuery. Secret Manager tidak terintegrasi dengan Asset Search atau Penganalisis Kebijakan. Kueri ini menggunakan Google Cloud CLI dan BigQuery untuk menelusuri aset Anda.
Batasan
Penggunaan Inventaris Aset Cloud untuk menganalisis resource Secret Manager memiliki batasan berikut:
- Cloud Asset Inventory mendukung pengeksporan dan pencantuman snapshot hanya untuk lima minggu terakhir.
- Data Secret Manager disinkronkan dengan Inventaris Aset Cloud setiap 7 jam. Jika sinkronisasi gagal, kesegaran ditunda hingga sinkronisasi berikutnya berhasil. Untuk kasus penggunaan yang memerlukan informasi real-time, kueri Secret Manager API.
Memantau perubahan aset
Inventaris Aset Cloud melacak update dan mendukung pemantauan perubahan ini. Anda dapat mengonfigurasi feed untuk mengirim notifikasi ke serangkaian topik Pub/Sub yang dikonfigurasi setiap kali ada modifikasi pada resource Anda. Selain itu, Inventaris Aset Cloud mendukung konfigurasi kondisi pada feed Anda, sehingga Anda dapat memantau perubahan tertentu untuk jenis aset tertentu. Untuk mempelajari cara memicu alur kerja pada perubahan aset, lihat dokumentasi Pub/Sub.
Mengekspor aset ke BigQuery
Mengekspor rahasia dan versi rahasia ke BigQuery memungkinkan Anda menjalankan kueri mirip SQL atas data dalam jumlah besar dan menghasilkan insight yang bermakna tentang aset Anda. Sebelum mengekspor aset, pastikan kumpulan data dan akun layanan Anda dikonfigurasi dengan benar.
Untuk mengekspor aset, jalankan perintah berikut:
gcloud
Sebelum menggunakan salah satu data perintah di bawah, lakukan penggantian berikut:
- CONTENT_TYPE: jenis konten aset (
RESOURCE). - PROJECT_ID: ID project yang berisi rahasia yang akan dianalisis.
- SNAPSHOT_TIME: waktu untuk membuat snapshot resource. Rentang waktu ini bisa antara waktu saat ini dan 5 minggu sebelumnya.
- BIGQUERY_PROJECT_ID: ID project tempat tabel BigQuery berada.
- DATASET_ID: ID set data BigQuery.
- TABLE_NAME: tabel tempat Anda mengekspor metadata. Jika tidak ada, maka akan dibuat.
Jalankan perintah berikut:
Linux, macOS, atau 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
Untuk mengetahui informasi selengkapnya, lihat Mengekspor ke BigQuery.
Sampel kueri
Gunakan contoh kueri ini untuk menemukan secret dan versi secret dengan properti tertentu.
Rahasia regional yang dibuat dalam dua minggu terakhir
Temukan secret (dan propertinya) yang ditambahkan ke organisasi Anda dalam dua minggu terakhir.
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);
Ganti BIGQUERY_TABLE dengan jalur lengkap ke tabel BigQuery tempat Anda mengekspor semua aset di bagian Mengekspor aset ke BigQuery dalam dokumen ini.
gcloud
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"
Ganti PROJECT_ID dengan ID project yang berisi secret yang akan dianalisis.
Rahasia regional di lokasi tertentu
Temukan semua secret yang disimpan di lokasi tertentu, seperti us-central1.
BigQuery
SELECT * FROM BIGQUERY_TABLE WHERE asset_type='secretmanager.googleapis.com/Secret' AND resource.location = "us-central1";
Ganti BIGQUERY_TABLE dengan jalur lengkap ke tabel BigQuery tempat Anda mengekspor semua aset di bagian Mengekspor aset ke BigQuery dalam dokumen ini.
gcloud
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"
Ganti kode berikut:
- PROJECT_ID: ID project yang berisi rahasia yang akan dianalisis
- LOCATION: Cloud de Confiance by S3NS lokasi rahasia
Versi secret regional yang dibuat lebih dari 180 hari yang lalu
Mencantumkan semua versi secret yang dibuat lebih dari 180 hari yang lalu.
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";
Ganti BIGQUERY_TABLE dengan jalur lengkap ke tabel BigQuery tempat Anda mengekspor semua aset di bagian Mengekspor aset ke BigQuery dalam dokumen ini.
gcloud
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"
Ganti PROJECT_ID dengan ID project yang berisi secret yang akan dianalisis.
Secret regional tanpa CMEK yang dikonfigurasi
Mencantumkan semua secret yang tidak dienkripsi dengan kunci enkripsi yang dikelola pelanggan (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;
Ganti BIGQUERY_TABLE dengan jalur lengkap ke tabel BigQuery tempat Anda mengekspor semua aset di bagian Mengekspor aset ke BigQuery dalam dokumen ini.
gcloud
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"
Ganti PROJECT_ID dengan ID project yang berisi secret yang akan dianalisis.
Secret regional dengan CMEK yang dikonfigurasi
Mencantumkan semua secret yang dienkripsi dengan 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;
Ganti BIGQUERY_TABLE dengan jalur lengkap ke tabel BigQuery tempat Anda mengekspor semua aset di bagian Mengekspor aset ke BigQuery dalam dokumen ini.
gcloud
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"
Ganti PROJECT_ID dengan ID project yang berisi secret yang akan dianalisis.
Secret regional yang dienkripsi dengan CMEK tertentu
Menemukan secret yang dienkripsi dengan CMEK tertentu.
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;
Ganti kode berikut:
-
BIGQUERY_TABLE: jalur lengkap ke tabel BigQuery tempat Anda mengekspor semua aset di bagian Mengekspor aset ke BigQuery dalam dokumen ini.
-
KMS_KEY_NAME: ID kunci atau ID yang memenuhi syarat sepenuhnya untuk kunci
gcloud
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"
Ganti kode berikut:
- PROJECT_ID: ID project yang berisi rahasia yang akan dianalisis
- KMS_KEY_NAME: ID kunci atau ID yang memenuhi syarat sepenuhnya untuk kunci
Versi rahasia regional tanpa CMEK yang dikonfigurasi
Temukan semua versi rahasia yang diaktifkan yang tidak dienkripsi dengan 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";
Ganti BIGQUERY_TABLE dengan jalur lengkap ke tabel BigQuery tempat Anda mengekspor semua aset di bagian Mengekspor aset ke BigQuery dalam dokumen ini.
gcloud
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"
Ganti PROJECT_ID dengan ID project yang berisi secret yang akan dianalisis.
Versi rahasia regional yang dienkripsi dengan CMEK tertentu
Mencantumkan semua versi rahasia yang diaktifkan dan dienkripsi dengan versi CMEK tertentu.
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";
Ganti kode berikut:
-
BIGQUERY_TABLE: jalur lengkap ke tabel BigQuery tempat Anda mengekspor semua aset di bagian Mengekspor aset ke BigQuery dalam dokumen ini.
-
KMS_KEY_VERSION_NAME: nomor versi kunci Cloud Key Management Service
gcloud
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"
Ganti kode berikut:
- PROJECT_ID: ID project yang berisi rahasia yang akan dianalisis
- KMS_KEY_VERSION_NAME: ID versi kunci
Secret regional tanpa konfigurasi rotasi
Temukan semua secret yang tidak memiliki jadwal rotasi.
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;
Ganti BIGQUERY_TABLE dengan jalur lengkap ke tabel BigQuery tempat Anda mengekspor semua aset di bagian Mengekspor aset ke BigQuery dalam dokumen ini.
gcloud
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"
Ganti PROJECT_ID dengan ID project yang berisi secret yang akan dianalisis.
Secret regional dengan periode rotasi tertentu
Temukan semua secret yang dijadwalkan untuk dirotasi kurang dari sekali setiap 90 hari:
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)
Ganti BIGQUERY_TABLE dengan jalur lengkap ke tabel BigQuery tempat Anda mengekspor semua aset di bagian Mengekspor aset ke BigQuery dalam dokumen ini.
gcloud
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"
Ganti PROJECT_ID dengan ID project yang berisi secret yang akan dianalisis.
Secret regional yang akan berakhir dalam 30 hari ke depan
Mencantumkan secret yang akan berakhir dalam 30 hari ke depan.
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);
Ganti BIGQUERY_TABLE dengan jalur lengkap ke tabel BigQuery tempat Anda mengekspor semua aset di bagian Mengekspor aset ke BigQuery dalam dokumen ini.
gcloud
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"
Ganti PROJECT_ID dengan ID project yang berisi secret yang akan dianalisis.
Secret regional dengan topik Pub/Sub yang dikonfigurasi
Mencantumkan semua secret yang telah mengonfigurasi setidaknya satu topik 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
Ganti BIGQUERY_TABLE dengan jalur lengkap ke tabel BigQuery tempat Anda mengekspor semua aset di bagian Mengekspor aset ke BigQuery dalam dokumen ini.
gcloud
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"
Ganti PROJECT_ID dengan ID project yang berisi secret yang akan dianalisis.
Langkah berikutnya
- Pelajari praktik terbaik.