Menerima peristiwa menggunakan Cloud Audit Logs (gcloud CLI)

Panduan memulai ini menunjukkan cara menerima peristiwa dari Cloud Storage di layanan Cloud Run yang tidak diautentikasi menggunakan Eventarc.

Anda dapat menyelesaikan panduan memulai ini menggunakan Google Cloud CLI. Untuk petunjuk menggunakan konsol, lihat Membuat pemicu menggunakan konsol Google Cloud.

Dalam panduan memulai ini, Anda akan:

  1. Membuat bucket Cloud Storage untuk menjadi sumber peristiwa.

  2. Men-deploy layanan penerima peristiwa ke Cloud Run.

  3. Buat pemicu peristiwa.

  4. Buat peristiwa dengan mengupload file ke bucket Cloud Storage, dan lihat di log Cloud Run.

Sebelum memulai

Batasan keamanan yang ditentukan oleh organisasi mungkin mencegah Anda menyelesaikan langkah-langkah berikut. Untuk mengetahui informasi pemecahan masalah, lihat Mengembangkan aplikasi di lingkungan Google Cloud yang terbatas.

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. Install the Google Cloud CLI.
  3. To initialize the gcloud CLI, run the following command:

    gcloud init
  4. Create or select a Google Cloud project.

    • Create a Google Cloud project:

      gcloud projects create PROJECT_ID

      Replace PROJECT_ID with a name for the Google Cloud project you are creating.

    • Select the Google Cloud project that you created:

      gcloud config set project PROJECT_ID

      Replace PROJECT_ID with your Google Cloud project name.

  5. Make sure that billing is enabled for your Google Cloud project.

  6. Enable the Artifact Registry, Cloud Build, Cloud Run, Eventarc, and Pub/Sub APIs:

    gcloud services enable artifactregistry.googleapis.com cloudbuild.googleapis.com run.googleapis.com eventarc.googleapis.com pubsub.googleapis.com
  7. Install the Google Cloud CLI.
  8. To initialize the gcloud CLI, run the following command:

    gcloud init
  9. Create or select a Google Cloud project.

    • Create a Google Cloud project:

      gcloud projects create PROJECT_ID

      Replace PROJECT_ID with a name for the Google Cloud project you are creating.

    • Select the Google Cloud project that you created:

      gcloud config set project PROJECT_ID

      Replace PROJECT_ID with your Google Cloud project name.

  10. Make sure that billing is enabled for your Google Cloud project.

  11. Enable the Artifact Registry, Cloud Build, Cloud Run, Eventarc, and Pub/Sub APIs:

    gcloud services enable artifactregistry.googleapis.com cloudbuild.googleapis.com run.googleapis.com eventarc.googleapis.com pubsub.googleapis.com
  12. Perbarui komponen gcloud:
    gcloud components update
  13. Login menggunakan akun Anda:
    gcloud auth login
  14. Tetapkan variabel konfigurasi yang digunakan dalam panduan memulai ini:
    export REGION=us-central1
    gcloud config set run/region ${REGION}
    gcloud config set run/platform managed
    gcloud config set eventarc/location ${REGION}
  15. Jika Anda adalah project creator, Anda diberi peran Pemilik dasar (roles/owner). Secara default, peran Identity and Access Management (IAM) ini mencakup izin yang diperlukan untuk akses penuh ke sebagian besar resource Google Cloud dan Anda dapat melewati langkah ini.

    Jika Anda bukan project creator, izin yang diperlukan harus diberikan pada project kepada akun utama yang sesuai. Misalnya, akun utama dapat berupa Akun Google (untuk pengguna akhir) atau akun layanan (untuk aplikasi dan workload komputasi). Untuk mengetahui informasi selengkapnya, lihat halaman eran dan izin untuk tujuan peristiwa Anda.

    Perhatikan bahwa secara default, izin Cloud Build mencakup izin untuk mengupload dan mendownload artefak Artifact Registry.

    Izin yang diperlukan

    Untuk mendapatkan izin yang Anda perlukan untuk menyelesaikan tutorial ini, minta administrator untuk memberi Anda peran IAM berikut di project Anda:

    Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses ke project, folder, dan organisasi.

    Anda mungkin juga bisa mendapatkan izin yang diperlukan melalui peran khusus atau peran bawaan lainnya.

  16. Aktifkan Jenis Log Pembacaan Admin, Pembacaan Data, dan Penulisan Data Cloud Audit Log di Google Cloud Storage.

    Perhatikan bahwa di tingkat project, Anda memerlukan peran Identity and Access Management roles/owner untuk mengonfigurasi log audit Akses Data untuk resource Google Cloud.

    1. Baca kebijakan IAM project Anda dan simpan dalam file:
      gcloud projects get-iam-policy PROJECT_ID > /tmp/policy.yaml
    2. Edit kebijakan Anda di /tmp/policy.yaml, dengan menambahkan atau mengubah hanya konfigurasi log audit Akses Data.

      auditConfigs:
      - auditLogConfigs:
      - logType: ADMIN_READ
      - logType: DATA_WRITE
      - logType: DATA_READ
      service: storage.googleapis.com
    3. Tulis kebijakan IAM baru Anda:
      gcloud projects set-iam-policy PROJECT_ID /tmp/policy.yaml
      Jika perintah sebelumnya melaporkan konflik dengan perubahan lain, ulangi langkah-langkah ini, dimulai dengan membaca kebijakan IAM project.
  17. Catat akun layanan default Compute Engine karena Anda akan melampirkan akun tersebut ke pemicu Eventarc untuk merepresentasikan identitas pemicu untuk tujuan pengujian. Akun layanan ini dibuat secara otomatis setelah mengaktifkan atau menggunakan Google Cloud layanan yang menggunakan Compute Engine, dan dengan format email berikut:

    PROJECT_NUMBER-compute@developer.gserviceaccount.com

    Ganti PROJECT_NUMBER dengan Google Cloudnomor project Anda. Anda dapat menemukan nomor project di halaman Selamat Datang pada Konsol Google Cloud atau dengan menjalankan perintah berikut:

    gcloud projects describe PROJECT_ID --format='value(projectNumber)'

    Untuk lingkungan produksi, sebaiknya buat akun layanan baru dan berikan satu atau beberapa peran IAM yang berisi izin minimum yang diperlukan dan ikuti prinsip hak istimewa terendah.

  18. Berikan Peran Eventarc Event Receiver (roles/eventarc.eventReceiver) pada project ke akun layanan default Compute Engine agar pemicu Eventarc dapat menerima peristiwa dari penyedia peristiwa.
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member=serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com \
        --role=roles/eventarc.eventReceiver
  19. Jika Anda mengaktifkan agen layanan Cloud Pub/Sub pada atau sebelum 8 April 2021, untuk mendukung permintaan push Pub/Sub yang diautentikasi, berikan peran Service Account Token Creator (roles/iam.serviceAccountTokenCreator) ke agen layanan. Jika tidak, peran ini akan diberikan secara default:
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-pubsub.iam.gserviceaccount.com \
        --role=roles/iam.serviceAccountTokenCreator
  20. Download dan instal alat pengelolaan kode sumber Git.

