Menganalisis kebijakan organisasi

Halaman ini berisi informasi tentang cara menganalisis setelan kebijakan organisasi Anda untuk melihat resource mana yang tercakup dalam kebijakan organisasi mana. Dengan menggunakan Policy Analyzer untuk Kebijakan Organisasi, Anda dapat membuat kueri analisis untuk mendapatkan informasi tentang kebijakan organisasi kustom dan standar.

Kueri analisis terdiri dari cakupan dan batasan.

  • Batasan: menentukan nama resource batasan.
  • Cakupan: menentukan organisasi untuk cakupan analisis. Semua kebijakan organisasi dengan batasan yang ditentukan dalam cakupan ini disertakan dalam analisis.

  • Untuk mengetahui informasi selengkapnya tentang kebijakan organisasi, lihat Pengantar Layanan Kebijakan Organisasi.

  • Untuk mengetahui informasi selengkapnya tentang cara membuat batasan kustom, lihat Membuat dan mengelola batasan kustom.

  • Untuk informasi selengkapnya tentang batasan terkelola, lihat Menggunakan batasan.

Sebelum memulai

  • Enable the Cloud Asset API.

    Enable the API

    Anda harus mengaktifkan API di project yang akan digunakan untuk mengirim kueri. Resource ini tidak harus sama dengan resource yang Anda gunakan untuk cakupan kueri.

  • Opsional: Jika Anda ingin menjalankan lebih dari 20 kueri analisis kebijakan per organisasi per hari, pastikan Anda memiliki aktivasi level organisasi untuk paket premium Security Command Center. Untuk informasi selengkapnya, lihat Pertanyaan penagihan.

Peran dan izin yang diperlukan

Untuk mendapatkan izin yang diperlukan untuk menjalankan analisis kebijakan organisasi, minta administrator untuk memberi Anda peran IAM berikut pada resource organisasi tempat Anda ingin melakukan analisis:

Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses ke project, folder, dan organisasi.

Peran yang telah ditetapkan ini berisi izin yang diperlukan untuk menjalankan analisis kebijakan organisasi. Untuk melihat izin yang benar-benar diperlukan, luaskan bagian Izin yang diperlukan:

Izin yang diperlukan

Izin berikut diperlukan untuk menjalankan analisis kebijakan organisasi:

  • Untuk melakukan analisis:
    • cloudasset.assets.analyzeOrgPolicy
    • cloudasset.assets.searchAllResources
    • cloudasset.assets.searchAllIamPolicies
  • Untuk melihat batasan kustom dan terkelola: orgpolicy.customConstraints.get

Anda mungkin juga bisa mendapatkan izin ini dengan peran khusus atau peran bawaan lainnya.

Harga dan kuota

Policy Analyzer untuk Kebijakan Organisasi dalam skala besar (di atas 20 kueri per organisasi per hari) dan visualisasi pewarisan hanya tersedia untuk pelanggan dengan aktivasi Security Command Center level organisasi.

Kuota untuk Penganalisis Kebijakan untuk Kebijakan Organisasi dibagikan di antara semua alat Penganalisis Kebijakan. Untuk informasi selengkapnya, lihat Pertanyaan terkait penagihan.

Menganalisis kebijakan yang dikonfigurasi

Kebijakan organisasi dibuat dari batasan dan kondisi opsional yang menjadi dasar penerapan batasan tersebut. Anda dapat menggunakan Penganalisis Kebijakan untuk menampilkan daftar kebijakan organisasi dengan batasan tertentu dan resource yang dilampirkan ke kebijakan tersebut.

Untuk setiap kebijakan organisasi yang terdeteksi dalam cakupan kueri, Penganalisis Kebijakan akan menampilkan entri hasil. Entri hasil berisi kolom berikut:

  • consolidatedPolicy: resource tempat kebijakan organisasi disertakan, dan penerapan kebijakan yang efektif pada resource tersebut sehubungan dengan aturan evaluasi hierarki.

  • project: ID resource project tempat kebijakan gabungan ini berada.

  • folders: ID resource folder yang merupakan ancestor resource tempat kebijakan organisasi dilampirkan.

  • organization: ID resource organisasi yang merupakan ancestor resource tempat kebijakan organisasi dilampirkan.

  • policyBundle: kebijakan organisasi yang dikonfigurasi penuh yang dilampirkan ke resource di atas, dan kebijakan organisasi yang ditentukan pada ancestor-nya dalam hierarki resource.

Jika resource Anda dilindungi oleh perimeter layanan Kontrol Layanan VPC, Anda harus membuat aturan keluar di perimeter resource organisasi yang mengizinkan akses ke layanan cloudasset.googleapis.com dan metode google.cloud.asset.v1.AssetService.SearchAllResources. Jika Anda tidak memiliki aturan keluar, permintaan akan gagal dengan error NETWORK_NOT_IN_SAME_SERVICE_PERIMETER. Untuk mengetahui informasi selengkapnya, lihat Men-debug permintaan yang diblokir oleh Kontrol Layanan VPC.

Konsol

  1. Di konsol Google Cloud, buka halaman Policy Analyzer.

    Buka Penganalisis Kebijakan

  2. Di bagian Analisis kebijakan organisasi, temukan panel berlabel Di mana kebijakan organisasi tertentu dikonfigurasi?, lalu klik Buat kueri di panel tersebut.

  3. Di kotak Select query organization, pilih organisasi yang kebijakannya ingin Anda analisis.

  4. Pilih jenis batasan yang ingin Anda analisis. Untuk batasan standar atau dikelola, pilih Batasan bawaan. Untuk batasan kustom, pilih Custom constraint.

  5. Masukkan nama batasan yang ingin Anda analisis. Awalan untuk jenis batasan yang Anda analisis sudah disertakan. Misalnya, untuk batasan pembatasan domain yang telah ditentukan sebelumnya, masukkan iam.allowedPolicyMemberDomains, untuk batasan pembuatan akun layanan yang dikelola, masukkan iam.managed.disableServiceAccountKeyCreation, dan untuk batasan kustom, masukkan namanya, seperti disableGkeAutoUpgrade.

  6. Klik Analyze, lalu Run query. Halaman laporan menampilkan parameter kueri yang Anda masukkan, dan tabel hasil dari semua resource yang dikenai batasan ini secara langsung.

  7. Anda dapat menyimpan kueri ini untuk dilihat lagi nanti dengan mengklik Salin URL kueri. Untuk melihat kueri ini, buka URL yang dihasilkan.

  8. Anda dapat memvisualisasikan pewarisan batasan yang dianalisis dengan memilih minimal satu resource dari daftar, lalu mengklik Lihat pewarisan. Anda juga dapat langsung membuka tampilan visualisasi saat membuat kueri analisis dengan mengklik Analisis, lalu Visualisasi. Lihat Memvisualisasikan pewarisan untuk mengetahui informasi selengkapnya.

