Analisar políticas do IAM

Esta página mostra 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 quiser exportar os resultados para uma análise mais detalhada, use o 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 as 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 seguintes papéis do IAM no projeto, na pasta ou na organização que você selecionará para sua consulta:

  • Leitor de recursos do Cloud (roles/cloudasset.viewer)
  • Para analisar políticas com papéis de IAM personalizados: Visualizador de papéis (roles/iam.roleViewer)
  • Usar a CLI do Google Cloud 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 personalizados do IAM: iam.roles.get
  • Se quiser usar a CLI do Google Cloud para analisar políticas, siga estas etapas: 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 participante tem determinados papéis ou permissões como resultado da associação a um grupo do Google Workspace, será necessário ter a permissão groups.read do Google Workspace. Essa permissão está contida no papel Administrador de grupos do Grupos e em papéis mais poderosos, como os de administrador dos grupos ou superadministradores. Para saber como conceder esses papéis, consulte Atribuir papéis de administrador específicos.

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 Cloud, acesse a página analisador de políticas.

    Acessar a página "Policy Analyzer"

  2. Na seção Criar consulta com o modelo, 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 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 as permissões e os papéis especificados no recurso especificado.

gcloud

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

  • RESOURCE_TYPE: o tipo do recurso que você quer usar como escopo da pesquisa. Somente as políticas de permissão do IAM anexadas a esse recurso e aos descendentes serão analisadas. Use o valor project, folder ou organization.
  • RESOURCE_ID: o ID do projeto, da pasta ou da organização do Google Cloud para o qual você quer definir o escopo da pesquisa. Somente as políticas de permissão do IAM anexadas a esse recurso e aos descendentes dele serão 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: nome completo do recurso com o acesso que você quer analisar. Para ver uma lista de formatos de nome de recurso completos, consulte Formato de nome de recurso.
  • 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 Policy Analyzer verificará qualquer uma das 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 da análise lista um conjunto de acessos, identidades e recursos relevantes à consulta, seguido pela vinculação de papel do IAM relacionada. Se a vinculação de papel for condicional, o resultado da análise também incluirá o resultado da avaliação de condição. Se não for possível avaliar a condição, o resultado será CONDITIONAL.

Os participantes 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 qualquer um dos dados da solicitação, faça as seguintes substituições:

  • RESOURCE_TYPE: o tipo do recurso que você quer usar como escopo da pesquisa. Somente as políticas de permissão do IAM anexadas a esse recurso e aos descendentes serão analisadas. Use o valor projects, folders ou organizations.
  • RESOURCE_ID: o ID do projeto, da pasta ou da organização do Google Cloud para o qual você quer definir o escopo da pesquisa. Somente as políticas de permissão do IAM anexadas a esse recurso e aos descendentes dele serão 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: nome completo do recurso com o acesso que você quer analisar. Para ver uma lista de formatos de nome de recurso completos, consulte Formato de nome de recurso.
  • 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 Policy Analyzer verificará qualquer uma das 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 de análise descreve uma vinculação de papel do IAM relevante. Depois lista os recursos, 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 não for possível avaliar a condição, o resultado será listado como CONDITIONAL.

Os participantes 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 papéis ou permissões específicos

É 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 Cloud, acesse a página analisador de políticas.

    Acessar a página "Policy Analyzer"

  2. Na seção Criar consulta com o modelo, 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 Executar consulta. A página do relatório mostra os parâmetros de consulta inseridos e uma tabela de resultados com todos os principais que têm os papéis ou permissões especificados em qualquer recurso no escopo.