Membuat repositori standar Artifact Registry

Buat repositori standar Artifact Registry untuk menyimpan image container Anda:
gcloud artifacts repositories create REPOSITORY \
    --repository-format=docker \
    --location=$REGION

Ganti REPOSITORY dengan nama unik untuk repositori.

Membuat bucket Cloud Storage

Panduan memulai ini menggunakan Cloud Storage sebagai sumber peristiwa. Untuk membuat bucket penyimpanan:

gsutil mb -l ${REGION} gs://events-quickstart-PROJECT_ID/

Setelah sumber peristiwa dibuat, Anda dapat men-deploy layanan penerima peristiwa di Cloud Run.

Men-deploy layanan penerima peristiwa ke Cloud Run

Deploy layanan Cloud Run yang menerima dan mencatat peristiwa ke dalam log. Untuk men-deploy layanan penerima peristiwa sampel:

  1. Buat clone repositori GitHub:

    Go

    git clone https://github.com/GoogleCloudPlatform/golang-samples.git
    cd golang-samples/eventarc/audit_storage
    

    Java

    git clone https://github.com/GoogleCloudPlatform/java-docs-samples.git
    cd java-docs-samples/eventarc/audit-storage
    

    .NET

    git clone https://github.com/GoogleCloudPlatform/dotnet-docs-samples.git
    cd dotnet-docs-samples/eventarc/audit-storage
    

    Node.js

    git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git
    cd nodejs-docs-samples/eventarc/audit-storage
    

    Python

    git clone https://github.com/GoogleCloudPlatform/python-docs-samples.git
    cd python-docs-samples/eventarc/audit-storage
    
  2. Build container dan upload ke Cloud Build:

    gcloud builds submit --tag $REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/helloworld-events:v1
  3. Men-deploy image container ke Cloud Run

    gcloud run deploy helloworld-events \
        --image $REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/helloworld-events:v1 \
        --allow-unauthenticated

    Jika deployment berhasil, command line akan menampilkan URL layanan.

    Setelah men-deploy layanan penerima peristiwa yang disebut helloworld-events ke Cloud Run, Anda dapat menyiapkan pemicu.