gcloud

Untuk mendapatkan analisis tentang cara penerapan batasan kebijakan organisasi dalam organisasi, gunakan perintah gcloud asset analyze-org-policies:

gcloud asset analyze-org-policies \
    --constraint=CONSTRAINT_NAME  \
    --scope=organizations/ORGANIZATION_ID \
    --limit=LIMIT_POLICIES \
    --filter=FILTER_QUERY

Ganti kode berikut:

  • CONSTRAINT_NAME: nama batasan kebijakan organisasi yang ingin Anda analisis. Untuk daftar batasan, lihat Batasan kebijakan organisasi.

  • ORGANIZATION_ID: ID resource organisasi Anda. Untuk mengetahui informasi selengkapnya tentang cara menemukan ID organisasi, lihat Membuat dan mengelola organisasi.

  • LIMIT_POLICIES: jumlah entri hasil yang ingin Anda lihat. Untuk melihat entri tanpa batas, masukkan unlimited.

  • FILTER_QUERY: kueri filter untuk hanya melihat kebijakan yang cocok dengan ekspresi pemfilteran Anda. Satu-satunya kolom yang tersedia untuk pemfilteran adalah consolidated_policy.attached_resource. Misalnya, consolidated_policy.attached_resource="//cloudresourcemanager.googleapis.com/projects/1234567890" hanya akan menampilkan kebijakan yang dilampirkan ke project dengan project ID 1234567890.

Respons YAML mirip dengan berikut ini:

Contoh respons YAML

---
consolidatedPolicy:
  appliedResource: //cloudresourcemanager.googleapis.com/projects/opa-test-project-1-364621
  attachedResource: //cloudresourcemanager.googleapis.com/projects/opa-test-project-1-364621
  rules:
  - enforce: true
policyBundle:
- appliedResource: //cloudresourcemanager.googleapis.com/projects/opa-test-project-1-364621
  attachedResource: //cloudresourcemanager.googleapis.com/projects/opa-test-project-1-364621
  reset: true
- appliedResource: //cloudresourcemanager.googleapis.com/organizations/474566717491
  rules:
  - enforce: true
---
consolidatedPolicy:
  appliedResource: //cloudresourcemanager.googleapis.com/organizations/474566717491
  rules:
  - enforce: true
policyBundle:
- appliedResource: //cloudresourcemanager.googleapis.com/organizations/474566717491
  rules:
  - enforce: true

REST

Untuk mendapatkan analisis tentang cara batasan kebijakan organisasi diterapkan dalam organisasi, gunakan metode analyzeOrgPolicies Cloud Asset API.

Metode HTTP dan URL:

GET https://cloudasset.googleapis.com/v1/organizations/ORGANIZATION_ID:analyzeOrgPolicies

Meminta isi JSON:

JSON_REQUEST="{
  'constraint': 'CONSTRAINT_NAME',
  'filter': 'FILTER_QUERY',
  'page_size': PAGE_SIZE,
  'page_token': PAGE_TOKEN
}"

Ganti kode berikut:

  • ORGANIZATION_ID: ID resource organisasi Anda. Untuk mengetahui informasi selengkapnya tentang cara menemukan ID organisasi, lihat Membuat dan mengelola organisasi.

  • CONSTRAINT_NAME: nama batasan kebijakan organisasi yang ingin Anda analisis. Untuk daftar batasan, lihat Batasan kebijakan organisasi.

  • FILTER_QUERY: kueri filter untuk hanya melihat kebijakan yang cocok dengan ekspresi pemfilteran Anda. Satu-satunya kolom yang tersedia untuk pemfilteran adalah consolidated_policy.attached_resource. Misalnya, consolidated_policy.attached_resource="//cloudresourcemanager.googleapis.com/projects/1234567890" hanya akan menampilkan kebijakan yang dilampirkan ke project dengan project ID 1234567890.

  • PAGE_SIZE: jumlah entri hasil per halaman yang ingin Anda lihat. Untuk melihat entri tanpa batas, masukkan unlimited. Permintaan yang dibuat dengan tanda ini ditetapkan akan menampilkan nilai nextPageToken jika jumlah total entri hasil lebih besar dari PAGE_SIZE.

  • PAGE_TOKEN: hanya akan ditetapkan pada permintaan setelah permintaan pertama yang menyertakan flag page_size. Anda dapat menggunakan nilai nextPageToken yang diterima dari respons sebelumnya untuk menampilkan halaman hasil tertentu.

Respons JSON mirip dengan berikut ini:

Contoh respons JSON

