Veja políticas do IAM eficazes

No IAM, as políticas efetivas descrevem como todas as políticas pai e ancestrais na hierarquia de recursos são herdadas para um recurso.

Somente as políticas de permissão podem ser recuperadas pelo Inventário de recursos do Cloud. Os seguintes tipos de controle de acesso não são compatíveis:

Antes de começar

  1. Ative a API Cloud Asset Inventory no projeto em que você está executando comandos do Cloud Asset Inventory.

    Ativar a API Cloud Asset Inventory

  2. Verifique se a conta tem o papel correto para chamar a API Cloud Asset Inventory. Para permissões individuais de cada tipo de chamada, consulte Permissões.

Conferir as políticas eficazes nos recursos

gcloud

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

Forneça os valores a seguir:

  • SCOPE_PATH: use um dos seguintes valores:

    Os valores permitidos são:

    • projects/PROJECT_ID, em que PROJECT_ID é o ID do projeto que é o nível superior para verificar as políticas de IAM eficazes.
    • projects/PROJECT_NUMBER, em que PROJECT_NUMBER é o número do projeto que é o nível superior para verificar as políticas de IAM eficazes.

      Como encontrar um número de projeto Google Cloud

      Console doGoogle Cloud

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

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

        Acessar a página de boas-vindas

      2. Clique na caixa de lista switcher na barra de menu.
      3. Selecione sua organização na caixa de lista e pesquise o nome do projeto. O nome, o número e o ID do projeto são mostrados perto do título Welcome.

        Até 4.000 recursos são exibidos. Se você não encontrar o projeto que está procurando, acesse a página Gerenciar recursos e filtre a lista usando o nome dele.

      CLI da gcloud

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

      gcloud projects describe PROJECT_ID --format="value(projectNumber)"
    • folders/FOLDER_ID, em que FOLDER_ID é o ID da pasta que é o nível superior para verificar as políticas de IAM eficazes.

      Como encontrar o ID de uma Google Cloud pasta

      Console doGoogle Cloud

      Para encontrar o ID de uma pasta Google Cloud , siga estas etapas:

      1. Acesse o console do Google Cloud .

        Acesse o console do Google Cloud

      2. Clique na caixa de lista switcher na barra de menu.
      3. Selecione sua organização no campo de lista.
      4. Pesquise o nome da pasta. O ID da pasta é mostrado ao lado do nome dela.

      CLI da gcloud

      É possível recuperar o ID de uma pasta Google Cloud localizada no nível da organização com 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 é uma correspondência de string parcial ou completa para o nome da pasta. Remova a flag --format para conferir mais informações sobre as pastas encontradas.

      O comando anterior não retorna os IDs das subpastas dentro das pastas. Para fazer isso, execute o seguinte comando usando o ID de uma pasta de nível superior:

      gcloud resource-manager folders list --folder=FOLDER_ID
    • organizations/ORGANIZATION_ID, em que ORGANIZATION_ID é o ID da organização que é o nível superior para verificar as políticas de IAM eficazes.

      Como encontrar o ID de uma Google Cloud organização

      Console doGoogle Cloud

      Para encontrar o ID de uma organização Google Cloud , siga estas etapas:

      1. Acesse o console do Google Cloud .

        Acesse o console do Google Cloud

      2. Clique na caixa de lista switcher na barra de menu.
      3. Selecione sua organização no campo de lista.
      4. Selecione a guia Todos. O ID da organização aparece ao lado do nome dela.

      CLI da gcloud

      É possível recuperar o ID de uma Google Cloud organização 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.

É possível recuperar políticas para no máximo 20 recursos em um lote.

Consulte a referência da CLI do gcloud para conferir todas as opções.

Exemplo

Execute o comando a seguir para conferir as políticas do IAM eficazes na instância do Compute Engine my-instance que são herdadas da organização com o ID my-organization-id.

Como encontrar o ID de uma Google Cloud organização

Console doGoogle Cloud

Para encontrar o ID de uma organização Google Cloud , siga estas etapas:

  1. Acesse o console do Google Cloud .

    Acesse o console do Google Cloud

  2. Clique na caixa de lista switcher na barra de menu.
  3. Selecione sua organização no campo de lista.
  4. Selecione a guia Todos. O ID da organização aparece ao lado do nome dela.

CLI da gcloud

É possível recuperar o ID de uma Google Cloud organização com o seguinte comando:

gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
gcloud asset get-effective-iam-policy \
    --scope=organizations/my-organization-id \
    --names=//compute.googleapis.com/projects/my-project/zones/us-central1-a/instances/my-instance

Exemplo de resposta

policyResults:
- fullResourceName: //compute.googleapis.com/projects/my-project/zones/us-central1-a/instances/my-instance
  policies:
  - attachedResource: //cloudresourcemanager.googleapis.com/projects/my-project
    policy:
      bindings:
      - members:
        - user:alex@example.com
        - user:bola@example.com
        role: roles/cloudkms.admin
      - members:
        - serviceAccount:000000000000-compute@developer.gserviceaccount.com
        role: roles/editor
  - attachedResource: //cloudresourcemanager.googleapis.com/folders/000000000000
    policy:
      bindings:
      - members:
        - user:cruz@example.com
        role: roles/resourcemanager.folderAdmin
      - members:
        - user:dani@example.com
        role: roles/resourcemanager.folderEditor
  - attachedResource: //cloudresourcemanager.googleapis.com/organizations/0000000000000
    policy:
      bindings:
      - members:
        - user:hao@example.com
        role: organizations/0000000000000/roles/CustomProjectAdmin
      - members:
        - serviceAccount:000000000000@cloudservices.gserviceaccount.com
        - user:ira@example.com
        - user:jie@example.com
        role: roles/accesscontextmanager.policyAdmin

REST

Método HTTP e URL:

POST https://cloudasset.googleapis.com/v1/SCOPE_PATH/effectiveIamPolicies:batchGet

Solicitar corpo JSON:

{
  "names": [
    "ASSET_NAME_1",
    "ASSET_NAME_2",
    "..."
  ]
}

Forneça os valores a seguir:

  • SCOPE_PATH: use um dos seguintes valores:

    Os valores permitidos são:

    • projects/PROJECT_ID, em que PROJECT_ID é o ID do projeto que é o nível superior para verificar as políticas de IAM eficazes.
    • projects/PROJECT_NUMBER, em que PROJECT_NUMBER é o número do projeto que é o nível superior para verificar as políticas de IAM eficazes.

      Como encontrar um número de projeto Google Cloud

      Console doGoogle Cloud

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

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

        Acessar a página de boas-vindas

      2. Clique na caixa de lista switcher na barra de menu.
      3. Selecione sua organização na caixa de lista e pesquise o nome do projeto. O nome, o número e o ID do projeto são mostrados perto do título Welcome.

        Até 4.000 recursos são exibidos. Se você não encontrar o projeto que está procurando, acesse a página Gerenciar recursos e filtre a lista usando o nome dele.

      CLI da gcloud

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

      gcloud projects describe PROJECT_ID --format="value(projectNumber)"
    • folders/FOLDER_ID, em que FOLDER_ID é o ID da pasta que é o nível superior para verificar as políticas de IAM eficazes.

      Como encontrar o ID de uma Google Cloud pasta

      Console doGoogle Cloud

      Para encontrar o ID de uma pasta Google Cloud , siga estas etapas:

      1. Acesse o console do Google Cloud .

        Acesse o console do Google Cloud

      2. Clique na caixa de lista switcher na barra de menu.
      3. Selecione sua organização no campo de lista.
      4. Pesquise o nome da pasta. O ID da pasta é mostrado ao lado do nome dela.

      CLI da gcloud

      É possível recuperar o ID de uma pasta Google Cloud localizada no nível da organização com 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 é uma correspondência de string parcial ou completa para o nome da pasta. Remova a flag --format para conferir mais informações sobre as pastas encontradas.

      O comando anterior não retorna os IDs das subpastas dentro das pastas. Para fazer isso, execute o seguinte comando usando o ID de uma pasta de nível superior:

      gcloud resource-manager folders list --folder=FOLDER_ID
    • organizations/ORGANIZATION_ID, em que ORGANIZATION_ID é o ID da organização que é o nível superior para verificar as políticas de IAM eficazes.

      Como encontrar o ID de uma Google Cloud organização

      Console doGoogle Cloud

      Para encontrar o ID de uma organização Google Cloud , siga estas etapas:

      1. Acesse o console do Google Cloud .

        Acesse o console do Google Cloud

      2. Clique na caixa de lista switcher na barra de menu.
      3. Selecione sua organização no campo de lista.
      4. Selecione a guia Todos. O ID da organização aparece ao lado do nome dela.

      CLI da gcloud

      É possível recuperar o ID de uma Google Cloud organização com o seguinte comando:

      gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
  • ASSET_NAME_#: uma matriz de nomes completos de recursos.

