Melihat kebijakan IAM yang efektif

Di IAM, kebijakan efektif menjelaskan cara semua kebijakan induk dan ancestor dalam hierarki resource diwariskan untuk suatu resource.

Hanya kebijakan izin yang didukung untuk pengambilan melalui Inventaris Aset Cloud. Bentuk kontrol akses berikut tidak didukung:

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.

Melihat kebijakan yang berlaku pada resource

gcloud

gcloud asset get-effective-iam-policy \
    --scope=SCOPE_PATH \
    --names=ASSET_NAME_1,ASSET_NAME_2,...

Berikan nilai berikut:

  • SCOPE_PATH: Gunakan salah satu nilai berikut:

    Nilai yang diizinkan adalah:

    • projects/PROJECT_ID, dengan PROJECT_ID adalah ID project yang merupakan tingkat teratas untuk memeriksa kebijakan IAM efektif.
    • projects/PROJECT_NUMBER, dengan PROJECT_NUMBER adalah jumlah project yang merupakan tingkat teratas untuk memeriksa kebijakan IAM efektif.

      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 yang merupakan level teratas untuk memeriksa kebijakan IAM efektif.

      Cara menemukan ID Google Cloud folder

      KonsolGoogle Cloud

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

      1. Buka konsol Google Cloud .

        Buka konsol Google Cloud

      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 yang merupakan tingkat teratas untuk memeriksa kebijakan IAM efektif.

      Cara menemukan ID Google Cloud organisasi

      KonsolGoogle Cloud

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

      1. Buka konsol Google Cloud .

        Buka konsol Google Cloud

      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 organisasi Google Cloud dengan perintah berikut:

      gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
  • ASSET_NAME_#: Daftar nama lengkap aset yang dipisahkan koma.

Anda dapat mengambil kebijakan untuk maksimum 20 aset dalam satu batch.

Lihat referensi gcloud CLI untuk semua opsi.

Contoh

Jalankan perintah berikut untuk melihat kebijakan IAM yang efektif pada instance Compute Engine my-instance yang diwariskan dari organisasi dengan ID my-organization-id.

Cara menemukan ID Google Cloud organisasi

KonsolGoogle Cloud

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

  1. Buka konsol Google Cloud .

    Buka konsol Google Cloud

  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 organisasi Google Cloud dengan perintah berikut:

gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
gcloud asset get-effective-iam-policy \
    --scope=organizations/my-organization-id \
    --names=//compute.googleapis.com/projects/my-project/zones/us-central1-a/instances/my-instance

Contoh respons

policyResults:
- fullResourceName: //compute.googleapis.com/projects/my-project/zones/us-central1-a/instances/my-instance
  policies:
  - attachedResource: //cloudresourcemanager.googleapis.com/projects/my-project
    policy:
      bindings:
      - members:
        - user:alex@example.com
        - user:bola@example.com
        role: roles/cloudkms.admin
      - members:
        - serviceAccount:000000000000-compute@developer.gserviceaccount.com
        role: roles/editor
  - attachedResource: //cloudresourcemanager.googleapis.com/folders/000000000000
    policy:
      bindings:
      - members:
        - user:cruz@example.com
        role: roles/resourcemanager.folderAdmin
      - members:
        - user:dani@example.com
        role: roles/resourcemanager.folderEditor
  - attachedResource: //cloudresourcemanager.googleapis.com/organizations/0000000000000
    policy:
      bindings:
      - members:
        - user:hao@example.com
        role: organizations/0000000000000/roles/CustomProjectAdmin
      - members:
        - serviceAccount:000000000000@cloudservices.gserviceaccount.com
        - user:ira@example.com
        - user:jie@example.com
        role: roles/accesscontextmanager.policyAdmin

REST

Metode HTTP dan URL:

POST https://cloudasset.googleapis.com/v1/SCOPE_PATH/effectiveIamPolicies:batchGet

Meminta isi JSON:

{
  "names": [
    "ASSET_NAME_1",
    "ASSET_NAME_2",
    "..."
  ]
}

