Dokumen ini menjelaskan cara menggunakan VM Manager, Inventaris Aset Cloud, dan BigQuery untuk melihat data kustom dan pesan error penerapan dari kebijakan OS di seluruh organisasi Anda. Gunakan alur kerja ini saat Anda memerlukan pelaporan di seluruh organisasi tentang konfigurasi VM kustom, output skrip, atau kegagalan eksekusi kebijakan yang tidak tercakup dalam status kepatuhan standar.
Untuk mengumpulkan data kustom, Anda mengonfigurasi
outputFilePath
dalam kebijakan OS, yang merupakan jalur lokal di VM tempat skrip kebijakan
menulis teks kustom atau output JSON. VM Manager membaca output
dari jalur ini dan menyimpannya dalam laporan penetapan kebijakan OS. Kemudian, Anda dapat mengekspor laporan ini ke BigQuery
dengan menggunakan Inventaris Aset Cloud untuk mengkueri hasil di seluruh fleet VM Anda.
Sebelum memulai
- Siapkan VM Manager.
- Aktifkan Cloud Asset Inventory API.
- Buat set data BigQuery untuk menyimpan data yang diekspor.
- Buat penetapan kebijakan OS yang menghasilkan data kustom.
-
Siapkan autentikasi jika Anda belum melakukannya.
Autentikasi memverifikasi identitas Anda untuk mengakses layanan Cloud de Confiance by S3NS dan API. Untuk menjalankan
kode atau sampel dari lingkungan pengembangan lokal, Anda dapat melakukan autentikasi ke
Compute Engine dengan memilih salah satu opsi berikut:
Pilih tab untuk melihat bagaimana Anda berencana menggunakan contoh di halaman ini:
Konsol
Saat menggunakan konsol Cloud de Confiance untuk mengakses layanan Cloud de Confiance by S3NS dan API, Anda tidak perlu menyiapkan autentikasi.
gcloud
-
Instal Google Cloud CLI, lalu login ke gcloud CLI dengan identitas gabungan Anda. Setelah login, inisialisasi Google Cloud CLI dengan menjalankan perintah berikut:
gcloud init
-
- Tetapkan region dan zona default.
Peran yang diperlukan
Untuk mendapatkan izin yang Anda perlukan guna mengekspor data resource ke BigQuery dan membuat kueri data kebijakan OS kustom, minta administrator Anda untuk memberi Anda peran IAM berikut di project, folder, atau organisasi:
- Cloud Asset Viewer (
roles/cloudasset.viewer) - BigQuery Data Editor (
roles/bigquery.dataEditor) - BigQuery Job User (
roles/bigquery.jobUser)
Untuk mengetahui informasi selengkapnya tentang pemberian peran, lihat Mengelola akses ke project, folder, dan organisasi.
Peran bawaan ini berisi izin yang diperlukan untuk mengekspor data resource ke BigQuery dan membuat kueri data kebijakan OS kustom. Untuk melihat izin yang benar-benar diperlukan, perluas bagian Izin yang diperlukan:
Izin yang diperlukan
Izin berikut diperlukan untuk mengekspor data resource ke BigQuery dan membuat kueri data kebijakan OS kustom:
-
cloudasset.assets.exportOSInventories -
cloudasset.assets.exportResource -
bigquery.datasets.get -
bigquery.tables.create -
bigquery.tables.update -
bigquery.tables.get -
bigquery.jobs.create
Anda mungkin juga bisa mendapatkan izin ini dengan peran khusus atau peran bawaan lainnya.
Contoh kebijakan OS
Sebelum dapat mengekspor dan membuat kueri data kustom di BigQuery, Anda harus membuat dan menetapkan kebijakan OS yang mengumpulkan output kustom dari VM Anda. Untuk mengetahui informasi selengkapnya, lihat Membuat penetapan kebijakan OS.
Untuk mengumpulkan data kustom, tentukan kebijakan OS dengan resource exec yang mencakup bagian berikut:
validate: Memeriksa apakah VM cocok dengan status yang dipilih. Dalam contoh kebijakan berikut, skripvalidatekeluar dengan kode101untuk menunjukkan bahwa resource tidak cocok dengan status yang dipilih. Kode keluar ini memicu skripenforcepada setiap evaluasi.enforce: Menentukan kolomoutputFilePath, menjalankan perintah kustom, menulis output ke jalur yang ditentukan, dan keluar dengan kode100untuk menunjukkan keberhasilan penegakan.
Kebijakan OS yang menghasilkan string
Contoh kebijakan OS berikut menghasilkan string yang berisi versi kernel instance VM:
id: return-kernel-version-policy
mode: ENFORCEMENT
resourceGroups:
- resources:
id: return-kernel-version
exec:
validate:
interpreter: SHELL
script: exit 101
enforce:
interpreter: SHELL
outputFilePath: policy-output.txt
script: uname -r > policy-output.txt && exit 100
Kebijakan OS yang menghasilkan file JSON
Contoh kebijakan OS berikut menghasilkan objek JSON yang berisi nama sistem operasi dan versi kernel:
id: return-kernel-version-js-policy
mode: ENFORCEMENT
resourceGroups:
- resources:
id: return-kernel-version-js
exec:
validate:
interpreter: SHELL
script: exit 101
enforce:
interpreter: SHELL
outputFilePath: policy-output.json
script: |-
k=$(uname -r)
o=$(uname -a)
echo "{ \"name\": \""$o"\", \"kernel\": \""$k"\" }" > policy-output.json
exit 100
Mengekspor data VM Manager ke BigQuery
Setelah VM Manager menerapkan kebijakan OS Anda, Inventaris Aset Cloud akan mengumpulkan laporan penetapan kebijakan OS dan inventaris OS yang dihasilkan di seluruh organisasi Anda. Saat Anda mengekspor data ini ke BigQuery dengan tanda
--per-asset-type, Inventaris Aset Cloud akan membuat tabel terpisah untuk setiap jenis
aset. Tabel <prefix>_osconfig_googleapis_com_OSPolicyAssignmentReport
yang dihasilkan menyimpan output kebijakan kustom dan pesan error penegakan Anda.
Untuk mengekspor data inventaris dan resource OS ke BigQuery, ikuti langkah-langkah berikut:
Untuk mengidentifikasi ID organisasi Anda, jalankan perintah berikut:
gcloud projects get-ancestors PROJECT_IDGanti
PROJECT_IDdengan project ID Anda.Untuk mengekspor data inventaris OS yang dikumpulkan VM Manager dari instance VM Anda, jalankan perintah berikut:
gcloud asset export \ --content-type=os-inventory \ --organization=ORGANIZATION_ID \ --per-asset-type \ --bigquery-table="projects/BQ_PROJECT_ID/datasets/DATASET_ID/tables/os"Ganti placeholder berikut dengan nilai Anda:
ORGANIZATION_ID: ID organisasi Anda.BQ_PROJECT_ID: ID project yang berisi set data BigQuery Anda.DATASET_ID: ID set data BigQuery Anda (misalnya,cai_exp).
Untuk mengekspor metadata resource—termasuk laporan penetapan kebijakan OS—ke BigQuery, jalankan perintah berikut:
gcloud asset export \ --content-type=resource \ --organization=ORGANIZATION_ID \ --per-asset-type \ --bigquery-table="projects/BQ_PROJECT_ID/datasets/DATASET_ID/tables/res"Ganti placeholder berikut dengan nilai Anda:
ORGANIZATION_ID: ID organisasi Anda.BQ_PROJECT_ID: ID project yang berisi set data BigQuery Anda.DATASET_ID: ID set data BigQuery Anda (misalnya,cai_exp).
Setelah ekspor selesai, Inventaris Aset Cloud akan membuat tabel
res_osconfig_googleapis_com_OSPolicyAssignmentReportdi set data BigQuery Anda. Untuk mengetahui informasi selengkapnya, lihat Mengekspor snapshot aset.
Mengkueri data kebijakan OS kustom di BigQuery
Setelah mengekspor data aset ke BigQuery, Anda dapat mengkueri tabel res_osconfig_googleapis_com_OSPolicyAssignmentReport untuk melihat output kustom dan pesan error penerapan dari kebijakan OS Anda.
Untuk menjalankan kueri di BigQuery, ikuti langkah-langkah berikut:
Di konsol Cloud de Confiance , buka halaman BigQuery.
Di editor kueri, tempel salah satu kueri SQL berikut:
Output teks kueri:
Kueri berikut menampilkan versi kernel yang dikumpulkan kebijakan OS untuk setiap instance VM:
SELECT resource.data.instance as instance, ANY_VALUE( SAFE_CONVERT_BYTES_TO_STRING(FROM_BASE64(REPLACE(REPLACE( resource_compliances.execResourceOutput.enforcementOutput , '-', '+'), '_', '/'))) HAVING MAX updateTime) as compliance_results FROM `DATASET_ID.res_osconfig_googleapis_com_OSPolicyAssignmentReport`, UNNEST(resource.data.osPolicyCompliances[OFFSET(0)].osPolicyResourceCompliances) as resource_compliances, UNNEST(resource_compliances.configSteps) as config_steps WHERE resource.data.osPolicyCompliances[OFFSET(0)].osPolicyId = "return-kernel-version-policy" AND resource_compliances.osPolicyResourceId = "return-kernel-version" AND config_steps.type = "VALIDATION" GROUP BY instanceGanti
DATASET_IDdengan ID set data BigQuery Anda (misalnya,cai_exp).Output kueri mirip dengan tabel berikut:
instancecompliance_resultsubuntu-15.15.0-1036-gcpubuntu-25.15.0-1044-gcprhel9-15.14.0-162.18.1.el9_1.x86_64Output JSON kueri:
Kueri berikut mengekstrak kolom
namedankerneldari output JSON dan menampilkannya sebagai kolom terpisah untuk setiap instance VM:WITH compliance_history AS ( SELECT updateTime, resource.data.instance, SAFE_CONVERT_BYTES_TO_STRING( FROM_BASE64( REPLACE( REPLACE( resource_compliances.execResourceOutput.enforcementOutput, '-', '+' ), '_', '/' ) ) ) as compliance_results FROM `DATASET_ID.res_osconfig_googleapis_com_OSPolicyAssignmentReport`, UNNEST(resource.data.osPolicyCompliances[OFFSET(0)].osPolicyResourceCompliances) as resource_compliances, UNNEST(resource_compliances.configSteps) as config_steps WHERE resource.data.osPolicyCompliances[OFFSET(0)].osPolicyId = "return-kernel-version-js-policy" AND resource_compliances.osPolicyResourceId = "return-kernel-version-js" AND config_steps.type = "VALIDATION" ), compliance_latest AS ( SELECT instance, ANY_VALUE(compliance_results HAVING MAX updateTime) as compliance_results FROM compliance_history GROUP BY instance ) SELECT instance, JSON_EXTRACT_SCALAR(compliance_results, "$.name") as os_name, JSON_EXTRACT_SCALAR(compliance_results, "$.kernel") as kernel_version FROM compliance_latestGanti
DATASET_IDdengan ID set data BigQuery Anda (misalnya,cai_exp).Output kueri mirip dengan tabel berikut:
instanceos_namekernel_versionubuntu-1Linux ubuntu-1 5.15.0-1036-gcp #39-Ubuntu SMP5.15.0-1036-gcprhel9-1Linux rhel9-1 5.14.0-162.18.1.el9_1.x86_64 #1 SMP5.14.0-162.18.1.el9_1.x86_64
Untuk menjalankan kueri, klik Run.
Untuk mengetahui informasi selengkapnya, lihat Menjalankan kueri.
Meninjau pesan error penegakan
Jika resource kebijakan OS gagal divalidasi atau diterapkan, VM Manager
akan mencatat pesan error di kolom configSteps.errorMessage pada tabel
res_osconfig_googleapis_com_OSPolicyAssignmentReport. Anda dapat membuat kueri
kolom ini di BigQuery untuk memecahkan masalah kegagalan eksekusi kebijakan di seluruh
organisasi Anda.
Kueri berikut menampilkan pesan error validasi atau penegakan terbaru untuk setiap instance VM:
SELECT
resource.data.instance AS instance,
resource.data.osPolicyCompliances[OFFSET(0)].osPolicyId AS policy_id,
resource_compliances.osPolicyResourceId AS resource_id,
config_steps.type AS step_type,
ANY_VALUE(config_steps.errorMessage HAVING MAX updateTime) AS error_message
FROM
`DATASET_ID.res_osconfig_googleapis_com_OSPolicyAssignmentReport`,
UNNEST(resource.data.osPolicyCompliances[OFFSET(0)].osPolicyResourceCompliances) AS resource_compliances,
UNNEST(resource_compliances.configSteps) AS config_steps
WHERE
config_steps.errorMessage IS NOT NULL
AND config_steps.errorMessage != ""
GROUP BY
instance,
policy_id,
resource_id,
step_type
Ganti DATASET_ID dengan ID set data BigQuery Anda (misalnya, cai_exp).
Output kueri mirip dengan tabel berikut:
instance |
policy_id |
resource_id |
step_type |
error_message |
|---|---|---|---|---|
ubuntu-2 |
return-kernel-version-policy |
return-kernel-version |
DESIRED_STATE_ENFORCEMENT |
Error running enforce script: exit status 1 |
Langkah berikutnya
Untuk mengetahui informasi selengkapnya tentang cara mengelola kebijakan OS dan menganalisis data kepatuhan, lihat referensi berikut: