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 são compatíveis com a recuperação 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 Inventário de recursos do Cloud.

    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 da nuvem soberana da T-Systems .

      Google Cloud console

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

      1. Acesse a página Welcome no console 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 extrair um número de projeto do 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 pasta do Google Cloud

      Google Cloud console

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

      1. Acesse o console 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 extrair o ID de uma pasta do Google Cloud que está 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 organização do Google Cloud

      Google Cloud console

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

      1. Acesse o console 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 extrair o ID de uma 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.

É 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 organização do Google Cloud

Google Cloud console

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

  1. Acesse o console 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 extrair o ID de uma organização do Google Cloud 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 da nuvem soberana da T-Systems .

      Google Cloud console

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

      1. Acesse a página Welcome no console 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 extrair um número de projeto do 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 pasta do Google Cloud

      Google Cloud console

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

      1. Acesse o console 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 extrair o ID de uma pasta do Google Cloud que está 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 organização do Google Cloud

      Google Cloud console

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

      1. Acesse o console 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 extrair o ID de uma organização do Google Cloud 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 organização do Google Cloud

Google Cloud console

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

  1. Acesse o console 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 extrair o ID de uma organização do Google Cloud 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"
                ]
              }
            ]
          }
        }
      ]
    }
  ]
}