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 izinkan 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.

    Mengaktifkan Cloud Asset Inventory API

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

Melihat kebijakan yang efektif 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 project ID yang merupakan level teratas untuk memeriksa kebijakan IAM yang efektif.
    • projects/PROJECT_NUMBER, dengan PROJECT_NUMBER adalah nomor project yang merupakan tingkat teratas untuk memeriksa kebijakan IAM yang efektif.

      Cara menemukan Google Cloud nomor project

      Konsol Google Cloud

      Untuk menemukan Google Cloud nomor project, 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 Google Cloud nomor project 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 yang efektif.

      Cara menemukan ID Google Cloud folder

      Konsol Google Cloud

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

      1. Buka konsol Google Cloud.

        Buka konsol Google Cloud

      2. Klik kotak daftar pengalih 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 terletak 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 pencocokan 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 yang efektif.

      Cara menemukan ID Google Cloud organisasi

      Konsol Google Cloud

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

      1. Buka konsol Google Cloud.

        Buka konsol Google Cloud

      2. Klik kotak daftar pengalih 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 maksimal 20 aset dalam satu batch.

Lihat referensi gcloud CLI untuk semua opsi.

Contoh

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

Cara menemukan ID Google Cloud organisasi

Konsol Google Cloud

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

  1. Buka konsol Google Cloud.

    Buka konsol Google Cloud

  2. Klik kotak daftar pengalih 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 project ID yang merupakan level teratas untuk memeriksa kebijakan IAM yang efektif.
    • projects/PROJECT_NUMBER, dengan PROJECT_NUMBER adalah nomor project yang merupakan tingkat teratas untuk memeriksa kebijakan IAM yang efektif.

      Cara menemukan Google Cloud nomor project

      Konsol Google Cloud

      Untuk menemukan Google Cloud nomor project, 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 Google Cloud nomor project 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 yang efektif.

      Cara menemukan ID Google Cloud folder

      Konsol Google Cloud

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

      1. Buka konsol Google Cloud.

        Buka konsol Google Cloud

      2. Klik kotak daftar pengalih 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 terletak 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 pencocokan 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 yang efektif.

      Cara menemukan ID Google Cloud organisasi

      Konsol Google Cloud

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

      1. Buka konsol Google Cloud.

        Buka konsol Google Cloud

      2. Klik kotak daftar pengalih 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 maksimal 20 aset dalam satu batch.

Lihat referensi REST untuk semua opsi.

Contoh perintah

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

Cara menemukan ID Google Cloud organisasi

Konsol Google Cloud

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

  1. Buka konsol Google Cloud.

    Buka konsol Google Cloud

  2. Klik kotak daftar pengalih 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"
                ]
              }
            ]
          }
        }
      ]
    }
  ]
}