Veja as políticas de IAM em vigor

No IAM, as políticas eficazes descrevem como todas as políticas principais e de antecessores na hierarquia de recursos são herdadas para um recurso.

Apenas as políticas de permissão são suportadas para obtenção através do Cloud Asset Inventory. As seguintes formas de controlo de acesso não são suportadas:

Antes de começar

  1. Ative a API Cloud Asset Inventory no projeto a partir do qual está a executar comandos do Cloud Asset Inventory.

    Ative a API Cloud Asset Inventory

  2. Certifique-se de que a sua conta tem a função correta para chamar a API Cloud Asset Inventory. Para ver as autorizações individuais de cada tipo de chamada, consulte a secção Autorizações.

Veja as políticas em vigor nos recursos

gcloud

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

Indique os seguintes valores:

  • SCOPE_PATH: use um dos seguintes valores:

    Os valores permitidos são:

    • projects/PROJECT_ID, onde PROJECT_ID é o ID do projeto que é o nível superior a partir do qual se verificam as políticas de IAM eficazes.
    • projects/PROJECT_NUMBER, onde PROJECT_NUMBER é o número do projeto que é o nível superior a partir do qual se verificam as políticas de IAM eficazes.

      Como encontrar um Google Cloud número do projeto

      Google Cloud consola

      Para encontrar um Google Cloud número do projeto, conclua os seguintes passos:

      1. Aceda à página Boas-vindas na Google Cloud consola.

        Aceder a Boas-vindas

      2. Clique na caixa de lista do comutador na barra de menu.
      3. Selecione a sua organização na caixa de lista e, em seguida, pesquise o nome do projeto. O nome do projeto, o número do projeto e o ID do projeto são apresentados junto ao título Bem-vindo.

        São apresentados até 4000 recursos. Se não vir o projeto que procura, aceda à página Gerir recursos e filtre a lista através do nome desse projeto.

      CLI gcloud

      Pode obter um Google Cloud número do projeto com o seguinte comando:

      gcloud projects describe PROJECT_ID --format="value(projectNumber)"
    • folders/FOLDER_ID, onde FOLDER_ID é o ID da pasta que é o nível superior a partir do qual se verificam as políticas de IAM eficazes.

      Como encontrar o ID de uma Google Cloud pasta

      Google Cloud consola

      Para encontrar o ID de uma Google Cloud pasta, conclua os seguintes passos:

      1. Aceda à Google Cloud consola.

        Aceda à Google Cloud consola

      2. Clique na caixa de lista do comutador na barra de menu.
      3. Selecione a sua organização na caixa de lista.
      4. Pesquise o nome da pasta. O ID da pasta é apresentado junto ao nome da pasta.

      CLI gcloud

      Pode obter o ID de uma Google Cloud pasta localizada ao 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)"

      Onde TOP_LEVEL_FOLDER_NAME é uma correspondência de string parcial ou completa para o nome da pasta. Remova a flag --format para ver mais informações sobre as pastas encontradas.

      O comando anterior não devolve os IDs das subpastas dentro das pastas. Para tal, execute o seguinte comando com o ID de uma pasta de nível superior:

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

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

      Google Cloud consola

      Para encontrar o ID de uma Google Cloud organização, conclua os seguintes passos:

      1. Aceda à Google Cloud consola.

        Aceda à Google Cloud consola

      2. Clique na caixa de lista do comutador na barra de menu.
      3. Selecione a sua organização na caixa de lista.
      4. Clique no separador Tudo. O ID da organização é apresentado junto ao nome da organização.

      CLI gcloud

      Pode obter 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 dos nomes completos dos recursos.

Pode obter políticas para um máximo de 20 recursos num lote.

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

Exemplo

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

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

Google Cloud consola