gcloud

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

  • RESOURCE_TYPE: o tipo do recurso que você quer usar como escopo da pesquisa. Somente as políticas de permissão do IAM anexadas a esse recurso e aos descendentes serão analisadas. Use o valor project, folder ou organization.
  • RESOURCE_ID: o ID do projeto, da pasta ou da organização do Google Cloud para o qual você quer definir o escopo da pesquisa. Somente as políticas de permissão do IAM anexadas a esse recurso e aos descendentes dele serão 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 das permissões que você quer verificar, por exemplo, compute.instances.get,compute.instances.start. Se você listar vários papéis, o Policy Analyzer 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 Policy Analyzer verificará qualquer uma das 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 de análise descreve uma vinculação de papel do IAM relevante. Depois lista os recursos, 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 não for possível avaliar a condição, o resultado 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 qualquer um dos dados da solicitação, faça as seguintes substituições:

  • RESOURCE_TYPE: o tipo do recurso que você quer usar como escopo da pesquisa. Somente as políticas de permissão do IAM anexadas a esse recurso e aos descendentes serão analisadas. Use o valor projects, folders ou organizations.
  • RESOURCE_ID: o ID do projeto, da pasta ou da organização do Google Cloud para o qual você quer definir o escopo da pesquisa. Somente as políticas de permissão do IAM anexadas a esse recurso e aos descendentes dele serão 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 Policy Analyzer 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 Policy Analyzer verificará qualquer uma das 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 de análise descreve uma vinculação de papel do IAM relevante. Depois lista os recursos, 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 não for possível avaliar a condição, o resultado 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 Cloud, acesse a página analisador de políticas.

    Acessar a página "Policy Analyzer"

  2. Na seção Criar consulta com o modelo, 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 Executar consulta. A página do relatório mostra os parâmetros de consulta inseridos e uma tabela de resultados com todos os papéis que o principal especificado tem no recurso definido.

gcloud

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

  • RESOURCE_TYPE: o tipo do recurso que você quer usar como escopo da pesquisa. Somente as políticas de permissão do IAM anexadas a esse recurso e aos descendentes serão analisadas. Use o valor project, folder ou organization.
  • RESOURCE_ID: o ID do projeto, da pasta ou da organização do Google Cloud para o qual você quer definir o escopo da pesquisa. Somente as políticas de permissão do IAM anexadas a esse recurso e aos descendentes dele serão 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: nome completo do recurso com o acesso que você quer analisar. Para ver uma lista de formatos de nome de recurso completos, consulte Formato de nome de recurso.
  • PRINCIPAL: o principal cujo acesso 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 da análise lista um conjunto de acessos, identidades e recursos relevantes à consulta, seguido pela vinculação de papel do IAM relacionada. Se a vinculação de papel for condicional, o resultado da análise também incluirá o resultado da avaliação de 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 estã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 qualquer um dos dados da solicitação, faça as seguintes substituições:

  • RESOURCE_TYPE: o tipo do recurso que você quer usar como escopo da pesquisa. Somente as políticas de permissão do IAM anexadas a esse recurso e aos descendentes serão analisadas. Use o valor projects, folders ou organizations.
  • RESOURCE_ID: o ID do projeto, da pasta ou da organização do Google Cloud para o qual você quer definir o escopo da pesquisa. Somente as políticas de permissão do IAM anexadas a esse recurso e aos descendentes dele serão 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: nome completo do recurso com o acesso que você quer analisar. Para ver uma lista de formatos de nome de recurso completos, consulte Formato de nome de recurso.
  • PRINCIPAL: o principal cujo acesso 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 de análise descreve uma vinculação de papel do IAM relevante. Depois lista os recursos, 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 não for possível avaliar a condição, o resultado será listado como CONDITIONAL.

Os papéis que o principal tem no recurso especificado estã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 Cloud, acesse a página analisador de políticas.

    Acessar a página "Policy Analyzer"

  2. Na seção Criar consulta com o modelo, 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 Executar consulta. A página do relatório mostra os parâmetros de consulta inseridos e uma tabela de resultados com todos os recursos em que o principal especificado tem os papéis ou permissões definidos.

