Analisar políticas do IAM

Mantenha tudo organizado com as coleções Salve e categorize o conteúdo com base nas suas preferências.

Nesta página, mostramos como usar o analisador de políticas para descobrir quais principais (usuários, contas de serviço, grupos e domínios) têm qual acesso a quais recursos do Google Cloud.

Os exemplos nesta página mostram como executar uma consulta de análise de política e visualizar imediatamente os resultados. Se você quiser exportar os resultados para uma análise mais detalhada, use AnalyzeIamPolicyLongrunning para gravar os resultados da consulta no BigQuery ou no Cloud Storage.

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 que você definiu para a consulta.

  • Opcional: entenda como o Policy Analyzer funciona.

Papéis e permissões necessárias

Os seguintes papéis e permissões são necessários para analisar políticas de permissão.

Papéis do IAM obrigatórios

Para conseguir as permissões necessárias para analisar uma política de permissão, peça ao administrador para conceder a você os papéis do IAM a seguir no projeto, na pasta ou na organização em que você fará o escopo da consulta:

  • Leitor de recursos do Cloud (roles/cloudasset.viewer)
  • Para analisar políticas com papéis de IAM personalizados: leitor de papéis (roles/iam.roleViewer)
  • Para usar a Google Cloud CLI para analisar políticas: consumidor do Service Usage (roles/serviceusage.serviceUsageConsumer)

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

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

Permissões necessárias

  • cloudasset.assets.analyzeIamPolicy
  • cloudasset.assets.searchAllResources
  • cloudasset.assets.searchAllIamPolicies
  • Para analisar políticas com papéis de IAM personalizados: iam.roles.get
  • Para usar a Google Cloud CLI para analisar políticas: serviceusage.services.use

Essas permissões também podem ser concedidas com papéis personalizados ou outros papéis predefinidos.

Permissões necessárias do Google Workspace

Se você quiser expandir grupos nos resultados da consulta para ver se um principal tem determinados papéis ou permissões como resultado da associação dele em um grupo do Google Workspace, precisará da permissão groups.read do Google Workspace. Essa permissão está incluída na função de administrador do Grupos e em funções mais avançadas, como as de administrador dos grupos ou de superadministrador. Para saber como conceder esses papéis, consulte Atribuir funções administrativas específicas.

Determinar quais principais podem acessar um recurso

Use o Policy Analyzer para verificar quais principais têm determinados papéis ou permissões em um recurso específico no projeto, na pasta ou na organização. Para conseguir essas informações, crie uma consulta com o recurso em que você quer analisar o acesso e um ou mais papéis ou permissões para verificar.

Console

  1. No console do Google Cloud, acesse a página Analisador de políticas.

    Acessar a página "Policy Analyzer"

  2. Na seção Analisar políticas, encontre o painel Consulta personalizada e clique em Criar consulta personalizada.

  3. No campo Selecionar escopo da consulta, selecione o projeto, a pasta ou a organização em que você quer definir o escopo da consulta. O Policy Analyzer vai analisar o acesso referente ao projeto, à pasta ou à organização, bem como quaisquer recursos que estiverem dentro.

  4. Escolha o recurso e o papel ou a permissão a serem verificados:

    1. No campo Parâmetro 1, selecione Recurso no menu suspenso.
    2. No campo Recurso, insira o nome completo do recurso em que você quer analisar o acesso. Se você não souber o nome completo do recurso, comece a digitar o nome de exibição do recurso e, em seguida, selecione-o na lista de recursos fornecida.
    3. Clique em Adicionar seletor.
    4. No campo Parâmetro 2, selecione Papel ou Permissão.
    5. No campo Selecionar papel ou Selecionar permissão, selecione o papel ou a permissão que você quer verificar.
    6. Opcional: para verificar outros papéis e permissões, continue adicionando os seletores Papel e Permissão até que todos os papéis e as permissões que você quer verificar estejam listados.
  5. Opcional: clique em Continuar e selecione as opções avançadas que você quer ativar para essa consulta.

  6. No painel Consulta personalizada, clique em Analisar > Executar consulta. A página do relatório mostra os parâmetros de consulta inseridos e uma tabela de resultados de todos os principais com os papéis ou as permissões especificados no recurso.

    Também é possível exportar os resultados para o BigQuery em vez de visualizá-los imediatamente.

gcloud CLI

Antes de usar os dados do comando abaixo, faça estas substituições:

  • RESOURCE_TYPE: o tipo do recurso que você quer definir como escopo da pesquisa. Somente as políticas de permissão do IAM anexadas a este recurso e aos descendentes dele serão analisadas. Use o valor project, folder ou organization.
  • RESOURCE_ID: o ID do projeto, pasta ou organização do Google Cloud que você quer limitar à pesquisa. Somente as políticas de permissão do IAM anexadas a este recurso e os descendentes dele vão ser analisadas. Os IDs do projeto são strings alfanuméricas, como my-project. Os códigos de pastas e organizações são numéricos, como 123456789012.
  • FULL_RESOURCE_NAME: o nome completo do recurso com o acesso que você quer analisar. Para ver uma lista completa de formatos de nomes de recursos, consulte Formato de nomes dos recursos.
  • PERMISSIONS: uma lista separada por vírgulas das permissões que você quer verificar, por exemplo, compute.instances.get,compute.instances.start. Se você listar várias permissões, o Analisador de políticas verificará todas as permissões listadas.

Execute o comando gcloud asset parse-iam-policy:

Linux, macOS ou Cloud Shell

gcloud asset analyze-iam-policy --RESOURCE_TYPE=RESOURCE_ID \
    --full-resource-name=FULL_RESOURCE_NAME \
    --permissions='PERMISSIONS'

Windows (PowerShell)

gcloud asset analyze-iam-policy --RESOURCE_TYPE=RESOURCE_ID `
    --full-resource-name=FULL_RESOURCE_NAME `
    --permissions='PERMISSIONS'

