Como ver as políticas do IAM em vigor

Neste tópico, mostramos como visualizar as políticas efetivas de Identity and Access Management (IAM) em um determinado recurso.

No IAM, a política em vigor descreve como todas as políticas pai e ancestrais na hierarquia de recursos são herdadas para um recurso.

Escopo e permissões

Ao solicitar políticas de IAM efetivas, você precisa especificar um escopo. Pode ser uma organização, uma pasta ou um projeto. Todas as políticas do IAM definidas nesse escopo ou nesse escopo são retornadas. O escopo da solicitação não precisa ser o mesmo que o projeto ativado para a API Cloud Asset. Além disso, o projeto ativado e o escopo da solicitação exigem permissões diferentes.

Tipos de políticas compatíveis

As políticas IAM efetivas são compatíveis apenas com as políticas de permissão do IAM. Ele não é compatível com as seguintes formas de controle de acesso:

Antes de começar

Antes de começar, conclua as etapas a seguir.

  1. Ative a API Cloud Asset Inventory para o projeto.

    Ativar a API Cloud Asset Inventory

    Esse projeto não precisa ser igual ao escopo das suas solicitações. Saiba mais sobre como definir um projeto ao ativar um serviço.

  2. Instale o SDK do Google Cloud.

  3. Opcional: para chamar a API Cloud Asset Inventory diretamente, confirme se você tem acesso ao comando curl.

  4. Configure as permissões.

    1. Configure permissões para a API Cloud Asset.

    2. Ative as permissões a seguir para o escopo da sua solicitação.

      • cloudasset.assets.analyzeIamPolicy

      • cloudasset.assets.searchAllResources

      • cloudasset.assets.searchAllIamPolicies

      Essas permissões estão incluídas nos seguintes papéis predefinidos:

      • Proprietário de recursos do Cloud (roles/cloudasset.owner)

      • Leitor de recursos do Cloud (roles/cloudasset.viewer)

      Para mais informações sobre permissões e papéis da API Cloud Asset, consulte Controle de acesso.

Tenha políticas do IAM efetivas

gcloud

Para ver as políticas do IAM efetivas em um recurso, chame BatchGetEffectiveIamPolicies usando o comando gcloud asset get-effective-iam-policy. É necessário executar a Google Cloud CLI versão 399.0.0 ou mais recente.

gcloud asset get-effective-iam-policy \
    --scope=SCOPE \
    --names=ASSET_NAME_1,ASSET_NAME_2,...

Forneça os valores a seguir:

  • SCOPE: um escopo pode ser um projeto, uma pasta ou uma organização.

    Os valores permitidos são:

    • projects/PROJECT_ID

    • projects/PROJECT_NUMBER

      Como encontrar um número de projeto do Google Cloud

      Console

      Para encontrar um número de projeto do Google Cloud, siga estas etapas:

      1. Acesse a página Painel no console do Google Cloud.

        Ir para o painel

      2. Clique na caixa do seletor na barra de menus.
      3. Escolha a organização na caixa Selecionar de e pesquise o nome do projeto.
      4. Clique no nome do projeto para alternar para ele. O número do projeto é mostrado no card Informações do projeto.

      CLI da gcloud

      É possível recuperar um número de projeto do Google Cloud com o seguinte comando:

      gcloud projects describe PROJECT_ID --format="value(projectNumber)"

    • folders/FOLDER_ID

      Como encontrar um ID de pasta do Google Cloud

      Console

      Para encontrar um ID da pasta do Google Cloud, siga estas etapas:

      1. Acesse o console do Google Cloud.

        Acesse o console do Google Cloud

      2. Clique na caixa do seletor na barra de menus.
      3. Clique na caixa Selecionar de e escolha sua organização.
      4. Pesquise o nome da pasta. O ID é exibido ao lado do nome da pasta.

      CLI da gcloud

      Para recuperar um ID de pasta do Google Cloud localizado no nível da organização, use o seguinte comando:

      gcloud resource-manager folders list \
          --organization=$(gcloud organizations describe ORGANIZATION_NAME \
            --format="value(name.segment(1))") \
          --filter='"DISPLAY_NAME":"TOP_LEVEL_FOLDER_NAME"' \
          --format="value(ID)"

      Em que TOP_LEVEL_FOLDER_NAME pode ser uma correspondência de string completa ou parcial. Remova a opção --format para ver mais informações sobre as pastas encontradas.

      Para obter o ID de uma pasta dentro de outra pasta, liste as subpastas:

      gcloud resource-manager folders list --folder=FOLDER_ID

    • organizations/ORGANIZATION_ID

      Como encontrar um ID da organização do Google Cloud

      Console

      Para encontrar um ID da organização do Google Cloud, siga estas etapas:

      1. Acesse o console do Google Cloud.

        Acesse o console do Google Cloud

      2. Clique na caixa do seletor na barra de menus.
      3. Clique na caixa Selecionar de e escolha sua organização.
      4. Selecione a guia Todos. O ID é exibido ao lado do nome da organização.

      CLI da gcloud

      É possível recuperar um ID da organização do Google Cloud com o seguinte comando:

      gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"

  • ASSET_NAME: uma lista separada por vírgulas de nomes completos de recursos para recuperar as políticas do IAM efetivas.

    Você pode recuperar políticas para no máximo 20 recursos em um lote.