gcloud

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

  • RESOURCE_TYPE: o tipo do recurso que você quer usar como escopo da pesquisa. Somente as políticas de permissão do IAM anexadas a esse recurso e aos descendentes serão analisadas. Use o valor project, folder ou organization.
  • RESOURCE_ID: o ID do projeto, da pasta ou da organização do Google Cloud para o qual você quer definir o escopo da pesquisa. Somente as políticas de permissão do IAM anexadas a esse recurso e aos descendentes dele serão 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 cujo acesso 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 Policy Analyzer verificará qualquer uma das 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 da análise lista um conjunto de acessos, identidades e recursos relevantes à consulta, seguido pela vinculação de papel do IAM relacionada. Se a vinculação de papel for condicional, o resultado da análise também incluirá o resultado da avaliação de 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 qualquer um dos dados da solicitação, faça as seguintes substituições:

  • RESOURCE_TYPE: o tipo do recurso que você quer usar como escopo da pesquisa. Somente as políticas de permissão do IAM anexadas a esse recurso e aos descendentes serão analisadas. Use o valor projects, folders ou organizations.
  • RESOURCE_ID: o ID do projeto, da pasta ou da organização do Google Cloud para o qual você quer definir o escopo da pesquisa. Somente as políticas de permissão do IAM anexadas a esse recurso e aos descendentes dele serão 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 cujo acesso 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 Policy Analyzer verificará qualquer uma das 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 de análise descreve uma vinculação de papel do IAM relevante. Depois lista os recursos, 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 não for possível avaliar a condição, o resultado 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 tiver contexto suficiente, o Policy Analyzer poderá analisar as vinculações de papéis condicionais do IAM que concedem acesso somente em momentos específicos. Elas são chamadas de condições de data/hora. Para que o Policy Analyzer analise as vinculações de papéis de maneira precisa com as condições de data/hora, você precisa definir o horário de acesso na solicitação.

gcloud

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

  • RESOURCE_TYPE: o tipo do recurso que você quer usar como escopo da pesquisa. Somente as políticas de permissão do IAM anexadas a esse recurso e aos descendentes serão analisadas. Use o valor project, folder ou organization.
  • RESOURCE_ID: o ID do projeto, da pasta ou da organização do Google Cloud para o qual você quer definir o escopo da pesquisa. Somente as políticas de permissão do IAM anexadas a esse recurso e aos descendentes dele serão 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 Policy Analyzer verificará qualquer uma das permissões listadas.
  • FULL_RESOURCE_NAME: opcional. O nome completo do recurso com o acesso que você quer analisar. Para ver uma lista de formatos de nome de recurso completos, consulte Formato de nome de 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 Policy Analyzer verificará qualquer uma das permissões listadas.
  • ACCESS_TIME: a hora que você quer verificar. Esse horário precisa estar no futuro. Use um carimbo de data/hora no formato RFC 3339. 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 da análise lista um conjunto de acessos, identidades e recursos relevantes à consulta, seguido pela vinculação de papel do IAM relacionada. Se a vinculação de papel for condicional, o resultado da análise também incluirá o resultado da avaliação de 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 Policy Analyzer 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 de 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 qualquer um dos dados da solicitação, faça as seguintes substituições:

  • RESOURCE_TYPE: o tipo do recurso que você quer usar como escopo da pesquisa. Somente as políticas de permissão do IAM anexadas a esse recurso e aos descendentes serão analisadas. Use o valor projects, folders ou organizations.
  • RESOURCE_ID: o ID do projeto, da pasta ou da organização do Google Cloud para o qual você quer definir o escopo da pesquisa. Somente as políticas de permissão do IAM anexadas a esse recurso e aos descendentes dele serão 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 Policy Analyzer verificará qualquer uma das permissões listadas.
  • FULL_RESOURCE_NAME: opcional. O nome completo do recurso com o acesso que você quer analisar. Para ver uma lista de formatos de nome de recurso completos, consulte Formato de nome de 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 Policy Analyzer verificará qualquer uma das permissões listadas.
  • ACCESS_TIME: a hora que você quer verificar. Esse horário precisa estar no futuro. Use um carimbo de data/hora no formato RFC 3339. 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 de análise descreve uma vinculação de papel do IAM relevante. Depois lista os recursos, 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 não for possível avaliar a condição, o resultado será listado como CONDITIONAL.

Quando você inclui o horário de acesso na solicitação, o Policy Analyzer 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

Ative as seguintes opções 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 listarão até 1.000 recursos descendentes relevantes para qualquer recurso pai (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.

Esta opção só está disponível se você não especificar um principal na sua 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.

Esta opção só está disponível se você não especificar permissões ou papéis na consulta.

gcloud

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 com 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 as 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 ela 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 listarão até 1.000 recursos descendentes relevantes para qualquer recurso pai (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.

Esta opção só está disponível se você não especificar permissões ou papéis na consulta.

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

REST

Para ativar qualquer opção, primeiro adicione um campo options à 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 com 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 as 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 ela 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 listarão até 1.000 recursos descendentes relevantes para qualquer recurso pai (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.

Esta opção só está disponível se você não especificar permissões ou papéis na consulta.

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

A seguir