Windows (cmd.exe)

gcloud asset analyze-iam-policy --RESOURCE_TYPE=RESOURCE_ID ^
    --full-resource-name=FULL_RESOURCE_NAME ^
    --permissions='PERMISSIONS'

Você recebe uma resposta YAML com os resultados da análise. Cada resultado de análise lista um conjunto de acessos, identidades e recursos relevantes para sua consulta, seguido pela vinculação de papel do IAM relacionada. Se a vinculação do papel for condicional, o resultado da análise também incluirá o resultado da avaliação da condição. Se não for possível avaliar a condição, o resultado será CONDITIONAL.

Os principais que têm alguma das permissões especificadas no recurso especificado são listados nos campos identities na resposta. O exemplo a seguir mostra um único resultado da análise com o campo identities destacado.

...
---
ACLs:
- accesses:
  - permission: compute.instances.get
  - permission: compute.instances.start
  identities:
  - name: user:my-user@example.com
  resources:
  - fullResourceName: //cloudresourcemanager.googleapis.com/projects/my-project
policy:
  attachedResource: //cloudresourcemanager.googleapis.com/projects/my-project
  binding:
    members:
    - user: my-user@example.com
    role: roles/compute.admin
---
...

REST

Para determinar quais principais têm determinadas permissões em um recurso, use o método analyzeIamPolicy da API Cloud Asset Inventory.

Antes de usar os dados da solicitação, faça as substituições a seguir:

  • RESOURCE_TYPE: o tipo do recurso que você quer definir como escopo da pesquisa. Somente as políticas de permissão do IAM anexadas a este recurso e aos descendentes dele serão analisadas. Use o valor projects, folders ou organizations.
  • RESOURCE_ID: o ID do projeto, pasta ou organização do Google Cloud que você quer limitar à pesquisa. Somente as políticas de permissão do IAM anexadas a este recurso e os descendentes dele vão ser analisadas. Os IDs do projeto são strings alfanuméricas, como my-project. Os códigos de pastas e organizações são numéricos, como 123456789012.
  • FULL_RESOURCE_NAME: o nome completo do recurso com o acesso que você quer analisar. Para ver uma lista completa de formatos de nomes de recursos, consulte Formato de nomes dos recursos.
  • PERMISSION_1, PERMISSION_2... PERMISSION_N: as permissões que você quer verificar, por exemplo, compute.instances.get. Se você listar várias permissões, o Analisador de políticas verificará todas as permissões listadas.

Método HTTP e URL:

POST https://cloudasset.googleapis.com/v1/RESOURCE_TYPE/RESOURCE_ID:analyzeIamPolicy

Corpo JSON da solicitação:

{
  "analysisQuery": {
    "resourceSelector": {
      "fullResourceName": "FULL_RESOURCE_NAME"
    },
    "accessSelector": {
      "permissions": [
        "PERMISSION_1",
        "PERMISSION_2",
        "PERMISSION_N"
      ]
    }
  }
}

Para enviar a solicitação, expanda uma destas opções:

Você recebe uma resposta JSON com os resultados da análise. Cada resultado da análise descreve uma vinculação de papel do IAM relevante e lista o recurso, os acessos e os principais nessa vinculação. Se a vinculação de papel for condicional, o resultado da análise também incluirá o resultado da avaliação da condição. Se a condição não puder ser avaliada, o resultado vai ser listado como CONDITIONAL.

Os principais que têm alguma das permissões especificadas no recurso especificado são listados nos campos identities na resposta. O exemplo a seguir mostra um único resultado da análise com o campo identities destacado.

...
{
  "attachedResourceFullName": "//cloudresourcemanager.googleapis.com/projects/my-project",
  "iamBinding": {
    "role": "roles/compute.admin",
    "members": [
      "user:my-user@example.com"
    ]
  },
  "accessControlLists": [
    {
      "resources": [
        {
          "fullResourceName": "//cloudresourcemanager.googleapis.com/projects/my-project"
        }
      ],
      "accesses": [
        {
          "permission": "compute.instances.get"
        },
        {
          "permission": "compute.instances.start"
        }
      ]
    }
  ],
  "identityList": {
    "identities": [
      {
        "name": "user:my-user@example.com"
      }
    ]
  },
  "fullyExplored": true
},
...

Determinar quais principais têm determinados papéis ou permissões

É possível usar o Policy Analyzer para verificar quais principais têm papéis ou permissões específicas em qualquer recurso do Google Cloud na organização. Para conseguir essas informações, crie uma consulta que inclua um ou mais papéis ou permissões que você quer verificar, mas não especifique um recurso.

Console

  1. No console do Google Cloud, acesse a página Analisador de políticas.

    Acessar a página "Policy Analyzer"

  2. Na seção Analisar políticas, encontre o painel Consulta personalizada e clique em Criar consulta personalizada.

  3. No campo Selecionar escopo da consulta, selecione o projeto, a pasta ou a organização em que você quer definir o escopo da consulta. O Policy Analyzer vai analisar o acesso referente ao projeto, à pasta ou à organização, bem como quaisquer recursos que estiverem dentro.

  4. No campo Parâmetro 1, selecione Papel ou Permissão.

  5. No campo Selecionar papel ou Selecionar permissão, selecione o papel ou a permissão que você quer verificar.

  6. Opcional: para verificar papéis e permissões adicionais, faça o seguinte:

    1. Clique em Adicionar seletor.
    2. No campo Parâmetro 2, selecione Papel ou Permissão.
    3. No campo Selecionar papel ou Selecionar permissão, selecione o papel ou a permissão que você quer verificar.
    4. Continue adicionando os seletores Papel e Permissão até que todos os papéis e as permissões que você quer verificar estejam listados.
  7. Opcional: clique em Continuar e selecione as opções avançadas que você quer ativar para essa consulta.

  8. No painel Consulta personalizada, clique em Analisar > Executar consulta. A página do relatório mostra os parâmetros de consulta inseridos e uma tabela de resultados de todos os principais com os papéis ou as permissões especificados em qualquer recurso no escopo.

    Também é possível exportar os resultados para o BigQuery em vez de visualizá-los imediatamente.

