A maioria dos recursos do Google Cloud expõe o método testIamPermissions(), que
permite verificar programaticamente se o autor da chamada
autenticado recebeu uma ou mais permissões específicas do IAM no
recurso. O método testIamPermissions() usa um identificador de recurso e um
conjunto de permissões como parâmetros de entrada e retorna o conjunto de permissões concedido ao autor da chamada.
É possível usar o método testIamPermissions() para determinar se um usuário deve ter acesso a uma ferramenta administrativa em um aplicativo da Web. Por exemplo, é possível usar esse método para decidir, com base nas permissões do usuário, se serão exibidas informações detalhadas sobre um recurso do Google Cloud .
Por exemplo, para determinar se o usuário atualmente autenticado tem permissão para excluir um projeto, chame o projects.testIamPermissions() usando o ID do projeto, como foo-project, e a permissão resourcemanager.projects.delete como parâmetros de entrada. Se o autor da chamada tiver recebido a permissão resourcemanager.projects.delete, ele será listado no corpo da resposta. Se o autor da chamada não tiver essa permissão, o corpo da resposta não listará nenhuma permissão.
O método testIamPermissions() destina-se a interfaces gráficas do usuário (GUIs) de terceiros que precisam exibir recursos Google Cloud com base no que o usuário autenticado tem permissão para ver. Por exemplo, o
consoleGoogle Cloud usa internamente o método testIamPermissions() para
determinar quais recursos e funcionalidades ficam visíveis para você após
a autenticação. Normalmente, usuários diferentes recebem permissões distintas,
e o console Google Cloud oculta ou expõe os itens adequadamente.
Antes de começar
Ative a API Resource Manager.
Funções necessárias para ativar APIs
Para ativar as APIs, é necessário ter o papel do IAM de administrador de uso do serviço (
roles/serviceusage.serviceUsageAdmin), que contém a permissãoserviceusage.services.enable. Saiba como conceder papéis.Configure a autenticação.
Selecione a guia para como planeja usar as amostras nesta página:
C#
Para usar os exemplos do .NET nesta página em um ambiente de desenvolvimento local, instale e inicialize a CLI gcloud e configure o Application Default Credentials com suas credenciais de usuário.
-
Instale a CLI do Google Cloud.
-
Ao usar um provedor de identidade (IdP) externo, primeiro faça login na gcloud CLI com sua identidade federada.
-
Se você estiver usando um shell local, crie credenciais de autenticação local para sua conta de usuário:
gcloud auth application-default login
Não é necessário fazer isso se você estiver usando o Cloud Shell.
Se um erro de autenticação for retornado e você estiver usando um provedor de identidade (IdP) externo, confirme se você fez login na CLI gcloud com sua identidade federada.
Para mais informações, consulte Configurar o ADC para um ambiente de desenvolvimento local na documentação de autenticação do Google Cloud .
C++
Para usar os exemplos de C++ nesta página em um ambiente de desenvolvimento local, instale e inicialize a CLI gcloud e configure o Application Default Credentials com suas credenciais de usuário.
-
Instale a CLI do Google Cloud.
-
Ao usar um provedor de identidade (IdP) externo, primeiro faça login na gcloud CLI com sua identidade federada.
-
Se você estiver usando um shell local, crie credenciais de autenticação local para sua conta de usuário:
gcloud auth application-default login
Não é necessário fazer isso se você estiver usando o Cloud Shell.
Se um erro de autenticação for retornado e você estiver usando um provedor de identidade (IdP) externo, confirme se você fez login na CLI gcloud com sua identidade federada.
Para mais informações, consulte Configurar o ADC para um ambiente de desenvolvimento local na documentação de autenticação do Google Cloud .
Java
Para usar os exemplos do Java nesta página em um ambiente de desenvolvimento local, instale e inicialize a CLI gcloud e configure o Application Default Credentials com suas credenciais de usuário.
-
Instale a CLI do Google Cloud.
-
Ao usar um provedor de identidade (IdP) externo, primeiro faça login na gcloud CLI com sua identidade federada.
-
Se você estiver usando um shell local, crie credenciais de autenticação local para sua conta de usuário:
gcloud auth application-default login
Não é necessário fazer isso se você estiver usando o Cloud Shell.
Se um erro de autenticação for retornado e você estiver usando um provedor de identidade (IdP) externo, confirme se você fez login na CLI gcloud com sua identidade federada.
Para mais informações, consulte Configurar o ADC para um ambiente de desenvolvimento local na documentação de autenticação do Google Cloud .
Python
Para usar os exemplos do Python nesta página em um ambiente de desenvolvimento local, instale e inicialize a CLI gcloud e configure o Application Default Credentials com suas credenciais de usuário.
-
Instale a CLI do Google Cloud.
-
Ao usar um provedor de identidade (IdP) externo, primeiro faça login na gcloud CLI com sua identidade federada.
-
Se você estiver usando um shell local, crie credenciais de autenticação local para sua conta de usuário:
gcloud auth application-default login
Não é necessário fazer isso se você estiver usando o Cloud Shell.
Se um erro de autenticação for retornado e você estiver usando um provedor de identidade (IdP) externo, confirme se você fez login na CLI gcloud com sua identidade federada.
Para mais informações, consulte Configurar o ADC para um ambiente de desenvolvimento local na documentação de autenticação do Google Cloud .
REST
Para usar as amostras da API REST desta página em um ambiente de desenvolvimento local, use as credenciais fornecidas para gcloud CLI.
Instale a CLI do Google Cloud.
Ao usar um provedor de identidade (IdP) externo, primeiro faça login na gcloud CLI com sua identidade federada.
Saiba mais em Autenticar para usar REST na documentação de autenticação do Google Cloud .
-
Funções exigidas
Nenhum papel do IAM é necessário para testar as permissões.
Como testar permissões
Este exemplo mostra como testar as permissões resourcemanager.projects.get e
resourcemanager.projects.delete para um
projetoGoogle Cloud . Para
testar as permissões de outros Google Cloud recursos, use o
método testIamPermissions() exposto por cada recurso. Por exemplo, é possível
testar as permissões do IAM para um
bucket do Cloud Storage.
C++
Para saber como instalar e usar a biblioteca de cliente do IAM, consulte Bibliotecas de cliente do IAM. Para mais informações, consulte a documentação de referência da API C++ do IAM.
Para autenticar no IAM, configure o Application Default Credentials. Para mais informações, consulte Antes de começar.
C#
Para autenticar no Resource Manager, configure o Application Default Credentials. Para mais informações, consulte Antes de começar.
Para saber como instalar e usar a biblioteca de cliente do Resource Manager, consulte Bibliotecas de cliente do Resource Manager.
O IAM testa as permissões da conta de serviço que você está usando para gerar credenciais.
Java
Para autenticar no Resource Manager, configure o Application Default Credentials. Para mais informações, consulte Antes de começar.
Para saber como instalar e usar a biblioteca de cliente do Resource Manager, consulte Bibliotecas de cliente do Resource Manager.
O IAM testa as permissões da conta de serviço que você está usando para gerar credenciais.
Python
Para autenticar no Resource Manager, configure o Application Default Credentials. Para mais informações, consulte Antes de começar.
Para saber como instalar e usar a biblioteca de cliente do Resource Manager, consulte Bibliotecas de cliente do Resource Manager.
O IAM testa as permissões da conta de serviço que você está usando para gerar credenciais.
REST
Neste exemplo, o usuário tem um papel do IAM que permite receber informações sobre um projeto, mas não excluir projetos.
O método
projects.testIamPermissions
da API Resource Manager aceita uma lista de permissões e testa qual permissão um principal tem.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
PROJECT_ID: o ID do projeto do Google Cloud . Os IDs do projeto são strings alfanuméricas, comomy-project.
Método HTTP e URL:
POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:testIamPermissions
Corpo JSON da solicitação:
{
"permissions": [
"resourcemanager.projects.get",
"resourcemanager.projects.delete"
]
}
Para enviar a solicitação, expanda uma destas opções:
Você receberá uma resposta JSON semelhante a esta:
{
"permissions": [
"resourcemanager.projects.get"
]
}
A seguir
Saiba como conceder, alterar e revogar acesso a principais.