{
  "orgPolicyResults": [
    {
      "consolidatedPolicy": {
        "attachedResource": "//cloudresourcemanager.googleapis.com/folders/123456789012",
        "rules": [
          {
            "values": {
              "allowedValues": [
                "C0265whk2"
              ]
            }
          },
          {
            "values": {
              "allowedValues": [
                "C03kd36xr"
              ]
            }
          }
        ],
        "appliedResource": "//cloudresourcemanager.googleapis.com/folders/123456789012"
      },
      "policyBundle": [
        {
          "attachedResource": "//cloudresourcemanager.googleapis.com/folders/123456789012",
          "rules": [
            {
              "values": {
                "allowedValues": [
                  "C03kd36xr"
                ]
              }
            }
          ],
          "inheritFromParent": true,
          "appliedResource": "//cloudresourcemanager.googleapis.com/folders/123456789012"
        },
        {
          "attachedResource": "//cloudresourcemanager.googleapis.com/folders/234567890123",
          "rules": [
            {
              "values": {
                "allowedValues": [
                  "C0265whk2"
                ]
              }
            }
          ],
          "appliedResource": "//cloudresourcemanager.googleapis.com/folders/234567890123"
        }
      ]
    },
    {
      "consolidatedPolicy": {
        "attachedResource": "//cloudresourcemanager.googleapis.com/folders/234567890123",
        "rules": [
          {
            "values": {
              "allowedValues": [
                "C0265whk2"
              ]
            }
          }
        ],
        "appliedResource": "//cloudresourcemanager.googleapis.com/folders/234567890123"
      },
      "policyBundle": [
        {
          "attachedResource": "//cloudresourcemanager.googleapis.com/folders/234567890123",
          "rules": [
            {
              "values": {
                "allowedValues": [
                  "C0265whk2"
                ]
              }
            }
          ],
          "appliedResource": "//cloudresourcemanager.googleapis.com/folders/234567890123"
        }
      ]
    }
  ]
  "constraint": {
    "googleDefinedConstraint": {
      "name": "constraints/iam.allowedPolicyMemberDomains",
      "displayName": "Domain restricted sharing",
      "description": "This list constraint defines one or more Cloud Identity or Google Workspace customer IDs whose principals can be added to IAM policies. \u003cbr\u003eBy default, all user identities are allowed to be added to IAM policies. Only allowed values can be defined in this constraint, denied values are not supported. \u003cbr\u003eIf this constraint is active, only principals that belong to the allowed customer IDs can be added to IAM policies.",
      "constraintDefault": "ALLOW",
      "listConstraint": {}
    }
  }
}

Menganalisis penampung

Penampung dalam konteks ini adalah resource project, folder, atau organisasi. Anda dapat menggunakan Policy Analyzer untuk menampilkan daftar semua penampung yang memiliki kebijakan organisasi dengan batasan tertentu yang diterapkan pada penampung tersebut. Policy Analyzer juga menampilkan nama lengkap setiap penampung, induk penampung dalam hierarki, dan tag yang diwarisi oleh atau dilampirkan ke penampung.

Untuk setiap penampung yang terdeteksi dalam cakupan kueri, Policy Analyzer akan menampilkan entri hasil. Entri hasil berisi kolom berikut:

  • consolidatedPolicy: penampung tempat kebijakan organisasi disertakan, dan penegakan kebijakan yang efektif pada penampung tersebut sehubungan dengan aturan evaluasi hierarki.

  • conditionEvaluation: jika kondisi yang disertakan menghasilkan penegakan kebijakan organisasi, evaluationValue adalah TRUE. Jika kondisi tersebut menyebabkan kebijakan organisasi tidak diterapkan, evaluationValue adalah FALSE. Jika kondisi tidak didukung oleh satu atau beberapa resource tempat kebijakan organisasi diterapkan, kondisi itu sendiri akan ditampilkan.

  • effectiveTags: semua tag yang langsung dilampirkan ke atau diwarisi oleh penampung dan induk penampung dalam hierarki.

  • folders: ID resource folder yang berisi penampung tempat kebijakan organisasi dilampirkan.

  • fullResourceName: nama lengkap penampung.

  • organization: ID resource organisasi yang merupakan ancestor dari penampung tempat kebijakan organisasi dilampirkan.

  • parent: nama resource lengkap induk penampung ini.

  • policyBundle: kebijakan organisasi yang dikonfigurasi langsung di penampung, jika ada, dan kebijakan organisasi yang ditentukan pada ancestor penampung dalam hierarki resource.

  • project: ID penampung tempat kebijakan organisasi disertakan, jika merupakan resource project.

Jika resource Anda dilindungi oleh perimeter layanan Kontrol Layanan VPC, Anda harus membuat aturan keluar di perimeter resource organisasi yang mengizinkan akses ke layanan cloudasset.googleapis.com dan metode google.cloud.asset.v1.AssetService.SearchAllResources. Jika Anda tidak memiliki aturan keluar, permintaan akan gagal dengan error NETWORK_NOT_IN_SAME_SERVICE_PERIMETER. Untuk mengetahui informasi selengkapnya, lihat Men-debug permintaan yang diblokir oleh Kontrol Layanan VPC.

Konsol

  1. Di konsol Google Cloud, buka halaman Policy Analyzer.

    Buka Penganalisis Kebijakan

  2. Di bagian Analisis kebijakan organisasi, temukan panel berlabel Project atau folder mana yang terpengaruh oleh batasan kebijakan organisasi?, lalu klik Buat kueri di panel tersebut.

  3. Di kotak Select query organization, pilih organisasi yang kebijakannya ingin Anda analisis.

  4. Pilih jenis batasan yang ingin Anda analisis. Untuk batasan yang telah ditentukan sebelumnya atau dikelola, pilih Batasan bawaan. Untuk batasan kustom, pilih Custom constraint.

  5. Masukkan nama batasan yang ingin Anda analisis. Awalan untuk jenis batasan yang Anda analisis sudah disertakan. Misalnya, untuk batasan pembatasan domain yang telah ditentukan sebelumnya, masukkan iam.allowedPolicyMemberDomains, untuk batasan pembuatan akun layanan yang dikelola, masukkan iam.managed.disableServiceAccountKeyCreation, dan untuk batasan kustom, masukkan namanya, seperti disableGkeAutoUpgrade.

  6. Klik Run query. Halaman laporan menampilkan parameter kueri yang Anda masukkan, dan tabel hasil dari semua penampung yang menerapkan atau mewarisi batasan ini.

  7. Anda dapat menyimpan kueri ini untuk dilihat lagi nanti dengan mengklik Salin URL kueri. Untuk melihat kueri ini, buka URL yang dihasilkan.

  8. Anda dapat memvisualisasikan pewarisan batasan yang dianalisis dengan memilih setidaknya satu penampung dari daftar, lalu mengklik Lihat pewarisan. Anda juga dapat langsung membuka tampilan visualisasi saat membuat kueri analisis dengan mengklik Analisis, lalu Visualisasi. Lihat Memvisualisasikan pewarisan untuk mengetahui informasi selengkapnya.