gcloud CLI

Antes de usar os dados do comando abaixo, faça estas substituições:

  • RESOURCE_TYPE: o tipo do recurso que você quer definir como escopo da pesquisa. Somente as políticas de permissão do IAM anexadas a este recurso e aos descendentes dele serão analisadas. Use o valor project, folder ou organization.
  • RESOURCE_ID: o ID do projeto, pasta ou organização do Google Cloud que você quer limitar à pesquisa. Somente as políticas de permissão do IAM anexadas a este recurso e os descendentes dele vão ser analisadas. Os IDs do projeto são strings alfanuméricas, como my-project. Os códigos de pastas e organizações são numéricos, como 123456789012.
  • ROLES: uma lista separada por vírgulas dos papéis que você quer verificar, por exemplo, roles/compute.admin,roles/compute.imageUser. Se você listar vários papéis, o Analisador de políticas verificará qualquer um dos papéis listados.
  • PERMISSIONS: uma lista separada por vírgulas das permissões que você quer verificar, por exemplo, compute.instances.get,compute.instances.start. Se você listar várias permissões, o Analisador de políticas verificará todas as permissões listadas.

Execute o comando gcloud asset parse-iam-policy:

Linux, macOS ou Cloud Shell

gcloud asset analyze-iam-policy --RESOURCE_TYPE=RESOURCE_ID \
    --roles='ROLES' \
    --permissions='PERMISSIONS'

Windows (PowerShell)

gcloud asset analyze-iam-policy --RESOURCE_TYPE=RESOURCE_ID `
    --roles='ROLES' `
    --permissions='PERMISSIONS'

Windows (cmd.exe)

gcloud asset analyze-iam-policy --RESOURCE_TYPE=RESOURCE_ID ^
    --roles='ROLES' ^
    --permissions='PERMISSIONS'

Você recebe uma resposta JSON com os resultados da análise. Cada resultado da análise descreve uma vinculação de papel do IAM relevante e lista o recurso, os acessos e os principais nessa vinculação. Se a vinculação de papel for condicional, o resultado da análise também incluirá o resultado da avaliação da condição. Se a condição não puder ser avaliada, o resultado vai ser listado como CONDITIONAL.

Os principais que têm qualquer um dos papéis ou permissões especificados são listados nos campos identities na resposta. O exemplo a seguir mostra um único resultado da análise com o campo identities destacado.

...
---
ACLs:
- accesses:
  - permission: compute.instances.get
  - permission: compute.instances.start
  - role: roles/compute.admin
  identities:
  - name: user:my-user@example.com
  resources:
  - fullResourceName: //cloudresourcemanager.googleapis.com/projects/my-project
policy:
  attachedResource: //cloudresourcemanager.googleapis.com/projects/my-project
  binding:
    members:
    - user: my-user@example.com
    role: roles/compute.admin
---
...

REST

Para determinar quais principais têm determinados papéis ou permissões, use o método analyzeIamPolicy da API Cloud Asset Inventory.

Antes de usar os dados da solicitação, faça as substituições a seguir:

  • RESOURCE_TYPE: o tipo do recurso que você quer definir como escopo da pesquisa. Somente as políticas de permissão do IAM anexadas a este recurso e aos descendentes dele serão analisadas. Use o valor projects, folders ou organizations.
  • RESOURCE_ID: o ID do projeto, pasta ou organização do Google Cloud que você quer limitar à pesquisa. Somente as políticas de permissão do IAM anexadas a este recurso e os descendentes dele vão ser analisadas. Os IDs do projeto são strings alfanuméricas, como my-project. Os códigos de pastas e organizações são numéricos, como 123456789012.
  • ROLE_1, ROLE_2... ROLE_N: os papéis que você quer verificar, por exemplo, roles/compute.admin. Se você listar vários papéis, o Analisador de políticas verificará qualquer um dos papéis listados.
  • PERMISSION_1, PERMISSION_2... PERMISSION_N: as permissões que você quer verificar, por exemplo, compute.instances.get. Se você listar várias permissões, o Analisador de políticas verificará todas as permissões listadas.

Método HTTP e URL:

POST https://cloudasset.googleapis.com/v1/RESOURCE_TYPE/RESOURCE_ID:analyzeIamPolicy

Corpo JSON da solicitação:

{
  "analysisQuery": {
    "accessSelector": {
      "roles": [
        "ROLE_1",
        "ROLE_2",
        "ROLE_N"
      ],
      "permissions": [
        "PERMISSION_1",
        "PERMISSION_2",
        "PERMISSION_N"
      ]
    }
  }
}

Para enviar a solicitação, expanda uma destas opções:

Você recebe uma resposta JSON com os resultados da análise. Cada resultado da análise descreve uma vinculação de papel do IAM relevante e lista o recurso, os acessos e os principais nessa vinculação. Se a vinculação de papel for condicional, o resultado da análise também incluirá o resultado da avaliação da condição. Se a condição não puder ser avaliada, o resultado vai ser listado como CONDITIONAL.

Os principais que têm qualquer um dos papéis ou permissões especificados são listados nos campos identities na resposta. O exemplo a seguir mostra um único resultado da análise com o campo identities destacado.

...
{
  "attachedResourceFullName": "//cloudresourcemanager.googleapis.com/projects/my-project",
  "iamBinding": {
    "role": "roles/compute.admin",
    "members": [
      "user:my-user@example.com"
    ]
  },
  "accessControlLists": [
    {
      "resources": [
        {
          "fullResourceName": "//cloudresourcemanager.googleapis.com/projects/my-project"
        }
      ],
      "accesses": [
        {
          "permission": "compute.instances.get"
        },
        {
          "role": "roles/compute.admin"
        }
      ]
    }
  ],
  "identityList": {
    "identities": [
      {
        "name": "user:my-user@example.com"
      }
    ]
  },
  "fullyExplored": true
},
...