Para encontrar o ID de uma Google Cloud organização, conclua os seguintes passos:

  1. Aceda à Google Cloud consola.

    Aceda à Google Cloud consola

  2. Clique na caixa de lista do comutador na barra de menu.
  3. Selecione a sua organização na caixa de lista.
  4. Clique no separador Tudo. O ID da organização é apresentado junto ao nome da organização.

CLI gcloud

Pode obter 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

Corpo JSON do pedido:

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

Indique os seguintes valores:

  • SCOPE_PATH: use um dos seguintes valores:

    Os valores permitidos são:

    • projects/PROJECT_ID, onde PROJECT_ID é o ID do projeto que é o nível superior a partir do qual se verificam as políticas de IAM eficazes.
    • projects/PROJECT_NUMBER, onde PROJECT_NUMBER é o número do projeto que é o nível superior a partir do qual se verificam as políticas de IAM eficazes.

      Como encontrar um Google Cloud número do projeto

      Google Cloud consola

      Para encontrar um Google Cloud número do projeto, conclua os seguintes passos:

      1. Aceda à página Boas-vindas na Google Cloud consola.

        Aceder a Boas-vindas

      2. Clique na caixa de lista do comutador na barra de menu.
      3. Selecione a sua organização na caixa de lista e, em seguida, pesquise o nome do projeto. O nome do projeto, o número do projeto e o ID do projeto são apresentados junto ao título Bem-vindo.

        São apresentados até 4000 recursos. Se não vir o projeto que procura, aceda à página Gerir recursos e filtre a lista através do nome desse projeto.

      CLI gcloud

      Pode obter um Google Cloud número do projeto com o seguinte comando:

      gcloud projects describe PROJECT_ID --format="value(projectNumber)"
    • folders/FOLDER_ID, onde FOLDER_ID é o ID da pasta que é o nível superior a partir do qual se verificam as políticas de IAM eficazes.

      Como encontrar o ID de uma Google Cloud pasta

      Google Cloud consola

      Para encontrar o ID de uma Google Cloud pasta, conclua os seguintes passos:

      1. Aceda à Google Cloud consola.

        Aceda à Google Cloud consola

      2. Clique na caixa de lista do comutador na barra de menu.
      3. Selecione a sua organização na caixa de lista.
      4. Pesquise o nome da pasta. O ID da pasta é apresentado junto ao nome da pasta.

      CLI gcloud

      Pode obter o ID de uma Google Cloud pasta localizada ao 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)"

      Onde TOP_LEVEL_FOLDER_NAME é uma correspondência de string parcial ou completa para o nome da pasta. Remova a flag --format para ver mais informações sobre as pastas encontradas.

      O comando anterior não devolve os IDs das subpastas dentro das pastas. Para tal, execute o seguinte comando com o ID de uma pasta de nível superior:

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

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

      Google Cloud consola

      Para encontrar o ID de uma Google Cloud organização, conclua os seguintes passos:

      1. Aceda à Google Cloud consola.

        Aceda à Google Cloud consola

      2. Clique na caixa de lista do comutador na barra de menu.
      3. Selecione a sua organização na caixa de lista.
      4. Clique no separador Tudo. O ID da organização é apresentado junto ao nome da organização.

      CLI gcloud

      Pode obter 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.

Pode obter políticas para um máximo de 20 recursos num lote.

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

Exemplos de comandos

Execute um dos seguintes comandos para ver as políticas de IAM eficazes na instância do Compute Engine que são herdadas da organização com o ID my-organization-id.my-instance

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

Google Cloud consola

Para encontrar o ID de uma Google Cloud organização, conclua os seguintes passos:

  1. Aceda à Google Cloud consola.

    Aceda à Google Cloud consola

  2. Clique na caixa de lista do comutador na barra de menu.
  3. Selecione a sua organização na caixa de lista.
  4. Clique no separador Tudo. O ID da organização é apresentado junto ao nome da organização.

CLI gcloud

Pode obter 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"
                ]
              }
            ]
          }
        }
      ]
    }
  ]
}