É possível recuperar políticas para no máximo 20 recursos em um lote.

Consulte a referência REST para conferir todas as opções.

Exemplos de comando

Execute um dos comandos a seguir para conferir as políticas do IAM em vigor na instância do Compute Engine my-instance que são herdadas da organização com o ID my-organization-id.

Como encontrar o ID de uma Google Cloud organização

Console doGoogle Cloud

Para encontrar o ID de uma organização Google Cloud , siga estas etapas:

  1. Acesse o console do Google Cloud .

    Acesse o console do Google Cloud

  2. Clique na caixa de lista switcher na barra de menu.
  3. Selecione sua organização no campo de lista.
  4. Selecione a guia Todos. O ID da organização aparece ao lado do nome dela.

CLI da gcloud

É possível recuperar o ID de uma Google Cloud organização com o seguinte comando:

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

curl (Linux, macOS ou Cloud Shell)

curl -X POST \
     -H "X-HTTP-Method-Override: GET" \
     -H "Authorization: Bearer $(gcloud auth print-access-token)" \
     -H "Content-Type: application/json; charset=utf-8" \
     -d '{
            "names": [
              "//compute.googleapis.com/projects/my-project/zones/us-central1-a/instances/my-instance"
            ]
          }' \
     https://cloudasset.googleapis.com/v1/organizations/my-organization-id/effectiveIamPolicies:batchGet

PowerShell (Windows)

$cred = gcloud auth print-access-token

$headers = @{ 
  "X-HTTP-Method-Override" = "GET";
  "Authorization" = "Bearer $cred"
}


$body = @"
{
  "names": [
    "//compute.googleapis.com/projects/my-project/zones/us-central1-a/instances/my-instance"
  ]
}
"@

Invoke-WebRequest `
  -Method POST `
  -Headers $headers `
  -ContentType: "application/json; charset=utf-8" `
  -Body $body `
  -Uri "https://cloudasset.googleapis.com/v1/organizations/my-organization-id/effectiveIamPolicies:batchGet" | Select-Object -Expand Content

Exemplo de resposta

{
  "policyResults": [
    {
      "fullResourceName": "//compute.googleapis.com/projects/my-project/zones/us-central1-a/instances/instance-1",
      "policies": [
        {
          "attachedResource": "//cloudresourcemanager.googleapis.com/projects/my-project",
          "policy": {
            "bindings": [
              {
                "role": "roles/cloudkms.admin",
                "members": [
                  "user:alex@example.com",
                  "user:bola@example.com"
                ]
              },
              {
                "role": "roles/editor",
                "members": [
                  "serviceAccount:000000000000-compute@developer.gserviceaccount.com"
                ]
              }
            ]
          }
        },
        {
          "attachedResource": "//cloudresourcemanager.googleapis.com/folders/000000000000",
          "policy": {
            "bindings": [
              {
                "role": "roles/resourcemanager.folderAdmin",
                "members": [
                  "user:cruz@example.com"
                ]
              },
              {
                "role": "roles/resourcemanager.folderEditor",
                "members": [
                  "user:dani@example.com"
                ]
              }
            ]
          }
        },
        {
          "attachedResource": "//cloudresourcemanager.googleapis.com/organizations/000000000000",
          "policy": {
            "bindings": [
              {
                "role": "organizations/1060291660910/roles/CustomProjectAdmin",
                "members": [
                  "user:hao@example.com"
                ]
              },
              {
                "role": "roles/accesscontextmanager.policyAdmin",
                "members": [
                  "serviceAccount:000000000000@cloudservices.gserviceaccount.com",
                  "user:ira@example.com",
                  "user:jie@example.com"
                ]
              }
            ]
          }
        }
      ]
    }
  ]
}