Determinar qual acesso um principal tem em um recurso

Use o Policy Analyzer para verificar quais papéis ou permissões um principal tem em um recurso na sua organização. Para conseguir essas informações, crie uma consulta que inclua o principal em que você quer analisar o acesso e o recurso para o qual você quer verificar as permissões.

Console

  1. No console do Google Cloud, acesse a página Analisador de políticas.

    Acessar a página "Policy Analyzer"

  2. Na seção Analisar políticas, encontre o painel Consulta personalizada e clique em Criar consulta personalizada.

  3. No campo Selecionar escopo da consulta, selecione o projeto, a pasta ou a organização em que você quer definir o escopo da consulta. O Policy Analyzer vai analisar o acesso referente ao projeto, à pasta ou à organização, bem como quaisquer recursos que estiverem dentro.

  4. Escolha o recurso e o principal para verificar:

    1. No campo Parâmetro 1, selecione Recurso no menu suspenso.
    2. No campo Recurso, insira o nome completo do recurso em que você quer analisar o acesso. Se você não souber o nome completo do recurso, comece a digitar o nome de exibição do recurso e, em seguida, selecione-o na lista de recursos fornecida.
    3. Clique em Adicionar seletor.
    4. No campo Parâmetro 2, selecione Principal no menu suspenso.
    5. No campo Principal, comece a digitar o nome de um usuário, conta de serviço ou grupo. Em seguida, selecione o usuário, a conta de serviço ou o grupo com o acesso que você quer analisar na lista de principais fornecida.
  5. Opcional: clique em Continuar e selecione as opções avançadas que você quer ativar para essa consulta.

  6. No painel Consulta personalizada, clique em Analisar > Executar consulta. A página do relatório mostra os parâmetros de consulta inseridos e uma tabela de resultados de todos os papéis que o principal especificado tem no recurso especificado.

    Também é possível exportar os resultados para o BigQuery em vez de visualizá-los imediatamente.

gcloud CLI

Antes de usar os dados do comando abaixo, faça estas substituições:

  • RESOURCE_TYPE: o tipo do recurso que você quer definir como escopo da pesquisa. Somente as políticas de permissão do IAM anexadas a este recurso e aos descendentes dele serão analisadas. Use o valor project, folder ou organization.
  • RESOURCE_ID: o ID do projeto, pasta ou organização do Google Cloud que você quer limitar à pesquisa. Somente as políticas de permissão do IAM anexadas a este recurso e os descendentes dele vão ser analisadas. Os IDs do projeto são strings alfanuméricas, como my-project. Os códigos de pastas e organizações são numéricos, como 123456789012.
  • FULL_RESOURCE_NAME: o nome completo do recurso com o acesso que você quer analisar. Para ver uma lista completa de formatos de nomes de recursos, consulte Formato de nomes dos recursos.
  • PRINCIPAL: o principal com o acesso que você quer analisar, no formato PRINCIPAL_TYPE:ID. Por exemplo, user:my-user@example.com. Para ver uma lista completa dos tipos principais, consulte Identificadores principais.

Execute o comando gcloud asset parse-iam-policy:

Linux, macOS ou Cloud Shell

gcloud asset analyze-iam-policy --RESOURCE_TYPE=RESOURCE_ID \
    --full-resource-name=FULL_RESOURCE_NAME \
    --identity=PRINCIPAL

Windows (PowerShell)

gcloud asset analyze-iam-policy --RESOURCE_TYPE=RESOURCE_ID `
    --full-resource-name=FULL_RESOURCE_NAME `
    --identity=PRINCIPAL

Windows (cmd.exe)

gcloud asset analyze-iam-policy --RESOURCE_TYPE=RESOURCE_ID ^
    --full-resource-name=FULL_RESOURCE_NAME ^
    --identity=PRINCIPAL

Você recebe uma resposta YAML com os resultados da análise. Cada resultado de análise lista um conjunto de acessos, identidades e recursos relevantes para sua consulta, seguido pela vinculação de papel do IAM relacionada. Se a vinculação do papel for condicional, o resultado da análise também incluirá o resultado da avaliação da condição. Se não for possível avaliar a condição, o resultado será CONDITIONAL.

Os papéis que o principal tem no recurso especificado são listados nos campos accesses na resposta. O exemplo a seguir mostra um único resultado da análise com o campo accesses destacado.

...
---
ACLs:
- accesses:
  - roles/iam.serviceAccountUser
  identities:
  - name: user:my-user@example.com
  resources:
  - fullResourceName: //cloudresourcemanager.googleapis.com/projects/my-project
policy:
  attachedResource: //cloudresourcemanager.googleapis.com/projects/my-project
  binding:
    members:
    - user: my-user@example.com
    role: roles/iam.serviceAccountUser
---
...

REST

Para determinar qual acesso um principal tem em um recurso, use o método analyzeIamPolicy da API Cloud Asset Inventory.

Antes de usar os dados da solicitação, faça as substituições a seguir:

  • RESOURCE_TYPE: o tipo do recurso que você quer definir como escopo da pesquisa. Somente as políticas de permissão do IAM anexadas a este recurso e aos descendentes dele serão analisadas. Use o valor projects, folders ou organizations.
  • RESOURCE_ID: o ID do projeto, pasta ou organização do Google Cloud que você quer limitar à pesquisa. Somente as políticas de permissão do IAM anexadas a este recurso e os descendentes dele vão ser analisadas. Os IDs do projeto são strings alfanuméricas, como my-project. Os códigos de pastas e organizações são numéricos, como 123456789012.
  • FULL_RESOURCE_NAME: o nome completo do recurso com o acesso que você quer analisar. Para ver uma lista completa de formatos de nomes de recursos, consulte Formato de nomes dos recursos.
  • PRINCIPAL: o principal com o acesso que você quer analisar, no formato PRINCIPAL_TYPE:ID. Por exemplo, user:my-user@example.com. Para ver uma lista completa dos tipos principais, consulte Identificadores principais.

