Bekerja di beberapa project

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

  • Project pengelola: Jika Anda ingin satu project memicu operasi Cloud Asset Inventory di project lain.

  • Mengekspor lintas project: Jika Anda ingin mengekspor metadata resource dari satu project ke project lain.

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

Project Orchestrator

Saat Anda 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 tersebut harus 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 sedang 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 telah mengaktifkan Cloud Asset Inventory API, dan akun layanan dengan izin untuk mengelola topik Pub/Sub, bucket Cloud Storage, atau tabel BigQuery target Anda.

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 telah mengaktifkan Cloud Asset Inventory API, dan akun layanan dengan izin untuk mengelola topik Pub/Sub, bucket Cloud Storage, atau tabel BigQuery target Anda.

Mengekspor di seluruh project

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

Hal ini memungkinkan dua hal:

  • Anda dapat mengekspor metadata aset dari PROJECT_A ke topik Pub/Sub, bucket Cloud Storage, atau tabel BigQuery yang berada 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 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)"

  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) kepada akun layanan di 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.admin
      
    • Untuk menulis ke tabel BigQuery, berikan peran BigQuery Data Editor (roles/bigquery.dataEditor) dan Pengguna BigQuery (roles/bigquery.user) kepada 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.dataEditor
      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
      

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.