Ringkasan
Security Command Center memberikan notifikasi real-time tentang temuan di Google Cloud konsol. Panduan ini menjelaskan cara menggunakan layanan Google Cloud dan API pihak ketiga untuk memperluas fungsi tersebut dan menerima notifikasi nyaris real-time di Slack. Setelah menyelesaikan panduan, Anda akan mendapatkan pemberitahuan tentang temuan baru di layanan pihak ketiga yang dikonfigurasi tanpa harus login ke konsol, sehingga memungkinkan penanganan kerentanan dan ancaman yang lebih cepat. Google Cloud Pelajari lebih lanjut berbagai jenis kerentanan dan ancaman di Security Command Center.
Topologi
Dalam panduan ini, Anda akan membuat konfigurasi yang diilustrasikan dalam diagram berikut.
Tujuan
Dalam panduan ini, Anda akan melakukan hal berikut:
- Siapkan topik Pub/Sub.
- Siapkan Slack.
- Menulis kode di Cloud Run Functions.
- Konfigurasi fungsi Pub/Sub dan Cloud Run untuk mengirim notifikasi ke Slack setiap kali temuan baru dengan tingkat keparahan tinggi atau kritis ditulis ke Security Command Center.
- Memecahkan masalah notifikasi.
Biaya
Tutorial ini menggunakan komponen Google Cloudyang dapat ditagih, termasuk:
- Pub/Sub
- Cloud Run Functions
- Cloud Build
Gunakan kalkulator harga untuk membuat perkiraan biaya berdasarkan penggunaan yang Anda proyeksikan.
Sebelum memulai
Untuk menyelesaikan panduan ini, Anda harus memiliki peran Identity and Access Management (IAM) berikut:
- Admin Organisasi (
roles/resourcemanager.organizationAdmin) - Security Center Admin (
roles/securitycenter.admin) - (
roles/iam.securityAdmin) Security Admin - Peran dengan izin
serviceusage.services.use, seperti Pemilik (roles/owner), Editor (roles/editor), atau peran kustom - Buat Akun Layanan (
roles/iam.serviceAccountCreator) - Pub/Sub Editor (
roles/pubsub.editor) - Administrator Akun Penagihan (
roles/billing.admin)
Peran IAM untuk Security Command Center dapat diberikan di tingkat organisasi, folder, atau project. Kemampuan Anda untuk melihat, mengedit, membuat, atau memperbarui temuan, aset, dan sumber keamanan bergantung pada tingkat akses yang diberikan kepada Anda. Untuk mempelajari lebih lanjut peran Security Command Center, lihat Kontrol akses.
Menyiapkan project
Selesaikan langkah-langkah berikut untuk membuat atau memilih project.
- Login ke akun Google Cloud Anda. Jika Anda baru menggunakan Google Cloud, buat akun untuk mengevaluasi performa produk kami dalam skenario dunia nyata. Pelanggan baru juga mendapatkan kredit gratis senilai $300 untuk menjalankan, menguji, dan men-deploy workload.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Cloud Build API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
Instal Google Cloud CLI.
-
Jika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu.
-
Untuk melakukan inisialisasi gcloud CLI, jalankan perintah berikut:
gcloud init -
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Cloud Build API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
Instal Google Cloud CLI.
-
Jika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu.
-
Untuk melakukan inisialisasi gcloud CLI, jalankan perintah berikut:
gcloud init
Estimasi waktu: diperlukan waktu sekitar satu jam untuk menyiapkan dan menguji notifikasi untuk satu layanan.
Menyiapkan topik Pub/Sub
Pub/Sub adalah layanan pesan real-time yang memungkinkan pesan dikirim dan diterima antar-aplikasi independen. Pelajari lebih lanjut Pub/Sub.
Di bagian ini, Anda akan mengonfigurasi Security Command Center untuk memublikasikan temuan ke topik Pub/Sub.
Untuk menyiapkan dan berlangganan topik Pub/Sub:
Tentukan project Google Cloud Anda dalam variabel lingkungan.
export PROJECT_ID=PROJECT_IDGanti PROJECT_ID dengan project ID Anda.
Tentukan organisasi Google Cloud Anda dalam variabel lingkungan.
export ORG_ID=ORG_IDGanti ORG_ID dengan ID organisasi Anda.
Tetapkan project ID untuk perintah
gcloud.gcloud config set project PROJECT_IDBuat topik Pub/Sub tempat notifikasi dipublikasikan.
gcloud pubsub topics create scc-critical-and-high-severity-findings-topicTentukan topik dalam variabel lingkungan.
export TOPIC=projects/$PROJECT_ID/topics/scc-critical-and-high-severity-findings-topicBuat langganan yang memberi tahu fungsi Cloud Run untuk mengirim pesan chat saat pesan dipublikasikan ke topik.
gcloud pubsub subscriptions create scc-critical-and-high-severity-findings-sub \ --topic scc-critical-and-high-severity-findings-topicKonfigurasi Security Command Center untuk memublikasikan notifikasi ke topik. Filter apa pun yang kompatibel dengan ListFindings API dapat digunakan.
Filter berikut memublikasikan notifikasi untuk temuan tingkat keparahan tinggi dan penting yang aktif di lokasi
global. Pelajari lebih lanjut pemfilteran temuan.gcloud scc notifications create scc-critical-high-severity \ --pubsub-topic=$TOPIC \ --organization=$ORG_ID \ --location=global \ --filter '(severity="HIGH" OR severity="CRITICAL") AND state="ACTIVE"'
Selanjutnya, Anda membuat atau mengonfigurasi aplikasi chat untuk menerima notifikasi dari Pub/Sub.
Menyiapkan aplikasi pesan
Bagian ini menjelaskan cara menggunakan Pub/Sub dan Cloud Run Functions atau Cloud Run Functions (generasi ke-1) untuk mengaktifkan notifikasi hampir real-time untuk Slack.
Untuk mengirim notifikasi ke channel Slack, Anda harus melakukan hal berikut: * Buat aplikasi Slack baru dengan hak istimewa yang memadai untuk memposting pesan ke channel Slack publik. * Buat dan deploy Cloud Run Function yang memposting pesan chat ke Slack saat notifikasi diterima dari Pub/Sub.
### Membuat aplikasi Slack baru
Di bagian ini, Anda akan membuat aplikasi Slack baru untuk menerima notifikasi.
- Buka aplikasi Slack API. Halaman akan terbuka di tab baru.
Login atau buat akun.
Pilih Buat Aplikasi.
Tetapkan App Name ke "SCC Finding Notifier".
Pilih Development Slack Workspace tempat Anda ingin Slack Bot memposting pesan, lalu klik Create App.
Di panel navigasi, pilih OAuth & Izin.
Buka bagian Cakupan. Cakupan dibagi menjadi dua kategori:
- Cakupan Token Bot
- Cakupan Token Pengguna
Untuk latihan ini, Anda tidak perlu menambahkan Cakupan Token Pengguna. Di bagian Cakupan Token Bot, klik Tambahkan Cakupan OAuth, lalu masukkan:
chat:writechat:write.public
Buka bagian atas halaman OAuth & Izin, lalu klik Instal Aplikasi ke Workspace.
Pada dialog konfirmasi, klik Izinkan.
Salin Token Akses OAuth Pengguna Bot untuk digunakan di Cloud Function.
Selanjutnya, Anda men-deploy fungsi Cloud Run untuk mengirim notifikasi ke grup Slack.
Buat fungsi Cloud Run Slack
Di bagian ini, Anda akan men-deploy fungsi untuk mengirim notifikasi ke akun Slack Anda. Contoh kode di bagian ini ditulis dalam Python, tetapi Anda dapat menggunakan bahasa apa pun yang didukung oleh fungsi Cloud Run.
Di konsol Google Cloud , buka halaman Services Cloud Run Functions.
Pilih ID project yang berisi topik Pub/Sub.
Klik Write a function, lalu isi kolom:
- Untuk Service name, masukkan
slack-chat-high-and-critical-findings. - Untuk Region, pilih region tempat Anda ingin menyimpan layanan.
- Untuk Runtime, pilih versi Python yang akan digunakan untuk menjalankan fungsi Anda.
- Untuk Service name, masukkan
Klik Tambahkan pemicu, lalu pilih Pemicu Pub/Sub.
Masukkan detail topik Pub/Sub yang Anda buat di Menyiapkan topik Pub/Sub, lalu klik Simpan pemicu.
Klik Create. Detail layanan akan ditampilkan.
Di panel Source pada tab Source, klik requirements.txt.
Di editor kode, tambahkan
requestsdanfunctions-framework==3.*:requests functions-framework==3.*Di panel Source, klik main.py.
Di editor kode, ganti kode dengan kode berikut:
import base64 import json import requests import functions_framework TOKEN = "BOT_ACCESS_TOKEN" @functions_framework.cloud_event def send_slack_chat_notification(cloud_event): pubsub_message = base64.b64decode(cloud_event.data["message"]["data"]).decode('utf-8').strip() message_json = json.loads(pubsub_message) finding = message_json['finding'] requests.post("https://slack.com/api/chat.postMessage", data={ "token": TOKEN, "channel": "#SLACK_CHANNEL_NAME", "text": f"A high severity finding {finding['category']} was detected." })Ganti kode berikut:
BOT_ACCESS_TOKEN: Token Akses OAuth Pengguna Bot yang Anda buat dengan aplikasi Slack.SLACK_CHANNEL_NAME: saluran Slack tempat Anda ingin mengirim notifikasi.
Di kolom Function entry point, masukkan nama fungsi dalam contoh kode:
send_slack_chat_notification.Klik Save and redeploy. Jika tanda centang hijau muncul di samping nama fungsi, fungsi Anda telah berhasil di-deploy. Proses ini dapat memerlukan waktu beberapa menit.
Jika langkah-langkah sebelumnya selesai tanpa error, penyiapan selesai dan Anda mulai menerima notifikasi. Perhatikan:
- Anda akan menerima pesan chat terpisah untuk setiap temuan dengan tingkat keparahan kritis atau tinggi. Frekuensi atau jumlah notifikasi bergantung pada resource dalam organisasi Anda.
- Notifikasi dipublikasikan dan dikirim hampir secara real-time. Namun, pesan tidak dijamin akan langsung terkirim dan beberapa faktor dapat menyebabkan keterlambatan, termasuk masalah pada Slack.
Untuk mengubah alur kerja notifikasi, Anda dapat melakukan hal berikut:
- Ubah penerima dengan memperbarui fungsi Cloud Run Anda.
- Ubah temuan yang memicu notifikasi dengan memperbarui filter untuk topik Pub/Sub.
Menguji notifikasi
Untuk menguji apakah notifikasi dikonfigurasi dengan benar, ikuti petunjuk ini untuk mengalihkan temuan tingkat keparahan tinggi antara status aktif dan tidak aktif.
- Buka halaman Temuan Security Command Center.
Buka halaman Temuan - Pilih organisasi Anda jika diminta.
- Di panel Quick filters, scroll ke bawah ke bagian Severity, lalu pilih High atau Critical. Panel Findings query results diperbarui untuk menampilkan temuan hanya dengan tingkat keparahan yang dipilih.
- Di panel Findings query results, pilih temuan dengan mencentang kotak di samping namanya.
- Dari menu Ubah status aktif di panel tindakan Hasil kueri temuan, pilih Tidak aktif. Jika kueri temuan saat ini hanya menampilkan temuan aktif, temuan akan dihapus dari hasil kueri.
- Di panel Quick filters, scroll ke bawah ke bagian State, lalu ubah pilihan sehingga hanya Inactive yang dipilih. Panel Findings query results diperbarui untuk menampilkan hanya temuan yang tidak aktif.
- Di panel Findings query results, pilih temuan yang Anda tandai tidak aktif.
- Dari menu Change active state di kolom tindakan Findings query results, pilih Active.
- Periksa pesan Slack Anda. Pesan yang mirip dengan gambar berikut akan ditampilkan:

Pemecahan masalah
Jika pesan chat tidak dikirim atau diterima, ikuti langkah-langkah berikut untuk mengidentifikasi dan menyelesaikan potensi masalah.
1. Check [Stackdriver
logs](https://console.cloud.google.com/projectselector2/logs/viewer) for
your Cloud Run function to determine whether the function is being
invoked. If it is not being invoked, ensure that notifications are set up
correctly.
1. If the Cloud Run function is being invoked, then it might be
crashing. Check for errors in Cloud Run functions using
[Google Cloud console Error Reporting]
(https://console.developers.google.com/errors).
Pembersihan
Agar akun Google Cloud Anda tidak dikenai biaya untuk resource yang digunakan dalam tutorial ini, hapus project yang berisi resource tersebut, atau simpan project dan hapus setiap resource.
Menghapus project
- Di Konsol Google Cloud , buka halaman Manage resources.
- Pada daftar project, pilih project yang ingin Anda hapus, lalu klik Delete.
- Pada dialog, ketik project ID, lalu klik Shut down untuk menghapus project.
Menghapus resource satu per satu
Menghapus konfigurasi notifikasi Anda:
gcloud scc notifications delete scc-critical-high-severity \ --organization=ORG_ID \ --location=globalGanti ORG_ID dengan ID organisasi Anda.
Untuk mempertahankan konfigurasi dan menjeda notifikasi untuk sementara, beri komentar pada panggilan
sendataupostdi fungsi Cloud Run Anda.Hapus fungsi Cloud Run Anda:
- Buka Cloud Run Functions.
Buka Cloud Run Functions - Klik kotak centang di samping fungsi yang ingin Anda hapus.
- Klik Hapus .
- Buka Cloud Run Functions.
Hapus akun layanan:
- Buka halaman Akun layanan.
Buka halaman Service accounts - Pilih project.
- Pilih akun layanan yang ingin Anda hapus, lalu klik Hapus .
- Buka halaman Akun layanan.
Langkah berikutnya
- Baca selengkapnya tentang error notifikasi.
- Pelajari cara memfilter notifikasi.
- Pelajari cara memperbaiki temuan Web Security Scanner dan Security Health Analytics.