Método HTTP e URL:

POST https://cloudasset.googleapis.com/v1/RESOURCE_TYPE/RESOURCE_ID:analyzeIamPolicy

Corpo JSON da solicitação:

{
  "analysisQuery": {
    "resourceSelector": {
      "fullResourceName": "FULL_RESOURCE_NAME"
    },
    "identitySelector": {
      "identity": "PRINCIPAL"
    }
  }
}

Para enviar a solicitação, expanda uma destas opções:

Você recebe uma resposta JSON com os resultados da análise. Cada resultado da análise descreve uma vinculação de papel do IAM relevante e lista o recurso, os acessos e os principais nessa vinculação. Se a vinculação de papel for condicional, o resultado da análise também incluirá o resultado da avaliação da condição. Se a condição não puder ser avaliada, o resultado vai ser listado como CONDITIONAL.

Os papéis que o principal tem no recurso especificado são listados nos campos accesses na resposta. O exemplo a seguir mostra um único resultado da análise com o campo accesses destacado.

...
{
  "attachedResourceFullName": "//cloudresourcemanager.googleapis.com/projects/my-project",
  "iamBinding": {
    "role": "roles/iam.serviceAccountUser",
    "members": [
      "user:my-user@example.com"
    ]
  },
  "accessControlLists": [
    {
      "resources": [
        {
          "fullResourceName": "//cloudresourcemanager.googleapis.com/projects/my-project"
        }
      ],
      "accesses": [
        {
          "roles": "iam.serviceAccountUser"
        }
      ]
    }
  ],
  "identityList": {
    "identities": [
      {
        "name": "user:my-user@example.com"
      }
    ]
  },
  "fullyExplored": true
},
...

Determinar quais recursos um principal pode acessar

Use o Policy Analyzer para verificar em quais recursos da organização um papel principal tem determinados papéis ou permissões. Para conseguir essas informações, crie uma consulta que inclua o principal com o acesso você quer analisar e um ou mais papéis ou permissões para verificar.

Console

  1. No console do Google Cloud, acesse a página Analisador de políticas.

    Acessar a página "Policy Analyzer"

  2. Na seção Analisar políticas, encontre o painel Consulta personalizada e clique em Criar consulta personalizada.

  3. No campo Selecionar escopo da consulta, selecione o projeto, a pasta ou a organização em que você quer definir o escopo da consulta. O Policy Analyzer vai analisar o acesso referente ao projeto, à pasta ou à organização, bem como quaisquer recursos que estiverem dentro.

  4. Escolha o principal a ser verificado e o papel ou a permissão a ser verificada:

    1. No campo Parâmetro 1, selecione Principal no menu suspenso.
    2. No campo Principal, comece a digitar o nome de um usuário, conta de serviço ou grupo. Em seguida, selecione o usuário, a conta de serviço ou o grupo com o acesso que você quer analisar na lista de principais fornecida.
    3. Clique em Adicionar seletor.
    4. No campo Parâmetro 2, selecione Papel ou Permissão.
    5. No campo Selecionar papel ou Selecionar permissão, selecione o papel ou a permissão que você quer verificar.
    6. Opcional: para verificar outros papéis e permissões, continue adicionando os seletores Papel e Permissão até que todos os papéis e as permissões que você quer verificar estejam listados.
  5. Opcional: clique em Continuar e selecione as opções avançadas que você quer ativar para essa consulta.

  6. No painel Consulta personalizada, clique em Analisar > Executar consulta. A página do relatório mostra os parâmetros de consulta inseridos e uma tabela de resultados de todos os recursos em que o principal especificado tem os papéis ou as permissões especificados.

    Também é possível exportar os resultados para o BigQuery em vez de visualizá-los imediatamente.

gcloud CLI

Antes de usar os dados do comando abaixo, faça estas substituições:

  • RESOURCE_TYPE: o tipo do recurso que você quer definir como escopo da pesquisa. Somente as políticas de permissão do IAM anexadas a este recurso e aos descendentes dele serão analisadas. Use o valor project, folder ou organization.
  • RESOURCE_ID: o ID do projeto, pasta ou organização do Google Cloud que você quer limitar à pesquisa. Somente as políticas de permissão do IAM anexadas a este recurso e os descendentes dele vão ser analisadas. Os IDs do projeto são strings alfanuméricas, como my-project. Os códigos de pastas e organizações são numéricos, como 123456789012.
  • PRINCIPAL: o principal com o acesso que você quer analisar, no formato PRINCIPAL_TYPE:ID. Por exemplo, user:my-user@example.com. Para ver uma lista completa dos tipos principais, consulte Identificadores principais.
  • PERMISSIONS: uma lista separada por vírgulas das permissões que você quer verificar, por exemplo, compute.instances.get,compute.instances.start. Se você listar várias permissões, o Analisador de políticas verificará todas as permissões listadas.

Execute o comando gcloud asset parse-iam-policy:

Linux, macOS ou Cloud Shell

gcloud asset analyze-iam-policy --RESOURCE_TYPE=RESOURCE_ID \
    --identity=PRINCIPAL \
    --permissions='PERMISSIONS'

Windows (PowerShell)

gcloud asset analyze-iam-policy --RESOURCE_TYPE=RESOURCE_ID `
    --identity=PRINCIPAL `
    --permissions='PERMISSIONS'

Windows (cmd.exe)

gcloud asset analyze-iam-policy --RESOURCE_TYPE=RESOURCE_ID ^
    --identity=PRINCIPAL ^
    --permissions='PERMISSIONS'

