Analisar políticas da organização

Esta página contém informações sobre como analisar as configurações da política da sua organização para ver quais recursos são cobertos por qual política da organização. Usando o Analisador de políticas para políticas da organização, é possível criar uma consulta de análise para receber informações sobre políticas da organização personalizadas e predefinidas.

Uma consulta de análise é composta por um escopo e uma restrição.

  • Constraint: especifica o nome do recurso de uma restrição.
  • Escopo: especifica uma organização para o escopo da análise. Todas as políticas da organização com a restrição especificada definida neste escopo estão incluídas na análise.

Para mais informações sobre as políticas da organização, consulte a Introdução ao serviço Política da organização. Para mais informações sobre como criar restrições personalizadas, consulte Como criar e gerenciar restrições personalizadas.

Antes de começar

Ative a Cloud Asset API.

Ative a API

Ative a API no projeto ou na organização que você usará para enviar a consulta. Ele não precisa ser o mesmo recurso com escopo definido para sua consulta.

Papéis e permissões necessárias

Para receber as permissões necessárias para fazer uma análise de política da organização, peça ao administrador que conceda a você os seguintes papéis do IAM no recurso da organização em que você quer realizar a análise:

Para mais informações sobre como conceder papéis, consulte Gerenciar acesso.

Esses papéis predefinidos contêm as permissões necessárias para executar uma análise de política da organização. Para conferir as permissões exatas necessárias, expanda a seção Permissões necessárias:

Permissões necessárias

As permissões a seguir são necessárias para executar uma análise de política da organização:

  • Para realizar a análise:
    • cloudasset.assets.analyzeOrgPolicy
    • cloudasset.assets.searchAllResources
    • cloudasset.assets.searchAllIamPolicies
  • Para ver as restrições personalizadas: orgpolicy.customConstraints.get

Também é possível conseguir essas permissões com papéis personalizados ou outros papéis predefinidos.

Analisar políticas configuradas

Uma política da organização é criada a partir de uma restrição e de condições opcionais nas quais essa restrição é aplicada. Você pode usar o Policy Analyzer para retornar uma lista de políticas da organização com uma restrição específica e os recursos aos quais essas políticas estão anexadas.

Para cada política da organização detectada no escopo da consulta, o analisador de políticas retorna uma entrada de resultado. Uma entrada de resultado contém os seguintes campos:

  • consolidatedPolicy: o recurso ao qual a política da organização está anexada e a aplicação da política vigente nesse recurso em relação às regras de avaliação de hierarquia.

  • policyBundle: a política da organização totalmente configurada anexada ao recurso acima e as políticas da organização definidas nos ancestrais na hierarquia de recursos.

gcloud

Para ver uma análise de como uma restrição de política da organização é aplicada em uma organização, use o comando gcloud beta asset analyze-org-policies:

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

Substitua:

  • CONSTRAINT_NAME: o nome da restrição da política da organização que você quer analisar. Para ver uma lista de restrições, consulte Restrições da política da organização.

  • ORGANIZATION_ID: o ID do recurso da organização. Para mais informações sobre como encontrar o ID da organização, consulte Como criar e gerenciar organizações.

  • LIMIT_POLICIES: o número de entradas de resultados que você quer visualizar. Para ver entradas ilimitadas, insira unlimited.

  • FILTER_QUERY: uma consulta de filtro para ver apenas as políticas que correspondem à sua expressão de filtragem. O único campo disponível para filtragem é consolidated_policy.attached_resource. Por exemplo, consolidated_policy.attached_resource="//cloudresourcemanager.googleapis.com/projects/1234567890" só retornaria políticas anexadas ao projeto com o ID do projeto 1234567890.

A resposta YAML é semelhante a esta:

Exemplo de resposta 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

Para ver uma análise de como uma restrição de política da organização é aplicada em uma organização, use o método analyzeOrgPolicies da API Cloud Asset.

Método HTTP e URL:

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

Solicitar corpo JSON:

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