gcloud

Untuk mendapatkan analisis tentang cara batasan kebijakan organisasi diterapkan pada penampung dalam organisasi, gunakan perintah gcloud asset analyze-org-policy-governed-containers:

gcloud asset analyze-org-policy-governed-containers \
    --constraint=CONSTRAINT_NAME  \
    --scope=organizations/ORGANIZATION_ID \
    --limit=LIMIT_CONTAINERS \
    --filter=FILTER_QUERY

Ganti kode berikut:

  • CONSTRAINT_NAME: nama batasan kebijakan organisasi yang ingin Anda analisis. Untuk daftar batasan, lihat Batasan kebijakan organisasi.

  • ORGANIZATION_ID: ID resource organisasi Anda. Untuk mengetahui informasi selengkapnya tentang cara menemukan ID organisasi, lihat Membuat dan mengelola organisasi.

  • LIMIT_CONTAINERS: jumlah entri hasil yang ingin Anda lihat. Untuk melihat entri tanpa batas, masukkan unlimited.

  • FILTER_QUERY: kueri filter untuk hanya melihat penampung yang cocok dengan ekspresi pemfilteran Anda. Satu-satunya kolom yang tersedia untuk pemfilteran adalah parent. Misalnya, parent="//cloudresourcemanager.googleapis.com/organizations/012345678901" hanya akan menampilkan penampung yang merupakan turunan organisasi dengan ID organisasi 012345678901.

Respons YAML mirip dengan berikut ini:

Contoh respons YAML

---
consolidatedPolicy:
  appliedResource: //cloudresourcemanager.googleapis.com/projects/donghe-project1
  attachedResource: //cloudresourcemanager.googleapis.com/projects/donghe-project1
  rules:
  - values:
      allowedValues:
      - projects/donghe-project1/zones/us-central1-a/instances/instance-1
fullResourceName: //cloudresourcemanager.googleapis.com/projects/donghe-project1
parent: //cloudresourcemanager.googleapis.com/folders/86513245445
policyBundle:
- appliedResource: //cloudresourcemanager.googleapis.com/projects/donghe-project1
  attachedResource: //cloudresourcemanager.googleapis.com/projects/donghe-project1
  inheritFromParent: true
  rules:
  - values:
      allowedValues:
      - projects/donghe-project1/zones/us-central1-a/instances/instance-1
---
consolidatedPolicy:
  appliedResource: //cloudresourcemanager.googleapis.com/projects/jeffreyai-prj01-on-ipa1
  attachedResource: //cloudresourcemanager.googleapis.com/projects/jeffreyai-prj01-on-ipa1
  rules:
  - denyAll: true
fullResourceName: //cloudresourcemanager.googleapis.com/projects/jeffreyai-prj01-on-ipa1
parent: //cloudresourcemanager.googleapis.com/organizations/474566717491
policyBundle:
- appliedResource: //cloudresourcemanager.googleapis.com/projects/jeffreyai-prj01-on-ipa1
  attachedResource: //cloudresourcemanager.googleapis.com/projects/jeffreyai-prj01-on-ipa1
  inheritFromParent: true
  rules:
  - denyAll: true
---
consolidatedPolicy:
  appliedResource: //cloudresourcemanager.googleapis.com/projects/opa-test-project-1-364621
  attachedResource: //cloudresourcemanager.googleapis.com/projects/opa-test-project-1-364621
  rules:
  - values:
      allowedValues:
      - projects/opa-test-project-1-364621/zones/us-central1-a/instances/instance-1
fullResourceName: //cloudresourcemanager.googleapis.com/projects/opa-test-project-1-364621
parent: //cloudresourcemanager.googleapis.com/folders/666681422980
policyBundle:
- appliedResource: //cloudresourcemanager.googleapis.com/projects/opa-test-project-1-364621
  attachedResource: //cloudresourcemanager.googleapis.com/projects/opa-test-project-1-364621
  rules:
  - values:
      allowedValues:
      - projects/opa-test-project-1-364621/zones/us-central1-a/instances/instance-1

REST

Untuk mendapatkan analisis tentang cara batasan kebijakan organisasi diterapkan pada penampung dalam organisasi, gunakan metode analyzeOrgPolicyGovernedContainers Cloud Asset API.

Metode HTTP dan URL:

GET https://cloudasset.googleapis.com/v1/organizations/ORGANIZATION_ID:analyzeOrgPolicyGovernedContainers

Meminta isi JSON:

JSON_REQUEST="{
  'constraint': 'CONSTRAINT_NAME',
  'filter': '"FILTER_QUERY"',
  'page_size': PAGE_SIZE,
  'page_token': PAGE_TOKEN
}"

Ganti kode berikut:

  • ORGANIZATION_ID: ID resource organisasi Anda. Untuk mengetahui informasi selengkapnya tentang cara menemukan ID organisasi, lihat Membuat dan mengelola organisasi.

  • CONSTRAINT_NAME: nama batasan kebijakan organisasi yang ingin Anda analisis. Untuk daftar batasan, lihat Batasan kebijakan organisasi.

  • FILTER_QUERY: kueri filter untuk hanya melihat penampung yang cocok dengan ekspresi pemfilteran Anda. Satu-satunya kolom yang tersedia untuk pemfilteran adalah parent. Misalnya, parent="//cloudresourcemanager.googleapis.com/organizations/012345678901" hanya akan menampilkan penampung yang merupakan turunan organisasi dengan ID organisasi 012345678901.

  • PAGE_SIZE: jumlah halaman entri hasil yang ingin Anda lihat. Untuk melihat entri tanpa batas, masukkan unlimited. Permintaan yang dibuat dengan tanda ini ditetapkan akan menampilkan nilai nextPageToken jika jumlah total entri hasil lebih besar dari PAGE_SIZE.

  • PAGE_TOKEN: hanya akan ditetapkan pada permintaan setelah permintaan pertama yang menyertakan flag page_size. Anda dapat menggunakan nilai nextPageToken yang diterima dari respons sebelumnya untuk menampilkan halaman hasil tertentu.

