Mengumpulkan log audit CircleCI
Parser ini mengekstrak kolom dari log audit CircleCI dalam format CSV dan JSON, lalu mengubahnya menjadi Model Data Terpadu (UDM). Parser ini menangani kedua format, melakukan transformasi dan pengayaan data, serta memetakan kolom yang diekstrak ke kolom UDM yang sesuai dalam objek event. Parser ini berfokus pada tindakan pengguna, akses resource, dan peristiwa pembaruan, mengategorikannya, dan mengisi kolom UDM yang relevan seperti principal, target, network, dan metadata.
Sebelum memulai
Pastikan Anda memiliki prasyarat berikut:
- Instance Google SecOps.
- Akses istimewa ke CircleCI.
Menyiapkan feed
Untuk mengonfigurasi feed, ikuti langkah-langkah berikut:
- Buka SIEM Settings > Feeds.
- Klik Add New Feed.
- Di halaman berikutnya, klik Configure a single feed.
- Di kolom Feed name, masukkan nama untuk feed (misalnya, CircleCI Logs).
- Pilih Webhook sebagai Source type.
- Pilih CircleCI sebagai Log type.
- Klik Next.
- Opsional: Tentukan nilai untuk parameter input berikut:
- Split delimiter: pembatas yang digunakan untuk memisahkan baris log, seperti
\n. - Asset namespace: namespace aset.
- Label penyerapan: label yang diterapkan ke peristiwa dari feed ini.
- Split delimiter: pembatas yang digunakan untuk memisahkan baris log, seperti
- Klik Next.
- Tinjau konfigurasi feed di layar Finalize, lalu klik Submit.
- Klik Generate Secret Key untuk membuat kunci rahasia guna mengautentikasi feed ini.
- Salin dan simpan kunci rahasia. Anda tidak dapat melihat kunci rahasia ini lagi. Jika diperlukan, Anda dapat membuat ulang kunci rahasia baru, tetapi tindakan ini akan membuat kunci rahasia sebelumnya menjadi tidak berlaku.
- Dari tab Details, salin URL endpoint feed dari kolom Endpoint Information. Anda harus menentukan URL endpoint ini di aplikasi klien.
- Klik Done.
Membuat kunci API untuk feed webhook
Buka Google Cloud console > Credentials.
Klik Create credentials, lalu pilih API key.
Batasi akses kunci API ke Google Security Operations API.
Menentukan URL endpoint
- Di aplikasi klien, tentukan URL endpoint HTTPS yang disediakan di feed webhook.
Aktifkan autentikasi dengan menentukan kunci API dan kunci rahasia sebagai bagian dari header kustom dalam format berikut:
X-goog-api-key = API_KEY X-Webhook-Access-Key = SECRETRekomendasi: Tentukan kunci API sebagai header, bukan menentukannya di URL.
Jika klien webhook tidak mendukung header kustom, Anda dapat menentukan kunci API dan kunci rahasia menggunakan parameter kueri dalam format berikut:
ENDPOINT_URL?key=API_KEY&secret=SECRETGanti kode berikut:
ENDPOINT_URL: URL endpoint feed.API_KEY: kunci API untuk mengautentikasi ke Google SecOps.SECRET: kunci rahasia yang Anda buat untuk mengautentikasi feed.
Mengonfigurasi webhook di CircleCI
- Login ke antarmuka web CircleCI.
- Pilih project yang lognya ingin Anda muat.
- Klik Project Settings.
- Pilih Webhooks.
- Klik Add Webhook.
Tentukan nilai untuk parameter input berikut:
- Nama Webhook: berikan nama deskriptif (misalnya, Google SecOps).
- Endpoint URL: masukkan
<ENDPOINT_URL>endpoint API Google SecOps.
- Events: Pilih peristiwa CircleCI yang harus memicu webhook (misalnya, pilih workflow-completed untuk mengirim data setelah alur kerja selesai).
Klik Save untuk membuat webhook.
Tabel Pemetaan UDM
| Kolom Log | Pemetaan UDM | Logika |
|---|---|---|
| account.id | read_only_udm.about.resource.attribute.labels.value | Nilai account.id dari log mentah ditetapkan ke kolom UDM read_only_udm.about.resource.attribute.labels.value dengan key yang sesuai adalah account_id. |
| action | read_only_udm.metadata.product_event_type | Nilai action dari log mentah ditetapkan ke kolom UDM read_only_udm.metadata.product_event_type. |
| actor.id | read_only_udm.principal.user.product_object_id | Nilai actor.id dari log mentah ditetapkan ke kolom UDM read_only_udm.principal.user.product_object_id. |
| actor.name | read_only_udm.principal.user.userid | Awalan "github: " dihapus dari kolom actor.name di log mentah. Nilai yang tersisa ditetapkan ke kolom UDM read_only_udm.principal.user.userid. Jika actor.name ada di log mentah, nilai USER_RESOURCE_UPDATE_CONTENT akan ditetapkan ke read_only_udm.metadata.event_type. Jika tidak, USER_RESOURCE_ACCESS akan ditetapkan. |
| id | read_only_udm.metadata.product_log_id | Nilai id dari log mentah ditetapkan ke kolom UDM read_only_udm.metadata.product_log_id. Parser menetapkan read_only_udm.metadata.log_type ke CIRCLECI. Parser menetapkan read_only_udm.metadata.product_name ke CIRCLECI. Parser menetapkan read_only_udm.metadata.vendor_name ke CIRCLECI. |
| occurred_at | read_only_udm.metadata.event_timestamp | Nilai occurred_at dari log mentah diuraikan sebagai stempel waktu dan ditetapkan ke kolom UDM read_only_udm.metadata.event_timestamp. |
| organization.name | read_only_udm.target.administrative_domain | Awalan "github: " dihapus dari kolom organization.name di log mentah. Nilai yang tersisa ditetapkan ke kolom UDM read_only_udm.target.administrative_domain. |
| payload.job.id | read_only_udm.about.resource.attribute.labels.value | Nilai payload.job.id dari log mentah ditetapkan ke kolom UDM read_only_udm.about.resource.attribute.labels.value dengan key yang sesuai adalah job_id. |
| payload.job.job_name | read_only_udm.about.resource.attribute.labels.value | Nilai payload.job.job_name dari log mentah ditetapkan ke kolom UDM read_only_udm.about.resource.attribute.labels.value dengan key yang sesuai adalah job_name. |
| payload.job.job_status | read_only_udm.about.resource.attribute.labels.value | Nilai payload.job.job_status dari log mentah ditetapkan ke kolom UDM read_only_udm.about.resource.attribute.labels.value dengan key yang sesuai adalah job_status. |
| payload.workflow.id | read_only_udm.about.resource.attribute.labels.value | Nilai payload.workflow.id dari log mentah ditetapkan ke kolom UDM read_only_udm.about.resource.attribute.labels.value dengan key yang sesuai adalah workflow_id. |
| request.id | read_only_udm.network.session_id | Nilai request.id dari log mentah ditetapkan ke kolom UDM read_only_udm.network.session_id. |
| scope.id | read_only_udm.about.resource.attribute.labels.value | Nilai scope.id dari log mentah ditetapkan ke kolom UDM read_only_udm.about.resource.attribute.labels.value dengan key yang sesuai adalah scope_id. Parser awalnya menetapkan sec_action ke BLOCK. Jika kolom success di log mentah bernilai benar (true), sec_action akan diubah menjadi ALLOW. Nilai sec_action kemudian ditetapkan ke kolom UDM read_only_udm.security_result.action. |
| target.id | read_only_udm.target.resource.product_object_id | Nilai target.id dari log mentah ditetapkan ke kolom UDM read_only_udm.target.resource.product_object_id. |
| target.name | read_only_udm.target.resource.name | Awalan "github: " dihapus dari kolom target.name di log mentah. Nilai yang tersisa ditetapkan ke kolom UDM read_only_udm.target.resource.name. Parser menetapkan read_only_udm.target.resource.resource_type ke STORAGE_OBJECT. |
| version | read_only_udm.target.resource.attribute.labels.value | Nilai version dari log mentah dikonversi menjadi string dan ditetapkan ke kolom UDM read_only_udm.target.resource.attribute.labels.value dengan key yang sesuai adalah version. |
Log Perubahan
Lihat Log Perubahan untuk parser ini
Perlu bantuan lain? Dapatkan jawaban dari anggota Komunitas dan profesional Google SecOps.