Substitua:

  • ORGANIZATION_ID: o ID do recurso da organização. Para mais informações sobre como encontrar o ID da organização, consulte Como criar e gerenciar organizações.

  • CONSTRAINT_NAME: o nome da restrição da política da organização que você quer analisar. Para ver uma lista de restrições, consulte Restrições da política da organização.

  • FILTER_QUERY: uma consulta de filtro para ver apenas as políticas que correspondem à sua expressão de filtragem. O único campo disponível para filtragem é consolidated_policy.attached_resource. Por exemplo, consolidated_policy.attached_resource="//cloudresourcemanager.googleapis.com/projects/1234567890" só retornaria políticas anexadas ao projeto com o ID do projeto 1234567890.

  • PAGE_SIZE: o número de entradas de resultados por página que você quer visualizar. Para ver entradas ilimitadas, insira unlimited. Uma solicitação feita com esse conjunto de sinalizações retorna um valor nextPageToken se o número total de entradas de resultados for maior que PAGE_SIZE.

  • PAGE_TOKEN: somente será definido em solicitações após a primeira solicitação que inclua a sinalização page_size. É possível usar os valores nextPageToken recebidos de respostas anteriores para retornar uma página específica de resultados.

A resposta JSON é semelhante a esta:

Exemplo de resposta 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": {}
    }
  }
}

Analisar contêineres

Um contêiner nesse contexto é um recurso de projeto, pasta ou organização. É possível usar o Policy Analyzer para retornar uma lista de todos os contêineres que têm políticas da organização com uma restrição específica aplicada. O Policy Analyzer também retorna o nome completo de cada contêiner e o pai do contêiner na hierarquia.

Para cada contêiner detectado no escopo da consulta, o Policy Analyzer retorna uma entrada de resultado. Uma entrada de resultado contém os seguintes campos:

  • fullResourceName: o nome completo do recurso do contêiner.

  • parent: o nome completo do recurso pai do recurso do contêiner.

  • consolidatedPolicy: o contêiner ao qual a política da organização está anexada e a aplicação efetiva da política em relação às regras de avaliação de hierarquia.

  • policyBundle: a política da organização configurada diretamente no contêiner, se houver, e as políticas da organização definidas nos ancestrais do contêiner na hierarquia de recursos.

gcloud

Para ver uma análise de como uma restrição de política da organização é aplicada em contêineres em uma organização, use o comando gcloud beta asset analyze-org-policy-governed-containers:

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

Substitua:

  • CONSTRAINT_NAME: o nome da restrição da política da organização que você quer analisar. Para ver uma lista de restrições, consulte Restrições da política da organização.

  • ORGANIZATION_ID: o ID do recurso da organização. Para mais informações sobre como encontrar o ID da organização, consulte Como criar e gerenciar organizações.

  • LIMIT_CONTAINERS: o número de entradas de resultados que você quer visualizar. Para ver entradas ilimitadas, insira unlimited.

  • FILTER_QUERY: uma consulta de filtro para ver apenas contêineres que correspondem à sua expressão de filtragem. O único campo disponível para filtragem é parent. Por exemplo, parent="//cloudresourcemanager.googleapis.com/organizations/012345678901" retornaria apenas contêineres filhos da organização com o ID 012345678901.

A resposta YAML é semelhante a esta:

Exemplo de resposta 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

Para ver uma análise de como uma restrição de política da organização é aplicada em contêineres em uma organização, use o método analyzeOrgPolicyGovernedContainers da API Cloud Asset.

Método HTTP e URL:

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

Solicitar corpo JSON:

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

Substitua:

  • ORGANIZATION_ID: o ID do recurso da organização. Para mais informações sobre como encontrar o ID da organização, consulte Como criar e gerenciar organizações.

  • CONSTRAINT_NAME: o nome da restrição da política da organização que você quer analisar. Para ver uma lista de restrições, consulte Restrições da política da organização.

  • FILTER_QUERY: uma consulta de filtro para ver apenas contêineres que correspondem à sua expressão de filtragem. O único campo disponível para filtragem é parent. Por exemplo, parent="//cloudresourcemanager.googleapis.com/organizations/012345678901" retornaria apenas contêineres filhos da organização com o ID 012345678901.

  • PAGE_SIZE: o número de páginas de entradas de resultado que você quer visualizar. Para ver entradas ilimitadas, insira unlimited. Uma solicitação feita com esse conjunto de sinalizações retorna um valor nextPageToken se o número total de entradas de resultados for maior que PAGE_SIZE.

  • PAGE_TOKEN: somente será definido em solicitações após a primeira solicitação que inclua a sinalização page_size. É possível usar os valores nextPageToken recebidos de respostas anteriores para retornar uma página específica de resultados.

A resposta JSON é semelhante a esta:

Exemplo de resposta 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": {}
    }
  }
}

Analisar recursos

