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 yang paling umum:

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

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

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 penagihan project tidak ditentukan, Inventaris Aset Cloud menggunakan Inventaris Aset Cloud default akun layanan dalam project yang melakukan panggilan, yang mungkin tidak memiliki izin yang diperlukan untuk menyelesaikan operasi tersebut.

Meskipun tidak diwajibkan untuk semua operasi, bisa menjadi praktik yang baik untuk menentukan proyek 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.

Ekspor di berbagai 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 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 berada di PROJECT_B.

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

Untuk mengekspor metadata aset dari satu project ke project lainnya, selesaikan langkah-langkah berikut petunjuk:

  1. Pastikan bahwa Cloud Asset Inventory API sekarang 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 Inventaris Aset Cloud default Anda. 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 Sambutan

    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 halaman Welcome {i>heading<i}.

      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 izin Admin penyimpanan (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 Inventaris Aset Cloud dengan gcloud CLI dari PROJECT_B atau menggunakan REST API, pastikan untuk tetapkan PROJECT_A sebagai project penagihan.