Membuat pemicu Eventarc

Pemicu Eventarc akan mengirim peristiwa dari bucket Cloud Storage ke layanan Cloud Run helloworld-events.

  1. Buat pemicu yang memfilter peristiwa Cloud Storage dan menggunakan akun layanan default Compute Engine Google Cloud project:

    gcloud eventarc triggers create events-quickstart-trigger \
        --destination-run-service=helloworld-events \
        --destination-run-region=${REGION} \
        --event-filters="type=google.cloud.audit.log.v1.written" \
        --event-filters="serviceName=storage.googleapis.com" \
        --event-filters="methodName=storage.objects.create" \
        --service-account=PROJECT_NUMBER-compute@developer.gserviceaccount.com

    Tindakan ini akan membuat pemicu yang disebut events-quickstart-trigger.

    Perhatikan bahwa saat membuat pemicu Eventarc untuk pertama kalinya dalam project Google Cloud , mungkin akan ada penundaan dalam penyediaan agen layanan Eventarc. Masalah ini biasanya dapat diatasi dengan mencoba membuat ulang pemicu. Untuk informasi selengkapnya, lihat Error izin ditolak.

  2. Untuk mengonfirmasi bahwa events-quickstart-trigger berhasil dibuat, jalankan:

    gcloud eventarc triggers list --location=${REGION}

    events-quickstart-trigger dicantumkan dengan tujuan yang merupakan layanan Cloud Run, helloworld-events.

Membuat dan melihat peristiwa

  1. Untuk membuat peristiwa, upload file teks ke Cloud Storage:

     echo "Hello World" > random.txt
     gsutil cp random.txt gs://events-quickstart-PROJECT_ID/random.txt
    

    Hasil upload ini akan membuat peristiwa dan layanan Cloud Run akan mencatat pesan peristiwa tersebut ke dalam log.

  2. Untuk melihat entri log terkait peristiwa yang dibuat oleh layanan Anda, jalankan perintah berikut:

    gcloud logging read 'textPayload: "Detected change in Cloud Storage bucket"'
    
  3. Cari entri log yang mirip dengan:

    Detected change in Cloud Storage bucket: storage.googleapis.com/projects/_/buckets/BUCKET_NAME/objects/random.txt
    

    dengan BUCKET_NAME adalah nama bucket Cloud Storage.

Anda telah berhasil men-deploy layanan penerima peristiwa ke Cloud Run, membuat pemicu Eventarc, membuat peristiwa dari Cloud Storage, dan menampilkannya di log Cloud Run.

Pembersihan

Meskipun Cloud Run tidak mengenakan biaya saat layanannya tidak digunakan, Anda mungkin tetap ditagih atas penyimpanan image container di Artifact Registry, penyimpanan file di bucket Cloud Storage, dan resource Eventarc.

Anda dapat:

  1. Hapus image container Anda.

  2. Hapus bucket penyimpanan Anda.

  3. Hapus pemicu Eventarc.

Atau, Anda dapat menghapus project Google Cloud untuk menghindari tagihan. Menghapus project Google Cloud Anda akan menghentikan penagihan untuk semua resource yang digunakan dalam project tersebut.

Delete a Google Cloud project:

gcloud projects delete PROJECT_ID

Langkah berikutnya