Bekerja di beberapa project

Bergantung pada kebutuhan Anda, Anda mungkin perlu mendesain arsitektur agar dapat berfungsi di beberapa project saat menggunakan Inventaris Aset Cloud. Skenario berikut adalah yang paling umum:

Setiap skenario ini memerlukan beberapa penyiapan untuk memastikan operasi berhasil selesai.

Project Orchestrator

Saat menggunakan project untuk memicu operasi Inventaris Aset Cloud pada resource di project lain, dalam skenario tertentu, Anda perlu menentukan bahwa akun layanan Inventaris Aset Cloud default di project lain digunakan untuk melakukan operasi. Skenario ini mencakup:

Untuk menetapkan akun layanan yang akan digunakan, Anda menetapkan project penagihan ke ID project yang berisi resource yang Anda operasikan. Jika project penagihan tidak ditentukan, Cloud Asset Inventory akan menggunakan akun layanan Cloud Asset Inventory default di project yang melakukan panggilan, yang mungkin tidak memiliki izin yang diperlukan untuk menyelesaikan operasi.

Meskipun tidak diperlukan untuk semua operasi, sebaiknya selalu tentukan project penagihan untuk meminimalkan kebingungan.

gcloud

Untuk gcloud CLI, tambahkan flag --billing-project ke perintah Anda untuk menentukan project ID yang berisi akun layanan yang benar:

--billing-project=BILLING_PROJECT_ID

Atau, Anda dapat menetapkan project penagihan sebelum menjalankan perintah dengan gcloud CLI. Pertama, periksa apakah project penagihan berbeda dari project inti:

gcloud config list

Kemudian, jika perlu, tetapkan project penagihan:

gcloud config set billing/quota_project BILLING_PROJECT_ID

Berikan nilai berikut:

  • BILLING_PROJECT_ID: ID project yang memiliki Cloud Asset Inventory API diaktifkan, dan akun layanan dengan izin untuk mengelola topik Pub/Sub target, bucket Cloud Storage, atau tabel BigQuery.

REST

Untuk REST API, tambahkan header X-Goog-User-Project untuk menentukan ID project yang berisi akun layanan yang benar:

"X-Goog-User-Project: BILLING_PROJECT_ID"

Berikan nilai berikut:

  • BILLING_PROJECT_ID: ID project yang memiliki Cloud Asset Inventory API diaktifkan, dan akun layanan dengan izin untuk mengelola topik Pub/Sub target, bucket Cloud Storage, atau tabel BigQuery.

Mengekspor di seluruh project

Untuk mengekspor metadata aset dari satu project, PROJECT_A, ke project lain, PROJECT_B, Anda harus memberikan akses ke akun layanan Inventaris Aset Cloud default di PROJECT_A ke resource di PROJECT_B.

Hal ini memungkinkan dua hal:

  • Anda dapat mengekspor metadata aset dari PROJECT_A ke topik Pub/Sub, bucket Cloud Storage, atau tabel BigQuery yang terletak di PROJECT_B.

  • Anda dapat menggunakan PROJECT_A untuk mengekspor metadata aset dari PROJECT_B ke topik Pub/Sub, bucket Cloud Storage, atau tabel BigQuery yang berada di PROJECT_B.

Untuk mengekspor metadata aset dari satu project ke project lain, selesaikan petunjuk berikut:

  1. Pastikan Cloud Asset Inventory API diaktifkan di project tempat Anda ingin menjalankan permintaan, PROJECT_A.

  2. Lakukan setidaknya satu panggilan ke Cloud Asset Inventory API di PROJECT_A untuk membuat akun layanan Cloud Asset Inventory default. Atau, Anda dapat membuatnya secara manual:

    gcloud beta services identity create \
        --service=cloudasset.googleapis.com \
        --project=PROJECT_A_ID
    gcloud projects add-iam-policy-binding PROJECT_A_ID \
        --member=serviceAccount:service-PROJECT_A_NUMBER@gcp-sa-cloudasset.iam.gserviceaccount.com \
        --role=roles/cloudasset.serviceAgent
    

    Cara menemukan nomor project Google Cloud

    Konsol Google 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 pengalih 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 dicari, 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)"

  3. Berikan peran yang benar ke akun layanan di PROJECT_A.

    • Untuk memublikasikan ke feed melalui Pub/Sub, berikan peran Pub/Sub Publisher (roles/pubsub.publisher) ke akun layanan pada topik:

      gcloud pubsub topics add-iam-policy-binding projects/PROJECT_B_ID/topics/TOPIC_ID \
          --member=serviceAccount:service-PROJECT_A_NUMBER@gcp-sa-cloudasset.iam.gserviceaccount.com \
          --role=roles/pubsub.publisher
      
    • Untuk menulis ke bucket Cloud Storage, berikan peran Storage admin (roles/storage.admin) ke akun layanan di bucket:

      gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \
        --member=serviceAccount:service-PROJECT_A_NUMBER@gcp-sa-cloudasset.iam.gserviceaccount.com \
        --role=roles/storage.objectCreator
      
    • Untuk menulis ke tabel BigQuery, berikan peran BigQuery Data Editor (roles/bigquery.dataEditor) dan BigQuery user (roles/bigquery.user) ke akun layanan di project:

      gcloud projects add-iam-policy-binding PROJECT_B_ID \
          --member=serviceAccount:service-PROJECT_A_NUMBER@gcp-sa-cloudasset.iam.gserviceaccount.com \
          --role=roles/bigquery.user
      gcloud projects add-iam-policy-binding PROJECT_B_ID \
          --member=serviceAccount:service-PROJECT_A_NUMBER@gcp-sa-cloudasset.iam.gserviceaccount.com \
          --role=roles/bigquery.dataEditor
      

Jika Anda membuat permintaan Cloud Asset Inventory dengan gcloud CLI dari PROJECT_B atau menggunakan REST API, pastikan untuk menentukan PROJECT_A sebagai project penagihan.