Respons JSON mirip dengan berikut ini:

Contoh respons JSON

{
  "governedContainers": [
    {
      "fullResourceName": "//cloudresourcemanager.googleapis.com/projects/opa-test-project-2",
      "parent": "//cloudresourcemanager.googleapis.com/folders/513502730678",
      "consolidatedPolicy": {
        "attachedResource": "//cloudresourcemanager.googleapis.com/folders/513502730678",
        "rules": [
          {
            "enforce": false
          }
        ],
        "appliedResource": "//cloudresourcemanager.googleapis.com/folders/513502730678"
      },
      "policyBundle": [
        {
          "attachedResource": "//cloudresourcemanager.googleapis.com/folders/513502730678",
          "rules": [
            {
              "enforce": false
            }
          ],
          "appliedResource": "//cloudresourcemanager.googleapis.com/folders/513502730678"
        },
        {
          "attachedResource": "//cloudresourcemanager.googleapis.com/folders/666681422980",
          "rules": [
            {
              "enforce": true
            }
          ],
          "appliedResource": "//cloudresourcemanager.googleapis.com/folders/666681422980"
        }
      ]
    },
    {
      "fullResourceName": "//cloudresourcemanager.googleapis.com/projects/opa-test-project-1",
      "parent": "//cloudresourcemanager.googleapis.com/folders/513502730678",
      "consolidatedPolicy": {
        "attachedResource": "//cloudresourcemanager.googleapis.com/folders/513502730678",
        "rules": [
          {
            "enforce": false
          }
        ],
        "appliedResource": "//cloudresourcemanager.googleapis.com/folders/513502730678"
      },
      "policyBundle": [
        {
          "attachedResource": "//cloudresourcemanager.googleapis.com/folders/513502730678",
          "rules": [
            {
              "enforce": false
            }
          ],
          "appliedResource": "//cloudresourcemanager.googleapis.com/folders/513502730678"
        },
        {
          "attachedResource": "//cloudresourcemanager.googleapis.com/folders/666681422980",
          "rules": [
            {
              "enforce": true
            }
          ],
          "appliedResource": "//cloudresourcemanager.googleapis.com/folders/666681422980"
        }
      ]
    }
  ]
  "constraint": {
    "googleDefinedConstraint": {
      "name": "constraints/compute.requireOsLogin",
      "displayName": "Require OS Login",
      "description": "This boolean constraint, when set to \u003ccode\u003etrue\u003c/code\u003e, enables OS Login on all newly created Projects. All VM instances created in new projects will have OS Login enabled. On new and existing projects, this constraint prevents metadata updates that disable OS Login at the project or instance level. \u003cbr\u003eBy default, the OS Login feature is disabled on Compute Engine projects.\u003cbr\u003eGKE instances in private clusters running node pool versions 1.20.5-gke.2000 and later support OS Login. GKE instances in public clusters do not currently support OS Login. If this constraint is applied to a Project running public clusters, GKE instances running in that Project may not function properly.",
      "constraintDefault": "ALLOW",
      "booleanConstraint": {}
    }
  }
}

Menganalisis aset

Aset dalam konteks ini adalah resource Google Cloud atau kebijakan izin Identity and Access Management (IAM). Anda dapat menggunakan Policy Analyzer untuk menampilkan daftar semua aset yang memiliki kebijakan organisasi dengan batasan tertentu yang diterapkan pada aset tersebut. Batasan kustom, batasan terkelola, dan batasan standar berikut didukung:

  • constraints/ainotebooks.accessMode
  • constraints/ainotebooks.disableFileDownloads
  • constraints/ainotebooks.disableRootAccess
  • constraints/ainotebooks.disableTerminal
  • constraints/ainotebooks.environmentOptions
  • constraints/ainotebooks.requireAutoUpgradeSchedule
  • constraints/ainotebooks.restrictVpcNetworks
  • constraints/compute.disableGuestAttributesAccess
  • constraints/compute.disableInstanceDataAccessApis
  • constraints/compute.disableNestedVirtualization
  • constraints/compute.disableSerialPortAccess
  • constraints/compute.disableSerialPortLogging
  • constraints/compute.disableVpcExternalIpv6
  • constraints/compute.requireOsLogin
  • constraints/compute.requireShieldedVm
  • constraints/compute.restrictLoadBalancerCreationForTypes
  • constraints/compute.restrictProtocolForwardingCreationForTypes
  • constraints/compute.restrictXpnProjectLienRemoval
  • constraints/compute.setNewProjectDefaultToZonalDNSOnly
  • constraints/compute.skipDefaultNetworkCreation
  • constraints/compute.trustedImageProjects
  • constraints/compute.vmCanIpForward
  • constraints/compute.vmExternalIpAccess
  • constraints/gcp.detailedAuditLoggingMode
  • constraints/gcp.resourceLocations
  • constraints/iam.allowedPolicyMemberDomains
  • constraints/iam.automaticIamGrantsForDefaultServiceAccounts
  • constraints/iam.disableServiceAccountCreation
  • constraints/iam.disableServiceAccountKeyCreation
  • constraints/iam.disableServiceAccountKeyUpload
  • constraints/iam.restrictCrossProjectServiceAccountLienRemoval
  • constraints/iam.serviceAccountKeyExpiryHours
  • constraints/resourcemanager.accessBoundaries
  • constraints/resourcemanager.allowedExportDestinations
  • constraints/sql.restrictAuthorizedNetworks
  • constraints/sql.restrictNoncompliantDiagnosticDataAccess
  • constraints/sql.restrictNoncompliantResourceCreation
  • constraints/sql.restrictPublicIp
  • constraints/storage.publicAccessPrevention
  • constraints/storage.restrictAuthTypes
  • constraints/storage.uniformBucketLevelAccess