Você recebe uma resposta YAML com os resultados da análise. Cada resultado de análise lista um conjunto de acessos, identidades e recursos relevantes para sua consulta, seguido pela vinculação de papel do IAM relacionada. Se a vinculação do papel for condicional, o resultado da análise também incluirá o resultado da avaliação da condição. Se não for possível avaliar a condição, o resultado será CONDITIONAL.

Os recursos em que o principal especificado tem qualquer uma das permissões especificadas são listados nos campos resources na resposta. O exemplo a seguir mostra um único resultado da análise com o campo resources destacado.

...
---
ACLs:
- accesses:
  - permission: compute.instances.get
  - permission: compute.instances.start
  identities:
  - name: user:my-user@example.com
  resources:
  - fullResourceName: //compute.googleapis.com/projects/my-project/global/images/my-image
policy:
  attachedResource: //compute.googleapis.com/projects/my-project/global/images/my-image
  binding:
    members:
    - user: my-user@example.com
    role: roles/compute.admin
---
...

REST

Para determinar quais recursos um principal pode acessar, use o método analyzeIamPolicy da API Cloud Asset Inventory.

Antes de usar os dados da solicitação, faça as substituições a seguir:

  • RESOURCE_TYPE: o tipo do recurso que você quer definir como escopo da pesquisa. Somente as políticas de permissão do IAM anexadas a este recurso e aos descendentes dele serão analisadas. Use o valor projects, folders ou organizations.
  • RESOURCE_ID: o ID do projeto, pasta ou organização do Google Cloud que você quer limitar à pesquisa. Somente as políticas de permissão do IAM anexadas a este recurso e os descendentes dele vão ser analisadas. Os IDs do projeto são strings alfanuméricas, como my-project. Os códigos de pastas e organizações são numéricos, como 123456789012.
  • PRINCIPAL: o principal com o acesso que você quer analisar, no formato PRINCIPAL_TYPE:ID. Por exemplo, user:my-user@example.com. Para ver uma lista completa dos tipos principais, consulte Identificadores principais.
  • PERMISSION_1, PERMISSION_2... PERMISSION_N: as permissões que você quer verificar, por exemplo, compute.instances.get. Se você listar várias permissões, o Analisador de políticas verificará todas as permissões listadas.

Método HTTP e URL:

POST https://cloudasset.googleapis.com/v1/RESOURCE_TYPE/RESOURCE_ID:analyzeIamPolicy

Corpo JSON da solicitação:

{
  "analysisQuery": {
    "identitySelector": {
      "identity": "PRINCIPAL"
    },
    "accessSelector": {
      "permissions": [
        "PERMISSION_1",
        "PERMISSION_2",
        "PERMISSION_N"
      ]
    }
  }
}

Para enviar a solicitação, expanda uma destas opções:

Você recebe uma resposta JSON com os resultados da análise. Cada resultado da análise descreve uma vinculação de papel do IAM relevante e lista o recurso, os acessos e os principais nessa vinculação. Se a vinculação de papel for condicional, o resultado da análise também incluirá o resultado da avaliação da condição. Se a condição não puder ser avaliada, o resultado vai ser listado como CONDITIONAL.

Os recursos em que o principal especificado tem qualquer uma das permissões especificadas são listados nos campos resources na resposta. O exemplo a seguir mostra um único resultado da análise com o campo resources destacado.

...
{
  "attachedResourceFullName": "//compute.googleapis.com/projects/my-project/global/images/my-image",
  "iamBinding": {
    "role": "roles/compute.admin",
    "members": [
      "user:my-user@example.com"
    ]
  },
  "accessControlLists": [
    {
      "resources": [
        {
          "fullResourceName": "//compute.googleapis.com/projects/my-project/global/images/my-image"
        }
      ],
      "accesses": [
        {
          "permission": "compute.instances.get"
        },
        {
          "permission": "compute.instances.start"
        }
      ]
    }
  ],
  "identityList": {
    "identities": [
      {
        "name": "user:my-user@example.com"
      }
    ]
  },
  "fullyExplored": true
},
...

Determinar o acesso em um horário específico

Se o contexto for suficiente, o Policy Analyzer poderá analisar as vinculações de papéis condicionais do IAM que concedem acesso apenas em horários específicos. Essas condições são chamadas de condições de data/hora. Para que o Analisador de políticas analise com precisão as vinculações de papéis com condições de data/hora, você precisa definir o horário de acesso na solicitação.

gcloud CLI

Antes de usar os dados do comando abaixo, faça estas substituições:

  • RESOURCE_TYPE: o tipo do recurso que você quer definir como escopo da pesquisa. Somente as políticas de permissão do IAM anexadas a este recurso e aos descendentes dele serão analisadas. Use o valor project, folder ou organization.
  • RESOURCE_ID: o ID do projeto, pasta ou organização do Google Cloud que você quer limitar à pesquisa. Somente as políticas de permissão do IAM anexadas a este recurso e os descendentes dele vão ser analisadas. Os IDs do projeto são strings alfanuméricas, como my-project. Os códigos de pastas e organizações são numéricos, como 123456789012.
  • PERMISSIONS: Opcional. Uma lista separada por vírgulas das permissões que você quer verificar, por exemplo, compute.instances.get,compute.instances.start. Se você listar várias permissões, o Analisador de políticas verificará todas as permissões listadas.
  • FULL_RESOURCE_NAME: opcional. O nome completo do recurso para que você quer analisar o acesso. Para ver uma lista completa de formatos de nome de recurso, consulte Formato de nome do recurso.
  • PERMISSIONS: Opcional. Uma lista separada por vírgulas das permissões que você quer verificar, por exemplo, compute.instances.get,compute.instances.start. Se você listar várias permissões, o Analisador de políticas verificará todas as permissões listadas.
  • ACCESS_TIME: a hora que você quer verificar. Esse horário precisa ser no futuro. Use um carimbo de data/hora no formato RFC 3339 (em inglês), por exemplo, 2099-02-01T00:00:00Z.

Execute o comando gcloud asset parse-iam-policy:

