Resolva problemas de políticas

Esta página descreve como resolver problemas com as políticas de permissão, negação e limite de acesso principal da gestão de identidade e acesso (IAM).

Veja todas as políticas de permissão e recusa que se aplicam a um recurso

Em Trusted Cloud, as seguintes políticas de permissão e recusa afetam o acesso a um recurso:

  • A política de permissão do recurso
  • As políticas de recusa do recurso, se existirem
  • As políticas de permissão do projeto principal, da pasta e da organização do recurso, se existirem
  • As políticas de recusa do projeto, da pasta e da organização principais do recurso, se existirem

As políticas de permissão e negação de projetos, pastas e organizações principais afetam o acesso a um recurso devido à herança de políticas. Quando anexa uma política de permissão ou negação a um projeto, uma pasta ou uma organização, essa política também se aplica a todos os recursos no interior desse projeto, pasta ou organização.

Por exemplo, se uma política de recusa para uma organização indicar que um principal não pode usar uma autorização específica, o principal não pode usar essa autorização para nenhum recurso na organização. Esta regra aplica-se mesmo que as pastas e os projetos nessa organização tenham políticas de negação mais permissivas ou políticas de autorização que concedam a autorização ao principal.

Da mesma forma, se uma política de permissão para um projeto conceder a um principal uma autorização específica, o principal tem essa autorização para qualquer recurso no projeto, desde que essa autorização não lhe seja recusada.

A união de todas estas políticas é denominada política aplicável ou política em vigor para o recurso.

No Trusted Cloud, pode obter uma lista de todas as políticas de autorização e recusa que afetam o acesso a um projeto através do comando gcloud beta projects get-ancestors-iam-policy com o sinalizador --include-deny. Em conjunto, estas políticas constituem a política aplicável ao projeto. Pode investigar cada política para ver como afeta o acesso do principal.

gcloud

Antes de usar qualquer um dos dados de comandos abaixo, faça as seguintes substituições:

  • PROJECT_ID: O ID do seu Trusted Cloud projeto. Os IDs dos projetos são strings alfanuméricas, como my-project.

Execute o comando gcloud beta projects get-ancestors-iam-policy:

Linux, macOS ou Cloud Shell

gcloud beta projects get-ancestors-iam-policy PROJECT_ID --include-deny --format=json

Windows (PowerShell)

gcloud beta projects get-ancestors-iam-policy PROJECT_ID --include-deny --format=json

Windows (cmd.exe)

gcloud beta projects get-ancestors-iam-policy PROJECT_ID --include-deny --format=json

A resposta contém as políticas de permissão e restrição para o projeto, todas as pastas que são antecessoras do projeto e a organização. O exemplo seguinte mostra políticas de permissão para a organização 1234567890123 e o projeto my-project, bem como uma política de negação para o projeto my-project:

[
  {
    "id": "1234567890123",
    "policy": {
      "bindings": [
        {
          "members": [
            "principalSet://iam.googleapis.com/locations/global/workforcePools/example-pool/group/cloud-admins"
          ],
          "role": "roles/iam.denyAdmin"
        },
        {
          "members": [
            "principal://iam.googleapis.com/locations/global/workforcePools/example-pool/subject/raha@example.com"
          ],
          "role": "roles/iam.serviceAccountAdmin"
        }
      ],
      "etag": "BwXW6Eab7TI=",
      "version": 1
    },
    "type": "organization"
  },
  {
    "id": "my-project",
    "policy": {
      "bindings": [
        {
          "members": [
            "principalSet://iam.googleapis.com/locations/global/workforcePools/example-pool/group/cloud-admins"
          ],
          "role": "roles/owner"
        }
      ],
      "etag": "BwXXjOM7L6M=",
      "type": "project"
    }
  },
  {
    "id": "my-project",
    "policy": {
      "createTime": "2022-02-14T21:46:35.865279Z",
      "displayName": "My deny policy",
      "etag": "MTgyMzg2ODcwNTEyMjMxMTM3Mjg=",
      "kind": "DenyPolicy",
      "name": "policies/cloudresourcemanager.googleapis.com%2Fprojects%2F123456789012/denypolicies/my-deny-policy",
      "rules": [
        {
          "denyRule": {
            "deniedPermissions": [
              "iam.googleapis.com/serviceAccounts.create"
            ],
            "deniedPrincipals": [
              "principal://iam.googleapis.com/locations/global/workforcePools/example-pool/subject/raha@example.com"
            ]
          },
          "description": "Prevent service account creation"
        }
      ],
      "uid": "c83e3dc3-d8a6-6f51-4018-814e9f200b05",
      "updateTime": "2022-02-14T21:46:35.865279Z"
    },
    "type": "project"
  }
]

Neste exemplo, é concedida a Raha a função de administrador da conta de serviço (roles/iam.serviceAccountAdmin) na organização, mas o projeto tem uma política de recusa que impede Raha de usar a autorização iam.googleapis.com/serviceAccounts.create. Como resultado, se a Raha tentar criar uma conta de serviço no projeto my-project, o pedido será recusado.

Em alguns casos, pode apenas ter de ver a política de autorização efetiva para um recurso, por exemplo, se a sua organização não usar políticas de recusa. Nestes casos, pode usar os seguintes métodos para ver a política de autorização efetiva:

  • Veja a política de autorização da IAM do recurso na Trusted Cloud consola. A consola Trusted Cloud mostra automaticamente a política eficaz de cada recurso.

    Para saber como ver a política de autorização da IAM de um recurso na Trusted Cloud consola, consulte o artigo Veja o acesso atual.

  • Use a API Cloud Asset para obter a política de autorização em vigor do recurso. Para saber mais, consulte o artigo Ver políticas de IAM eficazes.