Os exemplos de código a seguir são exemplos de comandos da CLI gcloud:

  • Para o ID da organização 123456:

    gcloud asset get-effective-iam-policy \
        --scope=organizations/123456 \
        --names=//cloudresourcemanager.googleapis.com/organizations/123456
    
  • Para um ID de pasta de 1234567:

    gcloud asset get-effective-iam-policy \
        --scope=folders/1234567 \
        --names=//cloudresourcemanager.googleapis.com/folders/1234567
    
  • Para dois recursos de instância do Cloud SQL em um projeto chamado my-project:

    gcloud asset get-effective-iam-policy \
        --scope=projects/my-project \
        --names=//cloudsql.googleapis.com/projects/my-project/instances/instance1,//cloudsql.googleapis.com/projects/my-project/instances/instance2
    

REST

Para receber as políticas de IAM efetivas em um recurso usando a API Cloud Asset Inventory, use o seguinte comando curl:

curl -X POST \
     -H "X-HTTP-Method-Override: GET" \
     -H "Authorization: Bearer $(gcloud auth print-access-token)" \
     -H "Content-Type: application/json" \
     -d '{
          "names": [
            "ASSET_NAME_1",
            "ASSET_NAME_2",
            "..."
          ]
         }' \
     https://cloudasset.googleapis.com/v1/SCOPE/effectiveIamPolicies:batchGet

Forneça os valores a seguir:

  • ASSET_NAME: uma lista separada por vírgulas de nomes completos de recursos para recuperar as políticas do IAM efetivas.

    Você pode recuperar políticas para no máximo 20 recursos em um lote.

  • SCOPE: um escopo pode ser um projeto, uma pasta ou uma organização.

    Os valores permitidos são:

    • projects/PROJECT_ID

    • projects/PROJECT_NUMBER

      Como encontrar um número de projeto do Google Cloud

      Console

      Para encontrar um número de projeto do Google Cloud, siga estas etapas:

      1. Acesse a página Painel no console do Google Cloud.

        Ir para o painel

      2. Clique na caixa do seletor na barra de menus.
      3. Escolha a organização na caixa Selecionar de e pesquise o nome do projeto.
      4. Clique no nome do projeto para alternar para ele. O número do projeto é mostrado no card Informações do projeto.

      CLI da gcloud

      É possível recuperar um número de projeto do Google Cloud com o seguinte comando:

      gcloud projects describe PROJECT_ID --format="value(projectNumber)"

    • folders/FOLDER_ID

      Como encontrar um ID de pasta do Google Cloud

      Console

      Para encontrar um ID da pasta do Google Cloud, siga estas etapas:

      1. Acesse o console do Google Cloud.

        Acesse o console do Google Cloud

      2. Clique na caixa do seletor na barra de menus.
      3. Clique na caixa Selecionar de e escolha sua organização.
      4. Pesquise o nome da pasta. O ID é exibido ao lado do nome da pasta.

      CLI da gcloud

      Para recuperar um ID de pasta do Google Cloud localizado no nível da organização, use o seguinte comando:

      gcloud resource-manager folders list \
          --organization=$(gcloud organizations describe ORGANIZATION_NAME \
            --format="value(name.segment(1))") \
          --filter='"DISPLAY_NAME":"TOP_LEVEL_FOLDER_NAME"' \
          --format="value(ID)"

      Em que TOP_LEVEL_FOLDER_NAME pode ser uma correspondência de string completa ou parcial. Remova a opção --format para ver mais informações sobre as pastas encontradas.

      Para obter o ID de uma pasta dentro de outra pasta, liste as subpastas:

      gcloud resource-manager folders list --folder=FOLDER_ID

    • organizations/ORGANIZATION_ID

      Como encontrar um ID da organização do Google Cloud

      Console

      Para encontrar um ID da organização do Google Cloud, siga estas etapas:

      1. Acesse o console do Google Cloud.

        Acesse o console do Google Cloud

      2. Clique na caixa do seletor na barra de menus.
      3. Clique na caixa Selecionar de e escolha sua organização.
      4. Selecione a guia Todos. O ID é exibido ao lado do nome da organização.

      CLI da gcloud

      É possível recuperar um ID da organização do Google Cloud com o seguinte comando:

      gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"