Penganalisis Kebijakan menampilkan nama lengkap setiap aset, induk aset dalam hierarki, dan resource project, folder, dan organisasi ancestor di atas aset dalam hierarki.

Untuk setiap aset yang terdeteksi dalam cakupan kueri, Policy Analyzer akan menampilkan entri hasil.

Entri hasil untuk resource berisi kolom berikut:

  • consolidatedPolicy: resource tempat kebijakan organisasi disertakan, dan penerapan kebijakan yang efektif pada resource tersebut sehubungan dengan aturan evaluasi hierarki.

  • conditionEvaluation: jika kondisi yang disertakan menghasilkan penegakan kebijakan organisasi, evaluationValue adalah TRUE. Jika kondisi tersebut menyebabkan kebijakan organisasi tidak diterapkan, evaluationValue adalah FALSE. Jika kondisi tidak didukung oleh satu atau beberapa resource tempat kebijakan organisasi diterapkan, kondisi itu sendiri akan ditampilkan.

  • assetType: jenis resource aset.

  • effectiveTags: semua tag yang langsung dilampirkan ke atau diwarisi oleh resource yang menjadi tempat kebijakan organisasi dilampirkan dan induk resource dalam hierarki.

  • folders: ID resource folder yang berisi resource tempat kebijakan organisasi dilampirkan.

  • fullResourceName: nama resource lengkap dari resource.

  • organization: nama resource relatif organisasi yang berisi resource.

  • parent: nama resource lengkap induk resource.

  • project: ID project yang berisi resource.

  • policyBundle: kebijakan organisasi yang dikonfigurasi penuh yang dilampirkan ke resource di atas, dan kebijakan organisasi yang ditentukan pada ancestor-nya dalam hierarki resource.

Entri hasil untuk kebijakan izin berisi kolom berikut:

  • consolidatedPolicy: resource tempat kebijakan organisasi disertakan, dan penerapan kebijakan yang efektif pada resource tersebut sehubungan dengan aturan evaluasi hierarki.

  • assetType: jenis resource dari resource tempat kebijakan izin dilampirkan.

  • attachedResource: nama lengkap resource tempat kebijakan izin disertakan.

  • folders: nama resource relatif dari folder apa pun yang berisi kebijakan izin.

  • organization: nama resource relatif organisasi yang berisi kebijakan izin.

  • policy: kebijakan izinkan.

  • project: nama resource relatif project yang berisi kebijakan izin.

  • policyBundle: kebijakan organisasi yang dikonfigurasi penuh yang dilampirkan ke resource di atas, dan kebijakan organisasi yang ditentukan pada ancestor-nya dalam hierarki resource.

Jika resource Anda dilindungi oleh perimeter layanan Kontrol Layanan VPC, Anda harus membuat aturan keluar di perimeter resource organisasi yang mengizinkan akses ke layanan cloudasset.googleapis.com dan metode google.cloud.asset.v1.AssetService.SearchAllResources. Jika Anda tidak memiliki aturan keluar, permintaan akan gagal dengan error NETWORK_NOT_IN_SAME_SERVICE_PERIMETER. Untuk mengetahui informasi selengkapnya, lihat Men-debug permintaan yang diblokir oleh Kontrol Layanan VPC.

Konsol

  1. Di konsol Google Cloud, buka halaman Policy Analyzer.

    Buka Penganalisis Kebijakan

  2. Di bagian Analyze organization policy, temukan panel berlabel Which resources are affected by an organization policy constraint? dan klik Create query di panel tersebut.

  3. Di kotak Select query organization, pilih organisasi yang kebijakannya ingin Anda analisis.

  4. Pilih jenis batasan yang ingin Anda analisis. Untuk batasan standar atau dikelola, pilih Batasan bawaan. Untuk batasan kustom, pilih Custom constraint.

  5. Masukkan nama batasan yang ingin Anda analisis. Awalan untuk jenis batasan yang Anda analisis sudah disertakan. Misalnya, untuk batasan akses tingkat bucket yang telah ditentukan sebelumnya, masukkan storage.uniformBucketLevelAccess, untuk batasan yang dikelola pembuatan akun layanan, masukkan iam.managed.disableServiceAccountKeyCreation, dan untuk batasan kustom, masukkan namanya, seperti disableGkeAccess.

  6. Klik Run query. Halaman laporan menampilkan parameter kueri yang Anda masukkan, dan tabel hasil dari semua aset yang dikenai atau diwarisi batasan ini.

  7. Anda dapat menyimpan kueri ini untuk dilihat lagi nanti dengan mengklik Salin URL kueri. Untuk melihat kueri ini, buka URL yang dihasilkan.

  8. Anda dapat memvisualisasikan pewarisan batasan yang dianalisis dengan memilih minimal satu aset dari daftar, lalu mengklik Lihat pewarisan. Anda juga dapat langsung membuka tampilan visualisasi saat membuat kueri analisis dengan mengklik Analisis, lalu Visualisasi. Lihat Memvisualisasikan pewarisan untuk mengetahui informasi selengkapnya.

gcloud

Untuk mendapatkan analisis tentang cara batasan kebijakan organisasi diterapkan pada aset dalam organisasi, gunakan perintah gcloud asset analyze-org-policy-governed-assets:

gcloud asset analyze-org-policy-governed-assets \
    --constraint=CONSTRAINT_NAME  \
    --scope=organizations/ORGANIZATION_ID \
    --limit=LIMIT_ASSETS \
    --filter=FILTER_QUERY

