Memantau perubahan aset dengan Pub/Sub

Anda dapat menerima notifikasi real-time tentang perubahan resource dan kebijakan dengan membuat dan berlangganan feed.

Saat membuat feed, Anda dapat menentukan bahwa Anda ingin memantau perubahan jenis resource, kebijakan IAM, kebijakan akses, dan kebijakan organisasi yang didukung di organisasi, folder, project. Selain itu, Anda dapat menambahkan kondisi ke feed agar hanya menerima notifikasi untuk jenis perubahan tertentu pada aset.

Setelah membuat feed, Anda akan menerima notifikasi melalui Pub/Sub setiap kali aset yang ditentukan berubah. Pesan pertama yang dipublikasikan ke topik Pub/Sub adalah pesan selamat datang dalam format string, dan semua pesan berikutnya dalam format TemporalAsset.

Berikut adalah contoh pesan Pub/Sub untuk jenis konten RESOURCE.

{
  "asset":{
    "ancestors":[
      "projects/000000000000",
      "folders/000000000000",
      "organizations/000000000000"
    ],
    "assetType":"storage.googleapis.com/Bucket",
    "name":"//storage.googleapis.com/my-bucket",
    "resource":{
      "data":{
        LATEST_ASSET_METADATA
      },
      "discoveryDocumentUri":"https://www.googleapis.com/discovery/v1/apis/storage/v1/rest",
      "discoveryName":"Bucket",
      "location":"us",
      "parent":"//cloudresourcemanager.googleapis.com/projects/000000000000",
      "version":"v1"
    },
    "updateTime":"2024-01-30T00:00:00.000000Z"
  },
  "priorAsset":{
    "ancestors":[
      "projects/000000000000",
      "folders/000000000000",
      "organizations/000000000000"
    ],
    "assetType":"storage.googleapis.com/Bucket",
    "name":"//storage.googleapis.com/my-bucket",
    "resource":{
      "data":{
        PREVIOUS_ASSET_METADATA
      },
      "discoveryDocumentUri":"https://www.googleapis.com/discovery/v1/apis/storage/v1/rest",
      "discoveryName":"Bucket",
      "location":"us",
      "parent":"//cloudresourcemanager.googleapis.com/projects/000000000000",
      "version":"v1"
    },
    "updateTime":"2024-01-29T00:00:00.000000Z"
  },
  "priorAssetState":"PRESENT",
  "window":{
    "startTime":"2024-01-30T00:00:00.000000Z"
  }
}

Untuk mempelajari lebih lanjut Pub/Sub atau cara menyiapkan langganan, lihat dokumentasi Pub/Sub.

Sebelum memulai

  1. Aktifkan Cloud Asset Inventory API di project tempat Anda menjalankan perintah Cloud Asset Inventory.

    Aktifkan Cloud Asset Inventory API

  2. Pastikan akun Anda memiliki peran yang benar untuk memanggil Cloud Asset Inventory API. Untuk izin individual untuk setiap jenis panggilan, lihat Izin.

  3. Buat topik Pub/Sub, jika Anda belum memilikinya.

Batasan

  • Diperlukan waktu hingga 10 menit agar pembuatan, pembaruan, atau penghapusan feed diterapkan.

  • Project tempat feed dibuat harus lebih lama dari feed. Hal ini karena akun layanan yang digunakan untuk memublikasikan ke topik Pub/Sub tujuan berada di project tersebut. Feed tidak lagi berfungsi dan dihapus segera setelah penghapusan project bersifat permanen.

  • Anda dapat membuat hingga 200 feed di induk. Batas ini hanya berlaku untuk feed yang langsung mengikuti induk dan tidak menghitung feed turunannya. Misalnya, jika Anda memiliki 10 project dalam organisasi, setiap project dapat memiliki hingga 200 feed, dan organisasi juga dapat memiliki hingga 200 feed.

Membuat feed

gcloud

gcloud asset feeds create FEED_ID \
    --SCOPE \
    --billing-project=BILLING_PROJECT_ID \
    --pubsub-topic=projects/TOPIC_PROJECT_ID/topics/TOPIC_ID \
    --asset-names=ASSET_NAME_1,ASSET_NAME_2,... \
    --asset-types=ASSET_TYPE_1,ASSET_TYPE_2,... \
    --content-type=CONTENT_TYPE \
    --relationship-types=RELATIONSHIP_TYPE_1,RELATIONSHIP_TYPE_2,... \
    --condition-title="CONDITION_TITLE" \
    --condition-description="CONDITION_DESCRIPTION" \
    --condition-expression="CONDITION_EXPRESSION"

