O solucionador de problemas de políticas ajuda a entender se uma conta principal pode acessar um recurso. Com um principal, um recurso e uma permissão, o solucionador de problemas de políticas examina as políticas de permissão, negação e limite de acesso do principal, na sigla em inglês (PAB) que afetam o acesso do principal. Em seguida, ele informa se, com base nessas políticas, o principal pode usar a permissão especificada para acessar o recurso. Ele também lista as políticas relevantes e explica como elas afetam o acesso do principal.
Acesse o solucionador de problemas de políticas usando o console do Google Cloud, a Google Cloud CLI ou a API REST. Para consultas básicas, o uso do console do Google Cloud normalmente é mais rápido. Em cenários mais complexos, use a CLI gcloud ou a API REST.
Antes de começar
-
Enable the Policy Troubleshooter API.
Permissões necessárias
Para resolver problemas de acesso total aos principais, você precisa das seguintes permissões.
Permissões para resolver problemas de acesso de principais individuais
O solucionador de problemas de políticas analisa o acesso de um principal a um recurso com base nas políticas de permissão, negação, limite de acesso principal e papéis que você tem permissão para acessar. Se você não tiver permissão para ver uma política que se aplica a um recurso ou se não tiver permissão para visualizar um papel personalizado, talvez não consiga dizer se uma conta principal tem acesso.
Permissões para resolver problemas de políticas de permissão e negação
Para resolver problemas de políticas de permissão e negação, você precisa de permissões na organização que contém o recurso que você quer resolver. Essas permissões permitem que você visualize as políticas de permissão e negação que controlam o acesso ao recurso.
Para conseguir as permissões necessárias para solucionar problemas de acesso de um principal, peça ao administrador para conceder a você os seguintes papéis do IAM na organização que contém o recurso para o qual você quer resolver problemas de acesso:
-
Revisor de segurança (
roles/iam.securityReviewer
) -
Resolver problemas com políticas de negação:
Revisor de negação (
roles/iam.denyReviewer
) -
Use a Google Cloud CLI para resolver problemas:
Consumidor de uso de serviço (
roles/serviceusage.serviceUsageConsumer
)
Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.
Também é possível conseguir as permissões necessárias por meio de papéis personalizados ou de outros papéis predefinidos.
Se você não tiver permissão para consultar as políticas de permissão e negação de um recurso,
os resultados de acesso para essas políticas serão Unknown
.
Permissões para resolver problemas com políticas de limite de acesso principal
Para resolver problemas com políticas de limite de acesso de principal, você precisa de permissões na organização cujo conjunto de principais inclui o principal. A forma de identificar essa organização depende do tipo principal:
- Contas e grupos do Google: a organização associada ao domínio do Google Workspace que inclui o principal
- Identidades federadas (identidades em pools de identidade da força de trabalho ou de carga de trabalho): a organização que contém o pool de identidade que inclui o principal
- Contas de serviço: a organização que contém o projeto em que a conta de serviço foi criada
Essas permissões permitem que você visualize as políticas de limite de acesso principal que controlam o que o principal pode acessar.
Para conseguir as permissões necessárias para solucionar problemas de acesso de um principal, peça ao administrador que conceda a você os seguintes papéis do IAM na organização apropriada:
-
Visualizador de políticas de limite de acesso principal (
roles/iam.principalAccessBoundaryViewer
) -
Resolver problemas com políticas de limite de acesso de principal vinculadas a um conjunto principal de um projeto, uma pasta ou uma organização:
Administrador da organização (
roles/resourcemanager.organizationAdmin
) -
Resolver problemas com políticas de limite de acesso de principal vinculadas a domínios do Google Workspace:
Administrador do IAM do pool do Workspace (
roles/iam.workspacePoolAdmin
) -
Resolver problemas com políticas de limite de acesso de principal vinculadas a pools de identidade de colaboradores:
Administrador de pool de colaboradores do IAM (
roles/iam.workforcePoolAdmin
) -
Resolver problemas de políticas de limite de acesso de principal vinculadas a pools de Identidade da carga de trabalho:
Administrador de pool de Identidade da carga de trabalho do IAM (
roles/iam.workloadIdentityPoolAdmin
)
Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.
Também é possível conseguir as permissões necessárias por meio de papéis personalizados ou de outros papéis predefinidos.
Se você não tiver permissão para acessar as políticas de limite de acesso principal que se aplicam
a um principal, os resultados de acesso para políticas de limite de acesso principal serão
Unknown
.
Permissões para resolver problemas de acesso de membros do grupo
Se as políticas de permissão e negação incluem grupos, você precisa da permissão groups.read
da API Admin do Google Workspace para resolver problemas de acesso a membros de grupos individuais. Os superadministradores e os administradores de grupos têm essa permissão automaticamente. Para
conceder essa permissão a um usuário que não seja um superadministrador ou administrador de grupo, crie um papel de administrador do Google Workspace Workspace que contenha o
privilégio groups.read
(localizado em Privilégios da API Admin) e conceda esse papel ao
usuário.
Se você não tiver essas permissões, as vinculações de função e as regras de negação que contêm grupos ou domínios terão um resultado de acesso de Desconhecido, a menos que a regra de vinculação ou negação também inclua explicitamente o principal.
Permissões para resolver problemas de acesso para membros do domínio
Se as políticas de permissão e negação incluem uma conta do Google Workspace ou um domínio do Cloud Identity, você precisa ser um administrador de domínio para resolver problemas de acesso a membros individuais do domínio.
Se você não tiver essas permissões, as vinculações de função e as regras de negação que contêm grupos ou domínios terão um resultado de acesso de Desconhecido, a menos que a regra de vinculação ou negação também inclua explicitamente o principal.
Resolver problemas no acesso
Para resolver problemas de acesso, você precisa das seguintes informações:
- Principal: o endereço de e-mail a ser verificado. Esse endereço precisa se referir a uma conta de usuário ou de serviço. Outros tipos de participantes, incluindo grupos, domínios, identidades de força de trabalho e identidades de carga de trabalho, não são compatíveis.
Recurso:o nome completo do recurso para o qual você quer resolver problemas de acesso. Por exemplo, para resolver problemas de acesso ao projeto
my-project
, digite//cloudresourcemanager.googleapis.com/projects/my-project
. Para outros tipos de recursos, consulte os exemplos de nomes completos de recursos.Permissão: a permissão para verificar. Se você usar o console do Google Cloud, ele vai apresentar uma lista de sugestões enquanto você digita.
Para resolver problemas de uma permissão, ela precisa ser aplicável ao recurso na solicitação. Em outras palavras, é preciso ser possível usar essa permissão para acessar o recurso de alguma forma. Se a permissão não for aplicável ao recurso, a solicitação falhará. Por exemplo, se você tentar resolver problemas com a permissão
compute.instances.get
para um cluster do Google Kubernetes Engine, a solicitação falhará porque a permissãocompute.instance.get
não pode ser usada para acessar clusters do Google Kubernetes Engine.Para uma lista completa de permissões, consulte a referência de permissões.
Console
Para resolver problemas de acesso, faça o seguinte:
No console do Google Cloud, acesse a página Solucionador de problemas de políticas.
Insira o e-mail do principal com o acesso que você quer verificar.
Insira o nome completo do recurso a ser verificado.
Se você não souber o nome completo do recurso, faça o seguinte:
- Se você estiver resolvendo problemas de acesso a um projeto, uma pasta ou uma organização, começe a digitar para ver as opções de preenchimento automático.
Se você estiver solucionando problemas de acesso a outro tipo de recurso, clique em Procurar para abrir a caixa de diálogo de pesquisa de recursos e pesquise o recurso:
- Na caixa Selecionar escopo, selecione um projeto, uma pasta ou uma organização para pesquisar.
- Na caixa Tipo de recurso, selecione os tipos de recurso que você quer pesquisar.
- Na caixa Pesquisar recursos, digite uma parte do nome do recurso.
- Na seção de resultados, selecione o recurso que você quer verificar.
- Clique em Selecionar para escolher o recurso e fechar a caixa de diálogo.
Insira a permissão a ser verificada.
Se você não souber o nome completo da permissão, comece a digitar para ver as opções de preenchimento automático.
Opcional: para verificar vários recursos e permissões, selecione Adicionar outro par e repita a etapa anterior.
Clique em Verificar acesso.
gcloud
Para descobrir por que um participante tem ou não uma permissão do IAM, use o comando
gcloud beta policy-troubleshoot iam
.
Antes de usar os dados do comando abaixo, faça estas substituições:
-
VERSION
: opcional. A versão do comando a ser usada. Para resolver problemas de acesso com base apenas nas políticas de permissão e negação, não especifique uma versão. Para resolver problemas de acesso com base nas políticas de permissão, negação e limite de acesso do principal, use a versãobeta
. EMAIL
: o endereço de e-mail do participante com permissões que você quer resolver.RESOURCE
: o recurso em que a permissão é concedida.PERMISSION
: a permissão que você quer resolver.
Execute o comando gcloud beta policy-troubleshoot iam:
Linux, macOS ou Cloud Shell
gcloud VERSION policy-intelligence troubleshoot-policy iam RESOURCE --principal-email=EMAIL \ --permission=PERMISSION
Windows (PowerShell)
gcloud VERSION policy-intelligence troubleshoot-policy iam RESOURCE --principal-email=EMAIL ` --permission=PERMISSION
Windows (cmd.exe)
gcloud VERSION policy-intelligence troubleshoot-policy iam RESOURCE --principal-email=EMAIL ^ --permission=PERMISSION
Você receberá uma resposta semelhante a esta:
Resposta
{ "accessTuple": { "conditionContext": { "destination": {}, "effectiveTags": [ { "namespacedTagKey": "project-1/tag-key-1", "namespacedTagValue": "project-1/tag-key-1/tag-value-1", "tagKey": "tagKeys/123456789012", "tagKeyParentName": "projects/123456789012", "tagValue": "tagValues/123456789012" }, ], "request": {}, "resource": {} }, "fullResourceName": "//cloudresourcemanager.googleapis.com/projects/project-1", "permission": "bigtable.instances.create", "permissionFqdn": "bigtable.googleapis.com/instances.create", "principal": "service-account-3@project-1.iam.gserviceaccount.com" }, "allowPolicyExplanation": { "allowAccessState": "ALLOW_ACCESS_STATE_NOT_GRANTED", "explainedPolicies": [ { "allowAccessState": "ALLOW_ACCESS_STATE_NOT_GRANTED", "bindingExplanations": [ { "allowAccessState": "ALLOW_ACCESS_STATE_NOT_GRANTED", "combinedMembership": { "membership": "MEMBERSHIP_NOT_MATCHED", "relevance": "HEURISTIC_RELEVANCE_NORMAL" }, "condition": { "expression": "resource.type == \"cloudresourcemanager.googleapis.com/Project\"", "title": "Resource-based condition" }, "conditionExplanation": { "evaluationStates": [ { "end": 62, "value": false } ], "value": false }, "memberships": { "serviceAccount:service-account-1@project-1.iam.gserviceaccount.com": { "membership": "MEMBERSHIP_NOT_MATCHED", "relevance": "HEURISTIC_RELEVANCE_NORMAL" } }, "relevance": "HEURISTIC_RELEVANCE_NORMAL", "role": "roles/bigquery.admin", "rolePermission": "ROLE_PERMISSION_NOT_INCLUDED", "rolePermissionRelevance": "HEURISTIC_RELEVANCE_NORMAL" }, { "allowAccessState": "ALLOW_ACCESS_STATE_NOT_GRANTED", "combinedMembership": { "membership": "MEMBERSHIP_NOT_MATCHED", "relevance": "HEURISTIC_RELEVANCE_NORMAL" }, "condition": { "expression": "resource.matchTag(\"project-1/tag-key-1\", \"tag-value-1\")", "title": "Tag-based condition" }, "conditionExplanation": { "evaluationStates": [ { "end": 73, "value": true } ], "value": true }, "memberships": { "serviceAccount:service-account-2@project-1.iam.gserviceaccount.com": { "membership": "MEMBERSHIP_NOT_MATCHED", "relevance": "HEURISTIC_RELEVANCE_NORMAL" } }, "relevance": "HEURISTIC_RELEVANCE_NORMAL", "role": "roles/bigquery.admin", "rolePermission": "ROLE_PERMISSION_NOT_INCLUDED", "rolePermissionRelevance": "HEURISTIC_RELEVANCE_NORMAL" }, { "allowAccessState": "ALLOW_ACCESS_STATE_NOT_GRANTED", "combinedMembership": { "membership": "MEMBERSHIP_NOT_MATCHED", "relevance": "HEURISTIC_RELEVANCE_NORMAL" }, "memberships": { "user:user-2@example.com": { "membership": "MEMBERSHIP_NOT_MATCHED", "relevance": "HEURISTIC_RELEVANCE_NORMAL" } }, "relevance": "HEURISTIC_RELEVANCE_NORMAL", "role": "roles/compute.admin", "rolePermission": "ROLE_PERMISSION_NOT_INCLUDED", "rolePermissionRelevance": "HEURISTIC_RELEVANCE_NORMAL" }, { "allowAccessState": "ALLOW_ACCESS_STATE_NOT_GRANTED", "combinedMembership": { "membership": "MEMBERSHIP_NOT_MATCHED", "relevance": "HEURISTIC_RELEVANCE_NORMAL" }, "memberships": { "user:user-1@example.com": { "membership": "MEMBERSHIP_NOT_MATCHED", "relevance": "HEURISTIC_RELEVANCE_NORMAL" }, "user:user-3@example.com": { "membership": "MEMBERSHIP_NOT_MATCHED", "relevance": "HEURISTIC_RELEVANCE_NORMAL" } }, "relevance": "HEURISTIC_RELEVANCE_NORMAL", "role": "roles/iam.serviceAccountTokenCreator", "rolePermission": "ROLE_PERMISSION_NOT_INCLUDED", "rolePermissionRelevance": "HEURISTIC_RELEVANCE_NORMAL" }, { "allowAccessState": "ALLOW_ACCESS_STATE_NOT_GRANTED", "combinedMembership": { "membership": "MEMBERSHIP_NOT_MATCHED", "relevance": "HEURISTIC_RELEVANCE_NORMAL" }, "memberships": { "user:user-2@example.com": { "membership": "MEMBERSHIP_NOT_MATCHED", "relevance": "HEURISTIC_RELEVANCE_NORMAL" }, "user:user-1@example.com": { "membership": "MEMBERSHIP_NOT_MATCHED", "relevance": "HEURISTIC_RELEVANCE_NORMAL" } }, "relevance": "HEURISTIC_RELEVANCE_HIGH", "role": "roles/owner", "rolePermission": "ROLE_PERMISSION_INCLUDED", "rolePermissionRelevance": "HEURISTIC_RELEVANCE_HIGH" }, { "allowAccessState": "ALLOW_ACCESS_STATE_NOT_GRANTED", "combinedMembership": { "membership": "MEMBERSHIP_MATCHED", "relevance": "HEURISTIC_RELEVANCE_NORMAL" }, "memberships": { "serviceAccount:service-account-3@project-1.iam.gserviceaccount.com": { "membership": "MEMBERSHIP_MATCHED", "relevance": "HEURISTIC_RELEVANCE_NORMAL" }, "serviceAccount:service-account-4@project-1.iam.gserviceaccount.com": { "membership": "MEMBERSHIP_NOT_MATCHED", "relevance": "HEURISTIC_RELEVANCE_NORMAL" } }, "relevance": "HEURISTIC_RELEVANCE_NORMAL", "role": "roles/resourcemanager.projectIamAdmin", "rolePermission": "ROLE_PERMISSION_NOT_INCLUDED", "rolePermissionRelevance": "HEURISTIC_RELEVANCE_NORMAL" }, { "allowAccessState": "ALLOW_ACCESS_STATE_NOT_GRANTED", "combinedMembership": { "membership": "MEMBERSHIP_NOT_MATCHED", "relevance": "HEURISTIC_RELEVANCE_NORMAL" }, "memberships": { "serviceAccount:service-account-4@project-1.iam.gserviceaccount.com": { "membership": "MEMBERSHIP_NOT_MATCHED", "relevance": "HEURISTIC_RELEVANCE_NORMAL" } }, "relevance": "HEURISTIC_RELEVANCE_NORMAL", "role": "roles/resourcemanager.tagViewer", "rolePermission": "ROLE_PERMISSION_NOT_INCLUDED", "rolePermissionRelevance": "HEURISTIC_RELEVANCE_NORMAL" } ], "fullResourceName": "//cloudresourcemanager.googleapis.com/projects/project-1", "policy": { "bindings": [ { "condition": { "expression": "resource.type == \"cloudresourcemanager.googleapis.com/Project\"", "title": "Resource-based condition" }, "members": [ "serviceAccount:service-account-1@project-1.iam.gserviceaccount.com" ], "role": "roles/bigquery.admin" }, { "condition": { "expression": "resource.matchTag(\"project-1/tag-key-1\", \"tag-value-1\")", "title": "Tag-based condition" }, "members": [ "serviceAccount:service-account-2@project-1.iam.gserviceaccount.com" ], "role": "roles/bigquery.admin" }, { "members": [ "user:user-2@example.com" ], "role": "roles/compute.admin" }, { "members": [ "user:user-1@example.com", "user:user-3@example.com" ], "role": "roles/iam.serviceAccountTokenCreator" }, { "members": [ "user:user-2@example.com", "user:user-1@example.com" ], "role": "roles/owner" }, { "members": [ "serviceAccount:service-account-3@project-1.iam.gserviceaccount.com", "serviceAccount:service-account-4@project-1.iam.gserviceaccount.com" ], "role": "roles/resourcemanager.projectIamAdmin" }, { "members": [ "serviceAccount:service-account-4@project-1.iam.gserviceaccount.com" ], "role": "roles/resourcemanager.tagViewer" } ], "etag": "BwYY6ttEMEY=", "version": 3 }, "relevance": "HEURISTIC_RELEVANCE_HIGH" }, ], "relevance": "HEURISTIC_RELEVANCE_HIGH" }, "denyPolicyExplanation": { "denyAccessState": "DENY_ACCESS_STATE_NOT_DENIED", "explainedResources": [ { "denyAccessState": "DENY_ACCESS_STATE_NOT_DENIED", "explainedPolicies": [ { "denyAccessState": "DENY_ACCESS_STATE_NOT_DENIED", "policy": { "createTime": "2024-04-09T23:28:24.103203Z", "displayName": "Troubleshooter v3 prober non-tag deny policy", "etag": "MTgyMzk3MDY4OTY4MDE0ODg4OTY=", "kind": "DenyPolicy", "name": "policies/cloudresourcemanager.googleapis.com%2Fprojects%2F546942305807/denypolicies/deny-policy-1", "rules": [ { "denyRule": { "deniedPermissions": [ "bigquery.googleapis.com/datasets.create" ], "deniedPrincipals": [ "principal://iam.googleapis.com/projects/-/serviceAccounts/service-account-1@project-1.iam.gserviceaccount.com" ] } } ], "uid": "fab63b4d-ecfb-5f06-8a6d-602bf1be5062", "updateTime": "2024-05-20T23:29:38.428095Z" }, "relevance": "HEURISTIC_RELEVANCE_HIGH", "ruleExplanations": [ { "combinedDeniedPermission": { "permissionMatchingState": "PERMISSION_PATTERN_NOT_MATCHED", "relevance": "HEURISTIC_RELEVANCE_HIGH" }, "combinedDeniedPrincipal": { "membership": "MEMBERSHIP_NOT_MATCHED", "relevance": "HEURISTIC_RELEVANCE_HIGH" }, "combinedExceptionPermission": { "permissionMatchingState": "PERMISSION_PATTERN_NOT_MATCHED", "relevance": "HEURISTIC_RELEVANCE_NORMAL" }, "combinedExceptionPrincipal": { "membership": "MEMBERSHIP_NOT_MATCHED", "relevance": "HEURISTIC_RELEVANCE_NORMAL" }, "deniedPermissions": { "bigquery.googleapis.com/datasets.create": { "permissionMatchingState": "PERMISSION_PATTERN_NOT_MATCHED", "relevance": "HEURISTIC_RELEVANCE_HIGH" } }, "deniedPrincipals": { "principal://iam.googleapis.com/projects/-/serviceAccounts/service-account-1@project-1.iam.gserviceaccount.com": { "membership": "MEMBERSHIP_NOT_MATCHED", "relevance": "HEURISTIC_RELEVANCE_HIGH" } }, "denyAccessState": "DENY_ACCESS_STATE_NOT_DENIED", "relevance": "HEURISTIC_RELEVANCE_HIGH" } ] }, ], "fullResourceName": "//cloudresourcemanager.googleapis.com/projects/123456789012", "relevance": "HEURISTIC_RELEVANCE_HIGH" } ], "permissionDeniable": true, "relevance": "HEURISTIC_RELEVANCE_NORMAL" }, "overallAccessState": "CANNOT_ACCESS", "pabPolicyExplanation": { "explainedBindingsAndPolicies": [ { "bindingAndPolicyAccessState": "PAB_ACCESS_STATE_NOT_ENFORCED", "explainedPolicy": { "explainedRules": [ { "combinedResourceInclusionState": "RESOURCE_INCLUSION_STATE_NOT_INCLUDED", "effect": "ALLOW", "explainedResources": [ { "relevance": "HEURISTIC_RELEVANCE_NORMAL", "resource": "//cloudresourcemanager.googleapis.com/projects/project-2", "resourceInclusionState": "RESOURCE_INCLUSION_STATE_NOT_INCLUDED" } ], "relevance": "HEURISTIC_RELEVANCE_NORMAL", "ruleAccessState": "PAB_ACCESS_STATE_NOT_ALLOWED" } ], "policy": { "createTime": "2024-04-09T17:40:51.627668Z", "details": { "enforcementVersion": "1", "rules": [ { "effect": "ALLOW", "resources": [ "//cloudresourcemanager.googleapis.com/projects/project-2" ] } ] }, "displayName": "Troubleshooter v3 PAB Policy", "etag": "m64s4IgR80eDJDywuVA2DA==", "name": "organizations/123456789012/locations/global/principalAccessBoundaryPolicies/example-pab-policy", "uid": "puid_11875429267422576641", "updateTime": "2024-04-09T17:40:51.627668Z" }, "policyAccessState": "PAB_ACCESS_STATE_NOT_ENFORCED", "policyVersion": { "enforcementState": "PAB_POLICY_ENFORCEMENT_STATE_NOT_ENFORCED", "version": 1 }, "relevance": "HEURISTIC_RELEVANCE_NORMAL" }, "explainedPolicyBinding": { "conditionExplanation": { "evaluationStates": [ { "end": 53, "value": true }, { "end": 153, "start": 58, "value": false }, { "end": 248, "start": 157, "value": false } ], "value": false }, "policyBinding": { "condition": { "expression": "principal.type == 'iam.googleapis.com/ServiceAccount' && (principal.subject=='service-account-1@project-1.iam.gserviceaccount.com' || principal.subject=='service-account-2@project-1.iam.gserviceaccount.com')" }, "createTime": "2024-04-09T17:51:13.504418Z", "displayName": "PAB Policy Binding on project-1 project", "etag": "W/\"hz9IKzHsIqvopqDRcVYDxQ==\"", "name": "projects/123456789012/locations/global/policyBindings/example-policy-binding", "policy": "organizations/123456789012/locations/global/principalAccessBoundaryPolicies/example-pab-policy", "policyKind": "PRINCIPAL_ACCESS_BOUNDARY", "policyUid": "puid_11875429267422576641", "target": { "principalSet": "//cloudresourcemanager.googleapis.com/projects/project-1" }, "uid": "buid_1012746966204940289", "updateTime": "2024-05-09T23:08:56.846355Z" }, "policyBindingState": "POLICY_BINDING_STATE_NOT_ENFORCED", "relevance": "HEURISTIC_RELEVANCE_NORMAL" }, "relevance": "HEURISTIC_RELEVANCE_NORMAL" } ], "principalAccessBoundaryAccessState": "PAB_ACCESS_STATE_NOT_ENFORCED", "relevance": "HEURISTIC_RELEVANCE_NORMAL" } }
REST
Para descobrir por que um participante tem ou não uma permissão do IAM, use o método
iam.troubleshoot
da API Policy Troubleshooter.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
-
VERSION
: a versão da API a ser usada para essa solicitação. Para resolver problemas de acesso com base apenas em políticas de permissão e negação, usev3
. Para resolver problemas de acesso com base nas políticas de permissão, negação e limite de acesso do principal, usev3beta
. EMAIL
: o endereço de e-mail do participante com permissões que você quer resolver.RESOURCE
: o recurso em que a permissão é concedida.PERMISSION
: a permissão que você quer resolver.PROJECT_ID
: o ID do projeto que você quer usar para fazer a solicitação. Os IDs do projeto são strings alfanuméricas, comomy-project
.
Método HTTP e URL:
POST https://policytroubleshooter.googleapis.com/VERSION/iam:troubleshoot
Corpo JSON da solicitação:
{ "accessTuple": { "principal": "EMAIL", "fullResourceName": "RESOURCE", "permission": "PERMISSION" } }
Para enviar a solicitação, expanda uma destas opções:
Você receberá uma resposta JSON semelhante a esta:
Entender os resultados do solucionador de problemas
Console
A página de resultados contém as seguintes informações:
- Detalhes da avaliação
- Detalhes da política, que contém o seguinte:
Detalhes da avaliação
A seção Detalhes da avaliação contém um resumo do acesso que você está resolvendo, incluindo o principal, o recurso e a permissão especificados. Se você estiver solucionando problemas de vários pares de permissões de recursos, use a lista Avaliação de acesso para alternar entre eles.
Detalhes da política
A seção Detalhes da política contém informações sobre como as políticas de limite de acesso de principal, de permissão e de negação relevantes afetam o acesso do principal.
As políticas de limite de acesso de principal relevantes incluem todas as políticas de limite de acesso de principal que são vinculadas a um conjunto de principais que inclui o principal.
As políticas de permissão e negação relevantes incluem o seguinte:
- A política de permissão do recurso
- As políticas de negação do recurso, se houver
- As políticas de permissão do projeto pai, pasta e organização do recurso, se houver
- As políticas de negação do projeto pai, da pasta e da organização do recurso, se houver
As políticas de permissão e negação de projetos, pastas e organizações mães são relevantes devido à herança de políticas. Quando você anexa uma política de permissão ou negação a um projeto, pasta ou organização, essa política também se aplica a todos os recursos dentro do projeto, da pasta ou da organização.
Por exemplo, se uma política de negação para uma organização disser que um principal não pode usar uma permissão específica, o principal não poderá usar essa permissão para nenhum recurso dentro da organização. Essa regra se aplica mesmo que as pastas e os projetos nessa organização tenham políticas de negação mais permissivas ou permitam políticas que dão ao principal a permissão.
Da mesma forma, se uma política de permissão para um projeto conceder a um principal uma permissão específica, o principal terá essa permissão para qualquer recurso no projeto, desde que essa permissão não seja negada.
A seção Detalhes da política contém as seguintes seções:
- Estado de acesso
- Política de limite de acesso de principal
- Política de negação
- Política de permissão
Estado de acesso
A seção Estado de acesso resume os resultados de cada tipo de política (políticas de limite de acesso de principal, políticas de negação e políticas de permissão) e informa o resultado geral. O resultado indica se o principal pode usar a permissão para acessar o recurso, de acordo com as políticas relevantes.
Para que um usuário possa usar a permissão para acessar o recurso, todos os tipos de política precisam permitir o acesso. Para mais informações, consulte a Avaliação de políticas.
Política de limite de acesso de principal
Na seção Política de limite de acesso de principal, você pode conferir todas as políticas de limite de acesso de principal às quais o principal está sujeito e as vinculações de políticas que vinculam essas políticas ao principal.
O painel Policies lista todas as políticas vinculadas a um conjunto de principais que inclui o principal. Ao lado de cada política, há um ícone que indica como ela afeta o acesso do principal.
As políticas de limite de acesso principal podem afetar o acesso de um principal das seguintes maneiras:
- O principal está qualificado para acessar o recurso: a política de limite de acesso principal se aplica ao principal, e uma das regras dele contém o recurso consultado.
- A principal não pode acessar o recurso: a política de limite de acesso principal se aplica à principal, mas o recurso consultado não está nas regras dessa política.
Não aplicada: as políticas de limite de acesso principal não são aplicadas nas seguintes situações:
- O IAM não aplica a permissão especificada na versão de aplicação da política de limite de acesso de principal. Como resultado, a política de limite de acesso principal não pode bloquear o acesso.
- Devido a uma condição na vinculação de política, a política de limite de acesso principal ou a vinculação não se aplica ao principal.
- Uma política de limite de acesso de principal não tem regras.
Se uma política de limite de acesso de principal não for aplicada, ela não poderá afetar se o principal pode acessar o recurso.
Para conferir as regras e vinculações associadas a uma política de limite de acesso de principal, clique no nome dela. O painel adjacente a Políticas mostra os detalhes da política.
Para conferir as regras na política, clique na guia Regras de limite. Essa guia mostra uma tabela com as regras relevantes da política de limite de acesso principal.
Uma regra de limite de acesso principal é relevante se ela afetar o resultado geral da consulta do solucionador de problemas de políticas. Como resultado, as regras relevantes variam dependendo dos resultados do solucionador de problemas de políticas. Por exemplo, considere as seguintes situações:
- O solucionador de problemas de políticas indica que o principal pode acessar o recurso. Como resultado, as regras relevantes são aquelas que tornam o principal qualificado para acessar o recurso.
- O solucionador de problemas de políticas indica que o principal não pode acessar o recurso. No entanto, de acordo com as políticas de limite de acesso principal relevantes, o principal está qualificado para acessar o recurso. Como resultado, nenhuma regra é relevante, porque as políticas de limite de acesso principal não são a razão pela qual o principal não pode acessar o recurso.
- O solucionador de problemas de políticas indica que o principal não pode acessar o recurso. Além disso, de acordo com as políticas de limite de acesso de principal relevantes, o principal não está qualificado para acessar o recurso. Como resultado, as regras relevantes são aquelas que não tornam o principal qualificado para acessar o recurso.
Para conferir todas as regras de limite de acesso de principal em uma política, desmarque a caixa de seleção Mostrar apenas regras e vinculações relevantes.
A coluna Findings na tabela de regras de limite indica se a regra de limite de acesso principal contém o recurso consultado. Para conferir mais detalhes sobre a regra, clique em Ver detalhes da regra.
Para conferir as vinculações da política, clique na guia Vinculação. Essa guia mostra uma tabela das vinculações de políticas relevantes para a política de limite de acesso de principal selecionada.
Uma vinculação de política é relevante se aplicar efetivamente a política de limite de acesso principal ao principal consultado. Para que uma vinculação de política aplique uma política de limite de acesso de principal a um principal, as seguintes condições precisam ser verdadeiras:
- O principal definido na vinculação de políticas precisa incluir o principal consultado
- Todas as condições na vinculação de política precisam ser avaliadas como
true
para o principal consultado.
Para conferir todas as vinculações de políticas com conjuntos de participantes que incluem o participante consultado, independentemente de ele atender à condição na vinculação, desmarque a caixa de seleção Mostrar apenas regras e vinculações relevantes.
A coluna Findings na tabela de vinculações indica se a vinculação é aplicada ao principal consultado. Para conferir mais detalhes sobre a vinculação de políticas, clique em Ver detalhes da vinculação.
Política de negação
Na seção Política de negação, você pode conferir todas as políticas de negação relevantes, identificar regras de negação que negam o acesso ao principal e entender por que uma regra de negação nega ou não a permissão ao principal.
O painel Resources with deny policies lista todas as políticas de negação relevantes, organizadas pelos recursos a que estão anexadas. Ao lado de cada política de negação, há uma avaliação de acesso. Essa avaliação se aplica apenas a essa política de negação. Ela não reflete nenhum acesso de políticas herdadas. Se você não tiver permissão para consultar a política de negação de um recurso, a lista de recursos não vai incluir esse recurso ou as políticas de negação dele.
Para conferir as regras de negação relevantes nessas políticas, clique em uma delas. Para ver todas as regras de negação nas políticas de negação de um recurso, clique em um recurso. As regras de negação aparecem no painel Regras de negação. Esse painel contém uma tabela de todas as regras de negação com o principal ou a permissão consultada para o recurso ou a política de negação que você selecionou.
A coluna Acesso indica se a regra de negação nega a permissão ao principal. Para conferir mais detalhes sobre a regra de negação, clique em Ver regra de negação na linha dela.
Política de permissão
Na seção Política de permissão, você pode navegar por todas as políticas de permissão relevantes, identificar vinculações de papéis que concedem acesso ao principal e entender por que uma vinculação de papel concede ou não a permissão ao principal.
O painel Resources lista o recurso especificado e os ancestrais dele. Ao lado de cada recurso, há uma avaliação de acesso. Essa avaliação se aplica apenas à política de permissão do recurso. Ela não reflete nenhum acesso de políticas herdadas. Se você não tiver permissão para consultar a política de permissão de um recurso, a lista de recursos não vai incluir esse recurso.
Para conferir as vinculações de função relevantes na política de permissão de um recurso e saber como elas concedem ou não a permissão ao principal, clique no recurso. As vinculações de papéis da política de permissão aparecem no painel Vinculação de papéis.
O painel Vinculação de papéis contém uma tabela de vinculações de papéis na política de permissão do recurso selecionado. Por padrão, a tabela contém apenas vinculações de papéis que incluem um papel com a permissão especificada. Se o principal não tiver acesso, a tabela também vai mostrar vinculações de papéis com papéis personalizados editáveis. Para conferir todas as vinculações de função, desmarque a caixa de seleção Mostrar apenas vinculações relevantes.
A coluna Acesso indica se a vinculação de papel concede a permissão ao principal. Para conferir mais detalhes sobre a vinculação de função, clique em Conferir detalhes da vinculação na linha dela.
gcloud
A resposta contém quatro seções principais: uma descrição da tupla de acesso na solicitação, os resultados da avaliação da política de permissão, os resultados da avaliação da política de negação e o estado de acesso geral.
-
accessTuple
: uma descrição da tupla de acesso na solicitação, incluindo qualquer contexto de condição fornecido. Essa seção também contém um resumo das tags que se aplicam ao recurso. -
allowPolicyExplanation
: um resumo de se as políticas de permissão relevantes concedem a permissão ao principal, seguido por uma lista de políticas de permissão e as vinculações de papéis.Para cada política de permissão, a resposta lista todas as vinculações de função na política e as avalia com base nos seguintes critérios:
- Se a vinculação de função inclui a permissão.
- Se a vinculação de função inclui o principal.
- Se as condições na vinculação de função, se houver, são atendidas.
Em seguida, a resposta mostra o texto JSON completo da política de permissão.
-
denyPolicyExplanation
: um resumo de se as políticas de negação relevantes negam a permissão ao principal, seguido de uma lista de recursos com políticas de negação. Para cada recurso, a resposta lista todas as políticas de negação anexadas a ele.Para cada política de negação, a resposta imprime os metadados da política, lista as regras de negação na política e avalia cada regra com base nos seguintes critérios:
- Se a regra de negação inclui a permissão.
- Indica se a permissão está listada como uma exceção na regra de bloqueio.
- Se a regra de negação inclui o principal.
- Se o principal está listado como uma exceção na regra de negação.
- Se as condições na regra de negação, se houver, foram atendidas.
-
overallAccessState
: se o principal pode usar a permissão especificada para acessar o recurso especificado com base nas políticas de permissão, de negação e de limite de acesso de principal relevantes.As políticas de limite de acesso de principal relevantes incluem todas as políticas de limite de acesso de principal que são vinculadas a um conjunto de principais que inclui o principal.
As políticas de permissão e negação relevantes incluem o seguinte:
- A política de permissão do recurso
- As políticas de negação do recurso, se houver
- As políticas de permissão do projeto pai, pasta e organização do recurso, se houver
- As políticas de negação do projeto pai, da pasta e da organização do recurso, se houver
As políticas de permissão e negação de projetos, pastas e organizações mães são relevantes devido à herança de políticas. Quando você anexa uma política de permissão ou negação a um projeto, pasta ou organização, essa política também se aplica a todos os recursos dentro do projeto, da pasta ou da organização.
Por exemplo, se uma política de negação para uma organização disser que um principal não pode usar uma permissão específica, o principal não poderá usar essa permissão para nenhum recurso dentro da organização. Essa regra se aplica mesmo que as pastas e os projetos nessa organização tenham políticas de negação mais permissivas ou permitam políticas que dão ao principal a permissão.
Da mesma forma, se uma política de permissão para um projeto conceder a um principal uma permissão específica, o principal terá essa permissão para qualquer recurso no projeto, desde que essa permissão não seja negada.
Para que um usuário possa usar a permissão para acessar o recurso, todos os tipos de política precisam permitir o acesso. Para mais informações, consulte Avaliação de políticas.
-
pabPolicyExplanation
: um resumo de se as políticas de limite de acesso de principal relevantes permitem que o principal acesse o recurso, seguido pelas vinculações de políticas de limite de acesso de principal e políticas de limite de acesso de principal relevantes.As políticas de limite de acesso principal podem permitir, não permitir ou não ser aplicadas. As políticas de limite de acesso principal não são aplicadas nas seguintes situações:
- O IAM não aplica a permissão especificada na versão de aplicação da política de limite de acesso de principal. Como resultado, a política de limite de acesso principal não pode bloquear o acesso.
- Devido a uma condição na vinculação de política, a política de limite de acesso principal ou a vinculação não se aplica ao principal.
- Uma política de limite de acesso de principal não tem regras.
Se uma política de limite de acesso de principal não for aplicada, ela não poderá afetar se o principal pode acessar o recurso.
A resposta também lista todas as vinculações de políticas que incluem o principal e os detalhes da política de limite de acesso de principal em cada uma dessas vinculações de políticas:
-
Para cada vinculação de política de limite de acesso de principal, a resposta mostra se
a vinculação de política é aplicada ao principal e, em seguida, mostra o texto da
vinculação de política. Uma vinculação de política é aplicada se o principal definido na
vinculação incluir o principal consultado e se a condição na
vinculação de política for avaliada como
true
para o principal consultado. Se a vinculação de política não for aplicada, ela não vai afetar a capacidade do principal de acessar o recurso. -
Para cada política de limite de acesso de principal, a resposta mostra o seguinte:
- Se a política permite, não permite ou não é aplicada.
- A versão de aplicação da política. Esse número de versão determina se o IAM aplica essa política de limite de acesso de principal para a permissão consultada. Se a permissão não for aplicada, a política não poderá afetar se o principal pode acessar o recurso.
-
As regras na política de limite de acesso de principal e se cada regra permite o acesso. Para cada regra, a resposta indica se o recurso consultado está incluído na regra.
Um recurso é incluído em uma regra se uma das seguintes condições for verdadeira:
- O recurso está listado na regra. Somente os recursos do Resource Manager (projetos, pastas e organizações) podem ser listados diretamente nas regras de limite de acesso principal.
- Um dos ancestrais do recurso (ou seja, um projeto, pasta ou organização acima do recurso na hierarquia de recursos) é listado na regra.
Muitos objetos na resposta também têm um campo relevance
. O valor nesse
campo indica o quanto esse objeto contribui para o estado de acesso geral.
O campo relevance
pode ter os seguintes valores:
HEURISTIC_RELEVANCE_HIGH
: indica que o objeto tem um grande impacto no resultado. Em outras palavras, a remoção do objeto provavelmente vai mudar o estado de acesso geral. Por exemplo, uma vinculação de função que concede ao principal a permissão especificada teria esse valor de relevância.HEURISTIC_RELEVANCE_NORMAL
: indica que o objeto tem um impacto limitado no resultado. Em outras palavras, é improvável que a remoção do objeto mude o estado de acesso geral. Por exemplo, uma regra de negação que não contém a permissão ou o principal teria esse valor de relevância.
REST
A resposta contém quatro seções principais: o estado de acesso geral, uma descrição da tupla de acesso na solicitação, os resultados da avaliação da política de permissão e os resultados da avaliação da política de negação.
-
overallAccessState
: se o principal pode usar a permissão especificada para acessar o recurso especificado com base nas políticas de permissão, de negação e de limite de acesso de principal relevantes.As políticas de limite de acesso de principal relevantes incluem todas as políticas de limite de acesso de principal que são vinculadas a um conjunto de principais que inclui o principal.
As políticas de permissão e negação relevantes incluem o seguinte:
- A política de permissão do recurso
- As políticas de negação do recurso, se houver
- As políticas de permissão do projeto pai, pasta e organização do recurso, se houver
- As políticas de negação do projeto pai, da pasta e da organização do recurso, se houver
As políticas de permissão e negação de projetos, pastas e organizações mães são relevantes devido à herança de políticas. Quando você anexa uma política de permissão ou negação a um projeto, pasta ou organização, essa política também se aplica a todos os recursos dentro do projeto, da pasta ou da organização.
Por exemplo, se uma política de negação para uma organização disser que um principal não pode usar uma permissão específica, o principal não poderá usar essa permissão para nenhum recurso dentro da organização. Essa regra se aplica mesmo que as pastas e os projetos nessa organização tenham políticas de negação mais permissivas ou permitam políticas que dão ao principal a permissão.
Da mesma forma, se uma política de permissão para um projeto conceder a um principal uma permissão específica, o principal terá essa permissão para qualquer recurso no projeto, desde que essa permissão não seja negada.
Para que um usuário possa usar a permissão para acessar o recurso, todos os tipos de política precisam permitir o acesso. Para mais informações, consulte Avaliação de políticas.
-
accessTuple
: uma descrição da tupla de acesso na solicitação, incluindo qualquer contexto de condição fornecido. Essa seção também contém um resumo das tags que se aplicam ao recurso. -
allowPolicyExplanation
: um resumo de se as políticas de permissão relevantes concedem a permissão ao principal, seguido por uma lista de políticas de permissão e as vinculações de papéis.Para cada política de permissão, a resposta lista todas as vinculações de função na política e as avalia com base nos seguintes critérios:
- Se a vinculação de função inclui a permissão.
- Se a vinculação de função inclui o principal.
- Se as condições na vinculação de função, se houver, são atendidas.
Em seguida, a resposta mostra o texto JSON completo da política de permissão.
-
denyPolicyExplanation
: um resumo de se as políticas de negação relevantes negam a permissão ao principal, seguido de uma lista de recursos com políticas de negação. Para cada recurso, a resposta lista todas as políticas de negação anexadas a ele.Para cada política de negação, a resposta imprime os metadados da política, lista as regras de negação na política e avalia cada regra com base nos seguintes critérios:
- Se a regra de negação inclui a permissão.
- Indica se a permissão está listada como uma exceção na regra de bloqueio.
- Se a regra de negação inclui o principal.
- Se o principal está listado como uma exceção na regra de negação.
- Se as condições na regra de negação, se houver, foram atendidas.
-
pabPolicyExplanation
: um resumo de se as políticas de limite de acesso de principal relevantes permitem que o principal acesse o recurso, seguido pelas vinculações de políticas de limite de acesso de principal e políticas de limite de acesso de principal relevantes.As políticas de limite de acesso principal podem permitir, não permitir ou não ser aplicadas. As políticas de limite de acesso principal não são aplicadas nas seguintes situações:
- O IAM não aplica a permissão especificada na versão de aplicação da política de limite de acesso de principal. Como resultado, a política de limite de acesso principal não pode bloquear o acesso.
- Devido a uma condição na vinculação de política, a política de limite de acesso principal ou a vinculação não se aplica ao principal.
- Uma política de limite de acesso de principal não tem regras.
Se uma política de limite de acesso de principal não for aplicada, ela não poderá afetar se o principal pode acessar o recurso.
A resposta também lista todas as vinculações de políticas que incluem o principal e os detalhes da política de limite de acesso de principal em cada uma dessas vinculações de políticas:
-
Para cada vinculação de política de limite de acesso de principal, a resposta mostra se
a vinculação de política é aplicada ao principal e, em seguida, mostra o texto da
vinculação de política. Uma vinculação de política é aplicada se o principal definido na
vinculação incluir o principal consultado e se a condição na
vinculação de política for avaliada como
true
para o principal consultado. Se a vinculação de política não for aplicada, ela não vai afetar a capacidade do principal de acessar o recurso. -
Para cada política de limite de acesso de principal, a resposta mostra o seguinte:
- Se a política permite, não permite ou não é aplicada.
- A versão de aplicação da política. Esse número de versão determina se o IAM aplica essa política de limite de acesso de principal para a permissão consultada. Se a permissão não for aplicada, a política não poderá afetar se o principal pode acessar o recurso.
-
As regras na política de limite de acesso de principal e se cada regra permite o acesso. Para cada regra, a resposta indica se o recurso consultado está incluído na regra.
Um recurso é incluído em uma regra se uma das seguintes condições for verdadeira:
- O recurso está listado na regra. Somente os recursos do Resource Manager (projetos, pastas e organizações) podem ser listados diretamente nas regras de limite de acesso principal.
- Um dos ancestrais do recurso (ou seja, um projeto, pasta ou organização acima do recurso na hierarquia de recursos) é listado na regra.
Muitos objetos na resposta também têm um campo relevance
. O valor nesse campo indica o quanto esse objeto contribui para o estado de acesso geral.
O campo relevance
pode ter os seguintes valores:
HEURISTIC_RELEVANCE_HIGH
: indica que o objeto tem um grande impacto no resultado. Em outras palavras, a remoção do objeto provavelmente vai mudar o estado de acesso geral. Por exemplo, uma vinculação de função que concede ao principal a permissão especificada teria esse valor de relevância.HEURISTIC_RELEVANCE_NORMAL
: indica que o objeto tem um impacto limitado no resultado. Em outras palavras, é improvável que a remoção do objeto mude o estado de acesso geral. Por exemplo, uma regra de negação que não contém a permissão ou o principal teria esse valor de relevância.
Solução de problemas em vinculações de papéis condicionais
O Solucionador de problemas de políticas resolve automaticamente as vinculações de função condicionais e as regras de negação com base em tags. Ele também resolve automaticamente as vinculações de políticas de limite de acesso principal com condições com base em principais.
Para resolver problemas de outros tipos de vinculações de papel condicionais ou regras de negação condicional, o solucionador de problemas de políticas precisa de mais contexto sobre a solicitação. Por exemplo, para resolver problemas de condições com base em atributos de data/hora, o Solucionador de problemas de políticas precisa da hora da solicitação.
Na CLI gcloud e na API REST, você fornece esse contexto adicional manualmente.
No console do Google Cloud, é possível fornecer esse contexto adicional resolvendo problemas diretamente em qualquer registro de auditoria de atividade do administrador ou registro de auditoria de acesso a dados. Cada entrada de registro de auditoria corresponde a uma solicitação a uma API do Google Cloud ou a uma ação que o Google Cloud realiza em seu nome. Quando você resolve problemas de um registro de auditoria, o solucionador de problemas de políticas recebe automaticamente informações adicionais sobre a solicitação, como a data e a hora, para que o solucionador de problemas de políticas analise as vinculações de papéis condicionais e as regras de negação.
Console
Para resolver problemas de vinculações de papéis condicionais e regras de negação, faça o seguinte:
No console do Google Cloud, acesse a página do Explorador de registros.
Se o título da página for Visualizador de registros legados, clique na lista suspensa Upgrade e selecione Fazer upgrade para o novo Explorador de registros.
Para visualizar somente os registros de auditoria de Atividade do administrador e Acesso a dados, insira a seguinte consulta no criador de consultas e clique em Executar consulta:
logName=("RESOURCE_TYPE/RESOURCE_ID/logs/cloudaudit.googleapis.com%2Factivity" OR "RESOURCE_TYPE/RESOURCE_ID/logs/cloudaudit.googleapis.com%2Fdata_access")
Substitua os seguintes valores:
RESOURCE_TYPE
: o tipo de recurso que está listando os registros de auditoria. Useprojects
,folders
ouorganizations
.RESOURCE_ID
: o ID do recurso.
Localize a entrada de registro de auditoria que corresponde à solicitação que você quer solucionar. Para saber como usar o Explorador de registros para encontrar entradas de registro específicas, consulte Como usar o Explorador de registros.
Na coluna Resumo da entrada de registro, clique em IAM e em Resolver problemas de acesso.
O solucionador de problemas de políticas usa as informações na entrada de registro para resolver problemas de acesso e mostra os resultados. O contexto extra é listado nos detalhes da avaliação em Contexto da condição. Para conferir os detalhes do contexto, clique em Conferir contexto da condição. Para saber mais sobre a página de resultados do solucionador de problemas de políticas, consulte Entender os resultados do solucionador de problemas nesta página.
Opcional: para solucionar problemas de outra solicitação que envolva vinculações de papéis condicionais e regras de negação, retorne à página "Explorador de registros" e repita as etapas anteriores.
gcloud
Para resolver problemas de vinculações de papéis condicionais e regras de negação, use o comando
gcloud policy-troubleshoot iam
.
Antes de usar os dados do comando abaixo, faça estas substituições:
-
EMAIL
: o endereço de e-mail do participante com permissões que você quer resolver. -
RESOURCE
: o recurso em que a permissão é concedida. -
PERMISSION
: a permissão que você quer resolver. -
DESTINATION_IP
: opcional. O endereço IP de destino da solicitação a ser usado ao verificar vinculações de função condicionais. Por exemplo,198.1.1.1
. -
DESTINATION_PORT
: opcional. A porta de destino da solicitação a ser usada ao verificar vinculações de função condicionais. Por exemplo, "8080". -
REQUEST_TIME
: opcional. O carimbo de data/hora da solicitação a ser usado ao verificar vinculações de função condicionais. Use um carimbo de data/hora no formato RFC 3339, por exemplo,2099-02-01T00:00:00Z
. -
RESOURCE_NAME
: opcional. O valor do nome do recurso a ser usado ao verificar vinculações de função condicional. Para conferir uma lista de formatos de nome de recurso aceitos, consulte Formato do nome de recurso. -
RESOURCE_SERVICE
: opcional. O valor do serviço de recurso a ser usado ao verificar vinculações de função condicionais. Para conferir uma lista de nomes de serviços aceitos, consulte Valores de serviço de recursos. -
RESOURCE_TYPE
: opcional. Para conferir uma lista de tipos de recursos aceitos, consulte Valores de tipo de recurso.
Execute o comando gcloud policy-troubleshoot iam:
Linux, macOS ou Cloud Shell
gcloud policy-intelligence troubleshoot-policy iam RESOURCE --principal-email=EMAIL \ --permission=PERMISSION --destination-ip=DESTINATION_IP \ --destination-port=DESTINATION_PORT --request-time=REQUEST_TIME \ --resource-name=RESOURCE_NAME --resource-service=RESOURCE_SERVICE \ --resource-type=RESOURCE_TYPE
Windows (PowerShell)
gcloud policy-intelligence troubleshoot-policy iam RESOURCE --principal-email=EMAIL ` --permission=PERMISSION --destination-ip=DESTINATION_IP ` --destination-port=DESTINATION_PORT --request-time=REQUEST_TIME ` --resource-name=RESOURCE_NAME --resource-service=RESOURCE_SERVICE ` --resource-type=RESOURCE_TYPE
Windows (cmd.exe)
gcloud policy-intelligence troubleshoot-policy iam RESOURCE --principal-email=EMAIL ^ --permission=PERMISSION --destination-ip=DESTINATION_IP ^ --destination-port=DESTINATION_PORT --request-time=REQUEST_TIME ^ --resource-name=RESOURCE_NAME --resource-service=RESOURCE_SERVICE ^ --resource-type=RESOURCE_TYPE
A resposta contém uma explicação sobre o acesso do participante. Para cada regra de negação e vinculação de papéis com uma condição, a resposta inclui um campo conditionExplanation
que descreve se a condição é avaliada como verdadeira ou falsa com base no contexto fornecido.
Por exemplo, a avaliação a seguir é de uma vinculação de função com uma condição que especifica o tipo e o serviço de recurso:
Resposta
... { "allowAccessState": "ALLOW_ACCESS_STATE_GRANTED", "combinedMembership": { "membership": "MEMBERSHIP_MATCHED", "relevance": "HEURISTIC_RELEVANCE_HIGH" }, "condition": { "expression": " resource.type \u003d\u003d \"compute.googleapis.com/Instance\" \u0026\u0026 resource.service \u003d\u003d \"compute.googleapis.com\"", "title": "Compute instances only", "description": "Condition that limits permissions to only Compute instances" }, "conditionExplanation": { "evaluationStates": [{ "end": 51, "start": 1, "value": true }, { "end": 99, "start": 55, "value": true }], "value": true, }, "memberships": { "user:my-user@example.com": { "membership": "MEMBERSHIP_MATCHED", "relevance": "HEURISTIC_RELEVANCE_HIGH" } }, "relevance": "HEURISTIC_RELEVANCE_HIGH", "role": "roles/compute.viewer", "rolePermission": "ROLE_PERMISSION_INCLUDED", "rolePermissionRelevance": "HEURISTIC_RELEVANCE_HIGH" } ...
REST
Para resolver problemas de vinculações de papéis condicionais e regras de negação, use o método
iam.troubleshoot
da API Policy Troubleshooter.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
-
EMAIL
: o endereço de e-mail do participante com permissões que você quer resolver. -
RESOURCE
: o recurso em que a permissão é concedida. -
PERMISSION
: a permissão que você quer resolver. -
DESTINATION_IP
: opcional. O endereço IP de destino da solicitação a ser usado ao verificar vinculações de função condicionais. Por exemplo,198.1.1.1
. -
DESTINATION_PORT
: opcional. A porta de destino da solicitação a ser usada ao verificar vinculações de função condicionais. Por exemplo, "8080". -
REQUEST_TIME
: opcional. O carimbo de data/hora da solicitação a ser usado ao verificar vinculações de função condicionais. Use um carimbo de data/hora no formato RFC 3339, por exemplo,2099-02-01T00:00:00Z
. -
RESOURCE_NAME
: opcional. O valor do nome do recurso a ser usado ao verificar vinculações de função condicionais. Para conferir uma lista de formatos de nome de recurso aceitos, consulte Formato do nome de recurso. -
RESOURCE_SERVICE
: opcional. O valor do serviço de recurso a ser usado ao verificar vinculações de função condicionais. Para conferir uma lista de nomes de serviços aceitos, consulte Valores de serviço de recursos. -
RESOURCE_TYPE
: opcional. Para conferir uma lista de tipos de recursos aceitos, consulte Valores de tipo de recurso.
Método HTTP e URL:
POST https://policytroubleshooter.googleapis.com/v3/iam:troubleshoot
Corpo JSON da solicitação:
{ "accessTuple": { "principal": "EMAIL", "fullResourceName": "RESOURCE", "permission": "PERMISSION", "conditionContext": { "destination": { "ip": DESTINATION_IP, "port": DESTINATION_PORT }, "request": { "receiveTime": REQUEST_TIME }, "resource": { "name": RESOURCE_NAME, "service": RESOURCE_SERVICE, "type": RESOURCE_TYPE } } } }
Para enviar a solicitação, expanda uma destas opções:
A resposta contém uma explicação sobre o acesso do participante. Para cada regra de negação e vinculação de papéis com uma condição, a resposta inclui um campo conditionExplanation
que descreve se a condição é avaliada como verdadeira ou falsa com base no contexto fornecido.
Por exemplo, a seguir está uma avaliação de uma vinculação de função com uma condição que especifica o tipo de recurso e o serviço de recurso:
... { "allowAccessState": "ALLOW_ACCESS_STATE_GRANTED", "role": "roles/compute.viewer", "rolePermission": "ROLE_PERMISSION_INCLUDED", "rolePermissionRelevance": "HEURISTIC_RELEVANCE_HIGH", "combinedMembership": { "membership": "MEMBERSHIP_MATCHED", "relevance": "HEURISTIC_RELEVANCE_HIGH" }, "memberships": { "user:my-user@example.com": { "membership": "MEMBERSHIP_MATCHED", "relevance": "HEURISTIC_RELEVANCE_HIGH" } }, "relevance": "HEURISTIC_RELEVANCE_HIGH", "condition": { "expression": " resource.type \u003d\u003d \"compute.googleapis.com/Instance\" \u0026\u0026 resource.service \u003d\u003d \"compute.googleapis.com\"", "title": "Compute instances only", "description": "Condition that limits permissions to only Compute instances" }, "conditionExplanation": { "value": true, "evaluationStates": [{ "start": 1, "end": 51, "value": true }, { "start": 55, "end": 99, "value": true }] } } ...
A seguir
- Use a referência de permissões ou a referência de papéis predefinidos para determinar qual papel conceder a um usuário que não tem permissões.
- Leia sobre as outras ferramentas do Policy Intelligence, que ajudam a entender e gerenciar suas políticas para melhorar proativamente sua configuração de segurança.