Ganti kode berikut:

  • CONSTRAINT_NAME: nama batasan kebijakan organisasi yang ingin Anda analisis. Untuk daftar batasan, lihat Batasan kebijakan organisasi.

  • ORGANIZATION_ID: ID resource organisasi Anda. Untuk mengetahui informasi selengkapnya tentang cara menemukan ID organisasi, lihat Membuat dan mengelola organisasi.

  • LIMIT_ASSETS: jumlah entri hasil yang ingin Anda lihat. Untuk melihat entri tanpa batas, masukkan unlimited.

  • FILTER_QUERY: kueri filter untuk hanya melihat aset yang cocok dengan ekspresi pemfilteran Anda. Kolom yang tersedia untuk pemfilteran adalah governed_resource.folders, governed_resource.project, governed_iam_policy.folders, dan governed_iam_policy.project. Misalnya, governed_resource.project="projects/1234567890" hanya akan menampilkan aset yang dilampirkan ke project dengan project ID 1234567890.

Respons YAML mirip dengan berikut ini:

Contoh respons YAML

---
consolidatedPolicy:
  appliedResource: //cloudresourcemanager.googleapis.com/projects/opa-test-project-2
  attachedResource: //cloudresourcemanager.googleapis.com/projects/opa-test-project-2
  rules:
  - enforce: false
governedResource:
  folders:
  - folders/513502730678
  - folders/666681422980
  fullResourceName: //container.googleapis.com/projects/opa-test-project-2/zones/us-central1-c/clusters/opa-test-project-2-cluster-1/nodePools/default-pool
  organization: organizations/474566717491
  parent: //container.googleapis.com/projects/opa-test-project-2/zones/us-central1-c/clusters/opa-test-project-2-cluster-1
  project: projects/892625391619
policyBundle:
- appliedResource: //cloudresourcemanager.googleapis.com/projects/opa-test-project-2
  attachedResource: //cloudresourcemanager.googleapis.com/projects/opa-test-project-2
  reset: true
- appliedResource: //cloudresourcemanager.googleapis.com/organizations/474566717491
  attachedResource: //cloudresourcemanager.googleapis.com/organizations/474566717491
  rules:
  - enforce: true
---
consolidatedPolicy:
  appliedResource: //cloudresourcemanager.googleapis.com/projects/project2-244918
  attachedResource: //cloudresourcemanager.googleapis.com/projects/project2-244918
  rules:
  - enforce: false
governedResource:
  folders:
  - folders/800636178739
  - folders/408342778736
  fullResourceName: //container.googleapis.com/projects/project2-244918/zones/us-central1-c/clusters/cluster-1/nodePools/default-pool
  organization: organizations/474566717491
  parent: //container.googleapis.com/projects/project2-244918/zones/us-central1-c/clusters/cluster-1
  project: projects/761097189269
policyBundle:
- appliedResource: //cloudresourcemanager.googleapis.com/projects/project2-244918
  attachedResource: //cloudresourcemanager.googleapis.com/projects/project2-244918
  rules:
  - enforce: false
- appliedResource: //cloudresourcemanager.googleapis.com/folders/408342778736
  attachedResource: //cloudresourcemanager.googleapis.com/folders/408342778736
  rules:
  - condition:
      description: cond-desc1
      expression: resource.matchTag("474566717491/env", "prod")
      title: cond-title1
    enforce: false
  - enforce: true
- appliedResource: //cloudresourcemanager.googleapis.com/organizations/474566717491
  attachedResource: //cloudresourcemanager.googleapis.com/organizations/474566717491
  rules:
  - enforce: true
---
consolidatedPolicy:
  appliedResource: //cloudresourcemanager.googleapis.com/organizations/474566717491
  attachedResource: //cloudresourcemanager.googleapis.com/organizations/474566717491
  rules:
  - enforce: true
governedResource:
  fullResourceName: //container.googleapis.com/projects/probe-per-rt-project/zones/us-west1-a/clusters/test-cluster-for-backup/nodePools/default-pool
  organization: organizations/474566717491
  parent: //container.googleapis.com/projects/probe-per-rt-project/zones/us-west1-a/clusters/test-cluster-for-backup
  project: projects/896190383908
policyBundle:
- appliedResource: //cloudresourcemanager.googleapis.com/organizations/474566717491
  attachedResource: //cloudresourcemanager.googleapis.com/organizations/474566717491
  rules:
  - enforce: true

REST

Untuk mendapatkan analisis tentang cara batasan kebijakan organisasi diterapkan pada aset dalam organisasi, gunakan metode analyzeOrgPolicyGovernedAssets Cloud Asset API.

Metode HTTP dan URL:

GET https://cloudasset.googleapis.com/v1/organizations/ORGANIZATION_ID:analyzeOrgPolicyGovernedAssets

Meminta isi JSON:

JSON_REQUEST="{
  'constraint': 'CONSTRAINT_NAME',
  'filter': 'FILTER_QUERY',
  'page_size': PAGE_SIZE,
  'page_token': PAGE_TOKEN
}"

Ganti kode berikut:

  • ORGANIZATION_ID: ID resource organisasi Anda. Untuk mengetahui informasi selengkapnya tentang cara menemukan ID organisasi, lihat Membuat dan mengelola organisasi.

  • CONSTRAINT_NAME: nama batasan kebijakan organisasi yang ingin Anda analisis. Untuk daftar batasan, lihat Batasan kebijakan organisasi.

  • FILTER_QUERY: kueri filter untuk hanya melihat aset yang cocok dengan ekspresi pemfilteran Anda. Kolom yang tersedia untuk pemfilteran adalah governed_resource.folders, governed_resource.project, governed_iam_policy.folders, dan governed_iam_policy.project. Misalnya, governed_resource.project="projects/1234567890" hanya akan menampilkan aset yang dilampirkan ke project dengan project ID 1234567890.

  • PAGE_SIZE: jumlah halaman entri hasil yang ingin Anda lihat. Untuk melihat entri tanpa batas, masukkan unlimited. Permintaan yang dibuat dengan tanda ini ditetapkan akan menampilkan nilai nextPageToken jika jumlah total entri hasil lebih besar dari PAGE_SIZE.

  • PAGE_TOKEN: hanya akan ditetapkan pada permintaan setelah permintaan pertama yang menyertakan flag page_size. Anda dapat menggunakan nilai nextPageToken yang diterima dari respons sebelumnya untuk menampilkan halaman hasil tertentu.