Berikan nilai berikut:

  • SCOPE: Gunakan salah satu nilai berikut:

    • project=PROJECT_ID, dengan PROJECT_ID adalah ID project tempat feed akan dibuat.
    • folder=FOLDER_ID, dengan FOLDER_ID adalah ID folder tempat feed akan dibuat.

      Cara menemukan ID Google Cloud folder

      KonsolGoogle Cloud

      Untuk menemukan ID folder Google Cloud , selesaikan langkah-langkah berikut:

      1. Buka konsol Google Cloud .

        Buka Google Cloud konsol

      2. Klik kotak daftar pengganti di panel menu.
      3. Pilih organisasi Anda dari kotak daftar.
      4. Telusuri nama folder Anda. ID folder ditampilkan di samping nama folder.

      gcloud CLI

      Anda dapat mengambil ID folder Google Cloud yang berada di tingkat organisasi dengan perintah berikut:

      gcloud resource-manager folders list \
          --organization=$(gcloud organizations describe ORGANIZATION_NAME \
            --format="value(name.segment(1))") \
          --filter='"DISPLAY_NAME":"TOP_LEVEL_FOLDER_NAME"' \
          --format="value(ID)"

      Dengan TOP_LEVEL_FOLDER_NAME adalah kecocokan string sebagian atau penuh untuk nama folder. Hapus tanda --format untuk melihat informasi selengkapnya tentang folder yang ditemukan.

      Perintah sebelumnya tidak menampilkan ID subfolder dalam folder. Untuk melakukannya, jalankan perintah berikut menggunakan ID folder tingkat teratas:

      gcloud resource-manager folders list --folder=FOLDER_ID
    • organization=ORGANIZATION_ID, dengan ORGANIZATION_ID adalah ID organisasi tempat feed akan dibuat.

      Cara menemukan ID Google Cloud organisasi

      KonsolGoogle Cloud

      Untuk menemukan ID organisasi Google Cloud , selesaikan langkah-langkah berikut:

      1. Buka konsol Google Cloud .

        Buka Google Cloud konsol

      2. Klik kotak daftar pengganti di panel menu.
      3. Pilih organisasi Anda dari kotak daftar.
      4. Klik tab Semua. ID organisasi ditampilkan di samping nama organisasi.

      gcloud CLI

      Anda dapat mengambil ID Google Cloud organisasi dengan perintah berikut:

      gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
  • FEED_ID: ID feed aset yang unik.
  • BILLING_PROJECT_ID: Opsional. ID project tempat agen layanan Cloud Asset Inventory default berada yang memiliki izin untuk mengelola topik Pub/Sub Anda. Baca selengkapnya cara menyetel project penagihan.

  • TOPIC_PROJECT_ID: ID project tempat topik Pub/Sub berada.
  • TOPIC_ID: ID topik Pub/Sub yang akan menerima publikasi notifikasi.
  • Setidaknya satu definisi aset berikut:
  • CONTENT_TYPE: Opsional. jenis konten metadata yang ingin Anda ambil. Jika --content-type tidak ditentukan, hanya informasi dasar yang ditampilkan, seperti nama aset, terakhir kali aset diperbarui, dan project, folder, serta organisasi tempat aset tersebut berada.
  • RELATIONSHIP_TYPE_#: Opsional. Memerlukan akses ke tingkat Security Command Center Premium atau Enterprise, atau Gemini Cloud Assist. Daftar jenis hubungan aset yang dipisahkan koma yang ingin Anda ambil. Anda harus menetapkan CONTENT_TYPE ke RELATIONSHIP agar fungsi ini dapat bekerja.
  • Jika menambahkan kondisi feed opsional, sertakan detail berikut dalam perintah Anda:
    • CONDITION_TITLE: Judul yang akan ditetapkan ke kondisi feed.
    • CONDITION_DESCRIPTION: Deskripsi yang akan ditetapkan ke kondisi feed.
    • CONDITION_EXPRESSION: Ekspresi kondisi yang akan diterapkan ke feed.

Lihat referensi gcloud CLI untuk semua opsi.

Contoh

Jalankan perintah berikut untuk membuat feed di topik Pub/Sub my-topic yang memberi tahu saat perubahan dilakukan pada resource berikut di project my-project.

  • Bucket Cloud Storage my-bucket
  • Tabel BigQuery apa pun
gcloud asset feeds create my-feed \
    --project=my-project \
    --pubsub-topic=projects/my-project/topics/my-topic \
    --asset-names=//storage.googleapis.com/my-bucket \
    --asset-types=bigquery.googleapis.com/Table \
    --content-type=resource

Contoh respons