Linux, macOS ou Cloud Shell

gcloud asset analyze-iam-policy --RESOURCE_TYPE=RESOURCE_ID \
    --identity=PRINCIPAL \
    --full-resource-name=FULL_RESOURCE_NAME \
    --permissions='PERMISSIONS' \
    --access-time=ACCESS_TIME

Windows (PowerShell)

gcloud asset analyze-iam-policy --RESOURCE_TYPE=RESOURCE_ID `
    --identity=PRINCIPAL `
    --full-resource-name=FULL_RESOURCE_NAME `
    --permissions='PERMISSIONS' `
    --access-time=ACCESS_TIME

Windows (cmd.exe)

gcloud asset analyze-iam-policy --RESOURCE_TYPE=RESOURCE_ID ^
    --identity=PRINCIPAL ^
    --full-resource-name=FULL_RESOURCE_NAME ^
    --permissions='PERMISSIONS' ^
    --access-time=ACCESS_TIME

Você recebe uma resposta YAML com os resultados da análise. Cada resultado de análise lista um conjunto de acessos, identidades e recursos relevantes para sua consulta, seguido pela vinculação de papel do IAM relacionada. Se a vinculação do papel for condicional, o resultado da análise também incluirá o resultado da avaliação da condição. Se não for possível avaliar a condição, o resultado será CONDITIONAL.

Quando você inclui o horário de acesso na solicitação, o Analisador de políticas pode avaliar as condições de data/hora. Se a condição for avaliada como falsa, esse papel não será incluído na resposta. Se a condição for avaliada como verdadeira, o resultado da avaliação da condição será listado como TRUE.

...
---
ACLs:
- accesses:
  - permission: compute.instances.get
  - permission: compute.instances.start
  conditionEvaluationValue: 'TRUE'
  identities:
  - name: user:my-user@example.com
  resources:
  - fullResourceName: //cloudresourcemanager.googleapis.com/projects/my-project
policy:
  attachedResource: //cloudresourcemanager.googleapis.com/projects/my-project
  binding:
    condition:
      expression: request.time.getHours("America/Los_Angeles") >= 5
      title: No access before 5am PST
    members:
    - user: my-user@example.com
    role: roles/compute.admin
---
...

REST

Para determinar quais principais terão determinadas permissões em um recurso em um momento específico, use o método analyzeIamPolicy da API Cloud Asset Inventory.

Antes de usar os dados da solicitação, faça as substituições a seguir:

  • RESOURCE_TYPE: o tipo do recurso que você quer definir como escopo da pesquisa. Somente as políticas de permissão do IAM anexadas a este recurso e aos descendentes dele serão analisadas. Use o valor projects, folders ou organizations.
  • RESOURCE_ID: o ID do projeto, pasta ou organização do Google Cloud que você quer limitar à pesquisa. Somente as políticas de permissão do IAM anexadas a este recurso e os descendentes dele vão ser analisadas. Os IDs do projeto são strings alfanuméricas, como my-project. Os códigos de pastas e organizações são numéricos, como 123456789012.
  • PERMISSION_1, PERMISSION_2... PERMISSION_N: opcional. As permissões que você quer verificar, por exemplo, compute.instances.get. Se você listar várias permissões, o Analisador de políticas verificará se há alguma das permissões listadas.
  • FULL_RESOURCE_NAME: opcional. O nome completo do recurso para que você quer analisar o acesso. Para ver uma lista completa de formatos de nome de recurso, consulte Formato de nome do recurso.
  • PERMISSION_1, PERMISSION_2... PERMISSION_N: opcional. As permissões que você quer verificar, por exemplo, compute.instances.get. Se você listar várias permissões, o Analisador de políticas verificará se há alguma das permissões listadas.
  • ACCESS_TIME: a hora que você quer verificar. Esse horário precisa ser no futuro. Use um carimbo de data/hora no formato RFC 3339 (em inglês), por exemplo, 2099-02-01T00:00:00Z.

Método HTTP e URL:

POST https://cloudasset.googleapis.com/v1/RESOURCE_TYPE/RESOURCE_ID:analyzeIamPolicy

Corpo JSON da solicitação:

{
  "analysisQuery": {
    "identitySelector": {
      "identity": "PRINCIPAL"
    },
    "resourceSelector": {
      "fullResourceName": "FULL_RESOURCE_NAME"
    },
    "accessSelector": {
      "permissions": [
        "PERMISSION_1",
        "PERMISSION_2",
        "PERMISSION_N"
      ]
    },
    "conditionContext": {
      "accessTime": "ACCESS_TIME"
    }
  }
}

Para enviar a solicitação, expanda uma destas opções:

Você recebe uma resposta JSON com os resultados da análise. Cada resultado da análise descreve uma vinculação de papel do IAM relevante e lista o recurso, os acessos e os principais nessa vinculação. Se a vinculação de papel for condicional, o resultado da análise também incluirá o resultado da avaliação da condição. Se a condição não puder ser avaliada, o resultado vai ser listado como CONDITIONAL.

Quando você inclui o horário de acesso na solicitação, o Analisador de políticas pode avaliar as condições de data/hora. Se a condição for avaliada como falsa, esse papel não será incluído na resposta. Se a condição for avaliada como verdadeira, o valor da avaliação da condição na resposta da análise será TRUE.

...
{
  "attachedResourceFullName": "//cloudresourcemanager.googleapis.com/projects/my-project",
  "iamBinding": {
    "role": "roles/compute.admin",
    "members": [
      "user:my-user@example.com"
    ],
    "condition": {
      "expression": "request.time.getHours(\"America/Los_Angeles\") \u003e= 5",
      "title": "No access before 5am PST"
    }
  },
  "accessControlLists": [
    {
      "resources": [
        {
          "fullResourceName": "//cloudresourcemanager.googleapis.com/projects/my-project"
        }
      ],
      "accesses": [
        {
          "permission": "compute.instances.get"
        },
        {
          "permission": "compute.instances.start"
        }
      ],
      "conditionEvaluation": {
        "evaluationValue": "TRUE"
      }
    }
  ],
  "identityList": {
    "identities": [
      {
        "name": "user:my-user@example.com"
      }
    ]
  },
  "fullyExplored": true
},
...