Respons JSON mirip dengan berikut ini:

Contoh respons JSON

{
  "governedAssets": [
    {
      "governedResource": {
        "fullResourceName": "//container.googleapis.com/projects/opa-test-project-2/zones/us-central1-c/clusters/opa-test-project-2-cluster-1/nodePools/default-pool",
        "parent": "//container.googleapis.com/projects/opa-test-project-2/zones/us-central1-c/clusters/opa-test-project-2-cluster-1",
        "project": "projects/892625391619",
        "folders": [
          "folders/513502730678",
          "folders/666681422980"
        ],
        "organization": "organizations/474566717491"
      },
      "consolidatedPolicy": {
        "attachedResource": "//cloudresourcemanager.googleapis.com/projects/opa-test-project-2",
        "rules": [
          {
            "enforce": false
          }
        ],
        "appliedResource": "//cloudresourcemanager.googleapis.com/projects/opa-test-project-2"
      },
      "policyBundle": [
        {
          "attachedResource": "//cloudresourcemanager.googleapis.com/projects/opa-test-project-2",
          "reset": true,
          "appliedResource": "//cloudresourcemanager.googleapis.com/projects/opa-test-project-2"
        },
        {
          "attachedResource": "//cloudresourcemanager.googleapis.com/organizations/474566717491",
          "rules": [
            {
              "enforce": true
            }
          ],
          "appliedResource": "//cloudresourcemanager.googleapis.com/organizations/474566717491"
        }
      ]
    },
    {
      "governedResource": {
        "fullResourceName": "//container.googleapis.com/projects/project2-244918/zones/us-central1-c/clusters/cluster-1/nodePools/default-pool",
        "parent": "//container.googleapis.com/projects/project2-244918/zones/us-central1-c/clusters/cluster-1",
        "project": "projects/761097189269",
        "folders": [
          "folders/800636178739",
          "folders/408342778736"
        ],
        "organization": "organizations/474566717491"
      },
      "consolidatedPolicy": {
        "attachedResource": "//cloudresourcemanager.googleapis.com/projects/project2-244918",
        "rules": [
          {
            "enforce": false
          }
        ],
        "appliedResource": "//cloudresourcemanager.googleapis.com/projects/project2-244918"
      },
      "policyBundle": [
        {
          "attachedResource": "//cloudresourcemanager.googleapis.com/projects/project2-244918",
          "rules": [
            {
              "enforce": false
            }
          ],
          "appliedResource": "//cloudresourcemanager.googleapis.com/projects/project2-244918"
        },
        {
          "attachedResource": "//cloudresourcemanager.googleapis.com/folders/408342778736",
          "rules": [
            {
              "enforce": false,
              "condition": {
                "expression": "resource.matchTag(\"474566717491/env\", \"prod\")",
                "title": "cond-title1",
                "description": "cond-desc1"
              }
            },
            {
              "enforce": true
            }
          ],
          "appliedResource": "//cloudresourcemanager.googleapis.com/folders/408342778736"
        },
        {
          "attachedResource": "//cloudresourcemanager.googleapis.com/organizations/474566717491",
          "rules": [
            {
              "enforce": true
            }
          ],
          "appliedResource": "//cloudresourcemanager.googleapis.com/organizations/474566717491"
        }
      ]
    }
  ]
  "constraint": {
    "customConstraint": {
      "name": "organizations/474566717491/customConstraints/custom.disableGkeAutoUpgrade",
      "resourceTypes": [
        "container.googleapis.com/NodePool"
      ],
      "methodTypes": [
        "CREATE",
        "UPDATE"
      ],
      "condition": "resource.management.autoUpgrade == false",
      "actionType": "ALLOW",
      "displayName": "Disable GKE auto upgrade",
      "description": "Only allow GKE NodePool resource create or updates if AutoUpgrade is not enabled"
    }
  }
}

Memvisualisasikan pewarisan

Jika memiliki aktivasi level organisasi untuk paket premium Security Command Center, Anda dapat memvisualisasikan pewarisan kebijakan organisasi yang telah dianalisis menggunakan konsol Google Cloud.

Untuk melihat visualisasi pewarisan, buat kueri analisis kebijakan organisasi untuk kebijakan yang dikonfigurasi, penampung, atau aset. Di halaman Run query analysis, klik Analyze, lalu pilih Visualize.

Anda juga dapat membuka URL kueri tersimpan, memilih resource yang ingin ditandai, lalu mengklik Lihat pewarisan.

Halaman Pewarisan resource menampilkan visualisasi hierarki resource untuk resource yang dipilih dalam kueri analisis Anda:

Visualisasi pewarisan kebijakan organisasi dalam hierarki resource. Visualisasi kebijakan boolean yang tidak diterapkan.

  1. Menunjukkan apakah resource adalah organisasi, folder, atau project.

  2. Titik biru menunjukkan bahwa resource dipilih dalam kueri.

  3. Menunjukkan bahwa resource mengganti kebijakan resource induknya.

  4. Menunjukkan bahwa resource mereset kebijakan organisasi ke setelan default yang dikelola Google untuk kebijakan tersebut. Resource yang mereset kebijakan ke default memiliki garis putus-putus yang menghubungkannya ke induknya.

  5. Menunjukkan bahwa resource menggabungkan kebijakan dengan induknya.

  6. Menunjukkan bahwa kebijakan organisasi pada resource ini menerapkan batasan Boolean yang diterapkan, atau batasan daftar dengan nilai yang diizinkan.

  7. Menunjukkan bahwa kebijakan organisasi pada resource ini adalah batasan daftar dengan nilai yang ditolak.

  8. Menunjukkan bahwa kebijakan organisasi pada resource ini adalah batasan boolean yang tidak diterapkan.

Langkah selanjutnya