Berikan nilai berikut:

  • SCOPE_PATH: Gunakan salah satu nilai berikut:

    Nilai yang diizinkan adalah:

    • projects/PROJECT_ID, dengan PROJECT_ID adalah ID project yang merupakan tingkat teratas untuk memeriksa kebijakan IAM efektif.
    • projects/PROJECT_NUMBER, dengan PROJECT_NUMBER adalah jumlah project yang merupakan tingkat teratas untuk memeriksa kebijakan IAM efektif.

      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 yang merupakan level teratas untuk memeriksa kebijakan IAM efektif.

      Cara menemukan ID Google Cloud folder

      KonsolGoogle Cloud

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

      1. Buka konsol Google Cloud .

        Buka konsol Google Cloud

      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 yang merupakan tingkat teratas untuk memeriksa kebijakan IAM efektif.

      Cara menemukan ID Google Cloud organisasi

      KonsolGoogle Cloud

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

      1. Buka konsol Google Cloud .

        Buka konsol Google Cloud

      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 organisasi Google Cloud dengan perintah berikut:

      gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
  • ASSET_NAME_#: Array nama lengkap aset.

Anda dapat mengambil kebijakan untuk maksimum 20 aset dalam satu batch.

Lihat referensi REST untuk semua opsi.

Contoh perintah

Jalankan salah satu perintah berikut untuk melihat kebijakan IAM efektif pada instance Compute Engine my-instance yang diwariskan dari organisasi dengan ID my-organization-id.

Cara menemukan ID Google Cloud organisasi

KonsolGoogle Cloud

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

  1. Buka konsol Google Cloud .

    Buka konsol Google Cloud

  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 organisasi Google Cloud dengan perintah berikut:

gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"

curl (Linux, macOS, atau Cloud Shell)

curl -X POST \
     -H "X-HTTP-Method-Override: GET" \
     -H "Authorization: Bearer $(gcloud auth print-access-token)" \
     -H "Content-Type: application/json; charset=utf-8" \
     -d '{
            "names": [
              "//compute.googleapis.com/projects/my-project/zones/us-central1-a/instances/my-instance"
            ]
          }' \
     https://cloudasset.googleapis.com/v1/organizations/my-organization-id/effectiveIamPolicies:batchGet

PowerShell (Windows)

$cred = gcloud auth print-access-token

$headers = @{ 
  "X-HTTP-Method-Override" = "GET";
  "Authorization" = "Bearer $cred"
}


$body = @"
{
  "names": [
    "//compute.googleapis.com/projects/my-project/zones/us-central1-a/instances/my-instance"
  ]
}
"@

Invoke-WebRequest `
  -Method POST `
  -Headers $headers `
  -ContentType: "application/json; charset=utf-8" `
  -Body $body `
  -Uri "https://cloudasset.googleapis.com/v1/organizations/my-organization-id/effectiveIamPolicies:batchGet" | Select-Object -Expand Content

Contoh respons

{
  "policyResults": [
    {
      "fullResourceName": "//compute.googleapis.com/projects/my-project/zones/us-central1-a/instances/instance-1",
      "policies": [
        {
          "attachedResource": "//cloudresourcemanager.googleapis.com/projects/my-project",
          "policy": {
            "bindings": [
              {
                "role": "roles/cloudkms.admin",
                "members": [
                  "user:alex@example.com",
                  "user:bola@example.com"
                ]
              },
              {
                "role": "roles/editor",
                "members": [
                  "serviceAccount:000000000000-compute@developer.gserviceaccount.com"
                ]
              }
            ]
          }
        },
        {
          "attachedResource": "//cloudresourcemanager.googleapis.com/folders/000000000000",
          "policy": {
            "bindings": [
              {
                "role": "roles/resourcemanager.folderAdmin",
                "members": [
                  "user:cruz@example.com"
                ]
              },
              {
                "role": "roles/resourcemanager.folderEditor",
                "members": [
                  "user:dani@example.com"
                ]
              }
            ]
          }
        },
        {
          "attachedResource": "//cloudresourcemanager.googleapis.com/organizations/000000000000",
          "policy": {
            "bindings": [
              {
                "role": "organizations/1060291660910/roles/CustomProjectAdmin",
                "members": [
                  "user:hao@example.com"
                ]
              },
              {
                "role": "roles/accesscontextmanager.policyAdmin",
                "members": [
                  "serviceAccount:000000000000@cloudservices.gserviceaccount.com",
                  "user:ira@example.com",
                  "user:jie@example.com"
                ]
              }
            ]
          }
        }
      ]
    }
  ]
}