Ativar opções

É possível ativar as opções a seguir para receber resultados de consulta mais detalhados.

Console

Opção Descrição
Listar recursos nos recursos que correspondem à consulta Se você ativar essa opção, os resultados da consulta vão listar até 1.000 recursos descendentes relevantes para todos os recursos pais (projetos, pastas e organizações) nos resultados da consulta.
Listar usuários individuais nos grupos

Se você ativar essa opção, todos os grupos nos resultados da consulta serão expandidos em membros individuais. Se você tiver permissões de grupo suficientes, os grupos aninhados também serão expandidos. Essa expansão é limitada a 1.000 membros por grupo.

Essa opção só estará disponível se você não especificar um principal na consulta.

Listar permissões nos papéis

Se você ativar essa opção, os resultados da consulta listarão todas as permissões dentro de cada papel, além do próprio papel.

Essa opção só estará disponível se você não especificar nenhuma permissão ou papel na consulta.

gcloud CLI

Nesta seção, descrevemos várias sinalizações comuns que podem ser adicionadas ao usar a CLI gcloud para analisar políticas de permissão. Para ver uma lista completa de opções, consulte Sinalizações opcionais.

Sinalização Descrição
--analyze-service-account-impersonation

Se essa opção estiver ativada, o Policy Analyzer executará consultas de análise adicionais para determinar quem pode representar as contas de serviço que têm o acesso especificado aos recursos especificados. O Policy Analyzer executa uma consulta para cada conta de serviço nos resultados da consulta. Essas consultas analisam quem tem qualquer uma das seguintes permissões na conta de serviço:

  • iam.serviceAccounts.actAs
  • iam.serviceAccounts.getAccessToken
  • iam.serviceAccounts.getOpenIdToken
  • iam.serviceAccounts.implicitDelegation
  • iam.serviceAccounts.signBlob
  • iam.serviceAccounts.signJwt

Essa é uma operação muito cara porque executa automaticamente muitas consultas. É altamente recomendável exportar para o BigQuery ou para o Cloud Storage usando analyze-iam-policy-longrunning em vez de analyze-iam-policy.

--expand-groups

Se você ativar essa opção, todos os grupos nos resultados da consulta serão expandidos em membros individuais. Se você tiver permissões de grupo suficientes, os grupos aninhados também serão expandidos. Essa expansão é limitada a 1.000 membros por grupo.

Essa opção só será eficaz se você não especificar um principal na consulta.

--expand-resources Se você ativar essa opção, os resultados da consulta vão listar até 1.000 recursos descendentes relevantes para todos os recursos pais (projetos, pastas e organizações) nos resultados da consulta.
--expand-roles

Se você ativar essa opção, os resultados da consulta listarão todas as permissões dentro de cada papel, além do próprio papel.

Essa opção só estará disponível se você não especificar nenhuma permissão ou papel na consulta.

--output-group-edges Se você ativar essa opção, os resultados da consulta vão gerar as relações de associação relevantes entre os grupos.
--output-resource-edges Se você ativar essa opção, os resultados da consulta vão gerar as relações pai/filho relevantes entre os recursos.

REST

Para ativar qualquer opção, primeiro adicione um campo options à sua consulta de análise. Exemplo:

{
  "analysisQuery": {
    "resourceSelector": {
      "fullResourceName": "//cloudresourcemanager.googleapis.com/projects/my-project"
    },
    "accessSelector": {
      "permissions": [
        "iam.roles.get",
        "iam.roles.list"
      ]
   },
   "options": {
     OPTIONS
   }
  }
}

Substitua OPTIONS pelas opções que você quer ativar, no formato "OPTION": true. A tabela a seguir descreve as opções disponíveis:

Opção Descrição
analyzeServiceAccountImpersonation

Se essa opção estiver ativada, o Policy Analyzer executará consultas de análise adicionais para determinar quem pode representar as contas de serviço que têm o acesso especificado aos recursos especificados. O Policy Analyzer executa uma consulta para cada conta de serviço nos resultados da consulta. Essas consultas analisam quem tem qualquer uma das seguintes permissões na conta de serviço:

  • iam.serviceAccounts.actAs
  • iam.serviceAccounts.getAccessToken
  • iam.serviceAccounts.getOpenIdToken
  • iam.serviceAccounts.implicitDelegation
  • iam.serviceAccounts.signBlob
  • iam.serviceAccounts.signJwt

Essa é uma operação muito cara porque executa automaticamente muitas consultas. É altamente recomendável exportar para o BigQuery ou para o Cloud Storage usando AnalyzeIamPolicyLongrunning em vez de AnalyzeIamPolicy.

expandGroups

Se você ativar essa opção, todos os grupos nos resultados da consulta serão expandidos em membros individuais. Se você tiver permissões de grupo suficientes, os grupos aninhados também serão expandidos. Essa expansão é limitada a 1.000 membros por grupo.

Essa opção só será eficaz se você não especificar um principal na consulta.

expandResources Se você ativar essa opção, os resultados da consulta vão listar até 1.000 recursos descendentes relevantes para todos os recursos pais (projetos, pastas e organizações) nos resultados da consulta.
expandRoles

Se você ativar essa opção, os resultados da consulta listarão todas as permissões dentro de cada papel, além do próprio papel.

Essa opção só estará disponível se você não especificar nenhuma permissão ou papel na consulta.

outputGroupEdges Se você ativar essa opção, os resultados da consulta vão gerar as relações de associação relevantes entre os grupos.
outputResourceEdges Se você ativar essa opção, os resultados da consulta vão gerar as relações pai/filho relevantes entre os recursos.

A seguir