assetNames:
- //storage.googleapis.com/my-bucket
assetTypes:
- bigquery.googleapis.com/Table
condition: {}
contentType: RESOURCE
feedOutputConfig:
  pubsubDestination:
    topic: projects/my-project/topics/my-topic
name: projects/000000000000/feeds/my-feed

REST

Metode HTTP dan URL:

POST https://cloudasset.googleapis.com/v1/SCOPE_PATH/feeds

Header:

X-Goog-User-Project: BILLING_PROJECT_ID

Meminta isi JSON:

{
  "feedId": "FEED_ID",
  "feed": {
    "assetNames": [
      "ASSET_NAME_1",
      "ASSET_NAME_2",
      "..."
    ],
    "assetTypes": [
      "ASSET_TYPE_1",
      "ASSET_TYPE_2",
      "..."
    ],
    "contentType": "CONTENT_TYPE",
    "relationshipTypes": [
      "RELATIONSHIP_TYPE_1",
      "RELATIONSHIP_TYPE_2",
      "..."
    ],
    "feedOutputConfig": {
      "pubsubDestination": {
        "topic": "projects/TOPIC_PROJECT_ID/topics/TOPIC_ID"
      }
    },
    "condition": {
      "title": "CONDITION_TITLE",
      "description": "CONDITION_DESCRIPTION",
      "expression": "CONDITION_EXPRESSION"
    }
  }
}

Berikan nilai berikut:

  • SCOPE_PATH: Gunakan salah satu nilai berikut:

    Nilai yang diizinkan adalah:

    • projects/PROJECT_ID, dengan PROJECT_ID adalah ID project tempat feed akan dibuat.
    • projects/PROJECT_NUMBER, dengan PROJECT_NUMBER adalah jumlah project untuk membuat feed.

      Cara menemukan Google Cloud nomor project

      KonsolGoogle Cloud

      Untuk menemukan nomor project Google Cloud , selesaikan langkah-langkah berikut:

      1. Buka halaman Selamat Datang di konsol Google Cloud .

        Buka Selamat Datang

      2. Klik kotak daftar pengganti di panel menu.
      3. Pilih organisasi Anda dari kotak daftar, lalu telusuri nama project Anda. Nama project, nomor project, dan project ID ditampilkan di dekat judul Selamat Datang.

        Hingga 4.000 resource ditampilkan. Jika Anda tidak melihat project yang Anda cari, buka halaman Kelola resource dan filter daftar menggunakan nama project tersebut.

      gcloud CLI

      Anda dapat mengambil nomor project Google Cloud dengan perintah berikut:

      gcloud projects describe PROJECT_ID --format="value(projectNumber)"
    • folders/FOLDER_ID, dengan FOLDER_ID adalah ID folder tempat feed akan dibuat.

      Cara menemukan ID Google Cloud folder

      KonsolGoogle Cloud

      Untuk menemukan ID folder Google Cloud , selesaikan langkah-langkah berikut:

      1. Buka konsol Google Cloud .

        Buka Google Cloud konsol

      2. Klik kotak daftar pengganti di panel menu.
      3. Pilih organisasi Anda dari kotak daftar.
      4. Telusuri nama folder Anda. ID folder ditampilkan di samping nama folder.

      gcloud CLI

      Anda dapat mengambil ID folder Google Cloud yang berada di tingkat organisasi dengan perintah berikut:

      gcloud resource-manager folders list \
          --organization=$(gcloud organizations describe ORGANIZATION_NAME \
            --format="value(name.segment(1))") \
          --filter='"DISPLAY_NAME":"TOP_LEVEL_FOLDER_NAME"' \
          --format="value(ID)"

      Dengan TOP_LEVEL_FOLDER_NAME adalah kecocokan string sebagian atau penuh untuk nama folder. Hapus tanda --format untuk melihat informasi selengkapnya tentang folder yang ditemukan.

      Perintah sebelumnya tidak menampilkan ID subfolder dalam folder. Untuk melakukannya, jalankan perintah berikut menggunakan ID folder tingkat teratas:

      gcloud resource-manager folders list --folder=FOLDER_ID
    • organizations/ORGANIZATION_ID, dengan ORGANIZATION_ID adalah ID organisasi tempat feed akan dibuat.

      Cara menemukan ID Google Cloud organisasi

      KonsolGoogle Cloud

      Untuk menemukan ID organisasi Google Cloud , selesaikan langkah-langkah berikut:

      1. Buka konsol Google Cloud .

        Buka Google Cloud konsol

      2. Klik kotak daftar pengganti di panel menu.
      3. Pilih organisasi Anda dari kotak daftar.
      4. Klik tab Semua. ID organisasi ditampilkan di samping nama organisasi.