Um recurso neste contexto é um recurso do Google Cloud ou uma política de permissão do Identity and Access Management (IAM, na sigla em inglês). É possível usar o Policy Analyzer para retornar uma lista de todos os recursos que têm políticas da organização com uma restrição específica aplicada. O Policy Analyzer também retorna o nome completo de cada recurso, o pai do recurso na hierarquia e todos os recursos, pastas e projetos ancestrais acima do recurso na hierarquia.

Para cada recurso detectado no escopo da consulta, o Policy Analyzer retorna uma entrada de resultado.

Uma entrada de resultado para um recurso contém os seguintes campos:

  • fullResourceName: o nome completo do recurso.

  • parent: o nome completo do recurso pai do recurso.

  • project: o nome do recurso relativo do projeto que contém o recurso.

  • folders: o nome de recurso relativo de qualquer pasta que contenha o recurso.

  • organization: o nome relativo ao recurso da organização que contém o recurso.

  • consolidatedPolicy: o recurso ao qual a política da organização está anexada e a aplicação efetiva da política nesse recurso em relação às regras de avaliação de hierarquia.

  • policyBundle: a política da organização totalmente configurada anexada ao recurso acima e as políticas da organização definidas nos ancestrais na hierarquia de recursos.

Uma entrada de resultado para uma política de permissão contém os seguintes campos:

  • attachedResource: o recurso ao qual a política de permissão está anexada.

  • policy: a política de permissão.

  • project: o nome de recurso relativo do projeto que contém a política de permissão.

  • folders: o nome de recurso relativo de qualquer pasta que contenha a política de permissão.

  • organization: o nome de recurso relativo da organização que contém a política de permissão.

  • consolidatedPolicy: o recurso ao qual a política da organização está anexada e a aplicação da política vigente nesse recurso em relação às regras de avaliação de hierarquia.

  • policyBundle: a política da organização totalmente configurada anexada ao recurso acima e as políticas da organização definidas nos ancestrais na hierarquia de recursos.

gcloud

Para ver uma análise de como uma restrição de política da organização é aplicada em recursos dentro de uma organização, use o comando gcloud beta asset analyze-org-policy-governed-assets:

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

Substitua:

  • CONSTRAINT_NAME: o nome da restrição da política da organização que você quer analisar. Para ver uma lista de restrições, consulte Restrições da política da organização.

  • ORGANIZATION_ID: o ID do recurso da organização. Para mais informações sobre como encontrar o ID da organização, consulte Como criar e gerenciar organizações.

  • LIMIT_ASSETS: o número de entradas de resultados que você quer visualizar. Para ver entradas ilimitadas, insira unlimited.

  • FILTER_QUERY: uma consulta de filtro para ver apenas os recursos que correspondem à sua expressão de filtragem. Os campos disponíveis para filtragem são governed_resource.folders, governed_resource.project, governed_iam_policy.folders e governed_iam_policy.project. Por exemplo, governed_resource.project="projects/1234567890" só retorna recursos anexados ao projeto com o ID do projeto 1234567890.

A resposta YAML é semelhante a esta:

Exemplo de resposta 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

Para ver uma análise de como uma restrição de política da organização é aplicada em recursos dentro de uma organização, use o método analyzeOrgPolicyGovernedAssets da API Cloud Asset.

Método HTTP e URL:

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

Solicitar corpo JSON:

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

Substitua:

  • ORGANIZATION_ID: o ID do recurso da organização. Para mais informações sobre como encontrar o ID da organização, consulte Como criar e gerenciar organizações.

  • CONSTRAINT_NAME: o nome da restrição da política da organização que você quer analisar. Para ver uma lista de restrições, consulte Restrições da política da organização.

  • FILTER_QUERY: uma consulta de filtro para ver apenas os recursos que correspondem à sua expressão de filtragem. Os campos disponíveis para filtragem são governed_resource.folders, governed_resource.project, governed_iam_policy.folders e governed_iam_policy.project. Por exemplo, governed_resource.project="projects/1234567890" só retorna recursos anexados ao projeto com o ID do projeto 1234567890.

  • PAGE_SIZE: o número de páginas de entradas de resultado que você quer visualizar. Para ver entradas ilimitadas, insira unlimited. Uma solicitação feita com esse conjunto de sinalizações retorna um valor nextPageToken se o número total de entradas de resultados for maior que PAGE_SIZE.

  • PAGE_TOKEN: somente será definido em solicitações após a primeira solicitação que inclua a sinalização page_size. É possível usar os valores nextPageToken recebidos de respostas anteriores para retornar uma página específica de resultados.

A resposta JSON é semelhante a esta:

Exemplo de resposta 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"
    }
  }
}

A seguir