Nesta página, descreveremos como conceder, alterar e revogar acesso a um recurso. É possível conceder diferentes níveis de acesso a recursos que você possui para diferentes usuários usando papéis de IAM refinados.
Gerencie papéis de usuários com o Console do Cloud, a ferramenta de linha de comando
gcloud
, a API REST ou as bibliotecas de cliente. Usar o Console do Cloud é o método mais fácil e o abordado na primeira metade deste artigo, assim como a execução de atualizações rápidas usando a ferramenta de linha de comando gcloud
.
A utilização de métodos programáticos para cenários mais complexos é abordada na segunda metade.
Se você quiser usar o IAM com o Identity-Aware Proxy (IAP) para proteger o acesso aos seus aplicativos, consulte a documentação do IAP.
Antes de começar
- Conheça ospapéis do IAM disponíveis.
Permissões necessárias
Para gerenciar o acesso a um projeto, é preciso ter um papel que inclua as seguintes permissões:
resourcemanager.projects.get
resourcemanager.projects.getIamPolicy
resourcemanager.projects.setIamPolicy
Para ter essas permissões seguindo o princípio do privilégio mínimo, peça ao administrador para conceder a você um dos seguintes papéis:
- Administrador de IAM do projeto (
roles/resourcemanager.projectIamAdmin
) - Administrador de segurança (
roles/iam.securityAdmin
)
Como alternativa, o administrador pode conceder a você um papel diferente que inclua as permissões necessárias, como um papel personalizado ou um papel predefinido mais permissivo.
Como usar o Console do Cloud
Usar o Console do Cloud é uma maneira rápida e fácil de gerenciar os papéis dos membros. Os membros do IAM incluem usuários, contas de serviço, Grupos do Google e domínios.
Como visualizar o acesso atual
Para ver quais papéis do IAM seus membros têm para um projeto e seus recursos, faça o seguinte:
No Console do Cloud, acesse a página IAM.
A página mostra todos os membros do seu projeto que têm papéis do IAM.
Opcional. Para visualizar as concessões de papel para contas de serviço gerenciadas pelo Google, selecione Incluir concessões de papéis fornecidos pelo Google.
Conceder acesso
Para conceder um papel do IAM a um membro em um projeto, faça o seguinte:
No Console do Cloud, acesse a página IAM.
Clique em Adicionar.
Insira um endereço de e-mail. Adicione pessoas, contas de serviço ou Grupos do Google, mas cada projeto precisa ter pelo menos um indivíduo como membro.
Selecione um papel. Os papéis dão aos membros o nível apropriado de permissão. Como prática recomendada de segurança, conceda ao membro o mínimo de privilégio necessário. Os membros com permissões no nível Proprietário também são proprietários do projeto e podem gerenciar todos os aspectos dele, inclusive desativá-lo.
Clique em Salvar.
Para conceder um papel a um membro a mais de um projeto, siga estas etapas:
No Console do Cloud, acesse a página Gerenciar recursos:
Selecione todos os projetos para os quais você quer conceder permissões.
Clique em Mostrar painel de informações, seguido da guia Permissões.
Digite um endereço de e-mail no campo Novos membros e selecione a função desejada no menu suspenso.
Clique em Salvar. O membro recebe o papel escolhido em cada um dos projetos selecionados.
Como revogar o acesso
No Console do Cloud, acesse a página IAM.
Localize o membro para quem você quer revogar o acesso e clique no botão Editar
à direita.Clique no botão Excluir
de cada papel a ser revogado e, em seguida, clique em Salvar.
Como modificar o acesso
Não há procedimento especial para modificar o acesso. Siga as etapas para concedê-lo e revogá-lo até que o membro tenha os papéis que você quer.
Como usar a gcloud para atualizações rápidas
É possível adicionar ou revogar um único papel usando os comandos add-iam-policy-binding
e remove-iam-policy-binding
da ferramenta de linha de comando gcloud
.
Conceder acesso
Para conceder um papel a um membro rapidamente, execute o comando add-iam-policy-binding
da
ferramenta gcloud
:
gcloud group add-iam-policy-binding resource \ --member=member --role=role-id
Forneça os valores a seguir:
group
: o grupo de ferramentasgcloud
do recurso que você quer atualizar. Por exemplo, é possível usarprojects
ouorganizations
.resource
: o nome do recurso.member
: um identificador para o membro, que geralmente tem o formatomember-type:id
. Por exemplo,user:my-user@example.com
. Para ver uma lista completa dos valores quemember
pode ter, consulte a referência de vinculação de políticas.role-id
: o nome do papel.
Por exemplo, para conceder o papel Leitor ao usuário my-user@example.com
do projeto my-project
:
gcloud projects add-iam-policy-binding my-project \ --member=user:my-user@example.com --role=roles/viewer
Como revogar o acesso
Para revogar rapidamente o papel de um usuário, execute o comando remove-iam-policy-binding
da
ferramenta gcloud
:
gcloud group remove-iam-policy-binding resource \ --member=member --role=role-id
Forneça os valores a seguir:
group
: o grupo de ferramentasgcloud
do recurso que você quer atualizar. Por exemplo, é possível usarprojects
ouorganizations
.resource
: o nome do recurso.member
: um identificador para o membro, que geralmente tem o formatomember-type:id
. Por exemplo,user:my-user@example.com
. Para ver uma lista completa dos valores quemember
pode ter, consulte a referência de vinculação de políticas.role-id
: o nome do papel.
Por exemplo, para revogar o papel Leitor do usuário my-user@example.com
do projeto my-project
:
gcloud projects remove-iam-policy-binding my-project \ --member=user:my-user@example.com --role=roles/viewer
Como controlar o acesso de maneira programática
Em alguns casos de uso, é mais fácil gerenciar o controle de acesso de maneira programática. Use
a ferramenta de linha de comando gcloud
, a
API REST ou as
bibliotecas de cliente para controlar o acesso
de maneira programática. Os métodos programáticos são úteis para fazer atualizações automáticas ou
em grande escala, que podem ter execução demorada no
Console do Cloud, ou para executar comandos gcloud
para cada membro.
Visão geral da política do IAM
O acesso a um recurso é gerenciado por meio de uma política do IAM. Uma política é um conjunto de vinculações que associam um membro, como uma conta de usuário ou conta de serviço, a um papel. As políticas são representadas com JSON ou YAML.
O exemplo a seguir mostra uma política em que fatima@example.com
recebeu o papel de Proprietário e wei@example.com
e service-account-13@appspot.gserviceaccount.com
receberam o papel de Editor:
{
"bindings": [
{
"role": "roles/owner",
"members": [
"user:fatima@example.com"
]
},
{
"role": "roles/editor",
"members": [
"serviceAccount:service-account-13@appspot.gserviceaccount.com",
"user:wei@example.com"
]
}
],
"etag": "BwUjMhCsNvY=",
"version": 1
}
Você atualiza uma política para um recurso usando o padrão read-modify-write. Isso significa que não há métodos distintos para criar, modificar ou revogar o acesso do usuário. Em vez disso, todas as modificações são feitas por meio da:
- leitura da política atual chamando
getIamPolicy()
; - edição da política retornada, com um editor de texto ou de maneira programática, para adicionar ou remover qualquer membro e as concessões de papel dele;
- gravação da política atualizada chamando
setIamPolicy()
.
É comum conceder permissões para um projeto ou organização inteira. No entanto, também é possível definir políticas em um nível mais granular em uma ampla gama de recursos do Google Cloud, como instâncias do Compute Engine ou buckets do Cloud Storage. Para ver o nível de recurso mais baixo em que seja possível conceder cada papel e uma lista completa desses papéis, consulte Noções básicas sobre papéis.
Como conseguir a política atual
gcloud
Execute o comando get-iam-policy
para o recurso. O exemplo a seguir
mostra o
comando get-iam-policy
para projetos:
gcloud projects get-iam-policy project-id --format=format > filepath
Forneça os valores a seguir:
project-id
: o projeto que você está atualizando (por exemplo,my-project
).format
: o valorjson
ouyaml
.filepath
: o caminho para um novo arquivo de saída para a política.
Por exemplo, o comando a seguir recebe a política do projeto my-project
no formato JSON e a salva no diretório inicial do usuário:
gcloud projects get-iam-policy my-project --format json > ~/policy.json
REST
O método projects.getIamPolicy
da API Resource Manager recebe a política do IAM de um projeto.
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.policy-version
: a versão da política a ser retornada. As solicitações precisam especificar a versão mais recente da política, que é a versão 3 da política. Para saber mais detalhes, consulte Como especificar uma versão da política ao receber uma política.
Método HTTP e URL:
POST https://cloudresourcemanager.googleapis.com/v1/projects/project-id:getIamPolicy
Corpo JSON da solicitação:
{ "options": { "requestedPolicyVersion": policy-version } }
Para enviar a solicitação, expanda uma destas opções:
Você receberá uma resposta JSON semelhante a esta:
{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/owner", "members": [ "user:project-owner@example.com" ] }, { "role": "roles/iam.securityReviewer", "members": [ "user:fatima@example.com" ] } ] }
C#
Antes de testar este exemplo, siga as instruções de configuração do C# no Guia de início rápido do IAM: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API IAM para C#.
Java
Antes de testar este exemplo, siga as instruções de configuração do Java no Guia de início rápido do IAM: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API IAM para Java.
Python
Antes de testar este exemplo, siga as instruções de configuração do Python no Guia de início rápido do IAM: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API IAM para Python.
Como modificar uma política
Modifique a cópia local da política do projeto de maneira programática ou com um editor de texto a fim de refletir os papéis que você quer conceder ou revogar em relação a determinados usuários.
Como conceder um papel
Para conceder papéis aos membros, modifique as vinculações de papéis na política. Para saber quais papéis é possível conceder, consulte Noções básicas sobre papéis.
Para conceder um papel que já está incluído na política:
gcloud
Conceda um papel editando a política JSON ou YAML retornada pelo comando get-iam-policy
. Essa alteração de política só entrará em vigor
quando você definir a política atualizada.
O exemplo a seguir concede o papel Revisor de segurança
(roles/iam.securityReviewer
) a wei@example.com
.
Para conceder esse papel, anexe o usuário à matriz members
da vinculação:
{
"role": "roles/iam.securityReviewer",
"members": [
"user:fatima@example.com",
"user:wei@example.com"
]
}
REST
Conceda um papel editando a política JSON ou YAML retornada pelo comando get-iam-policy
. Essa alteração de política só entrará em vigor
quando você definir a política atualizada.
O exemplo a seguir concede o papel Revisor de segurança
(roles/iam.securityReviewer
) a wei@example.com
. Para conceder esse papel, anexe o usuário à matriz members
da vinculação:
{
"role": "roles/iam.securityReviewer",
"members": [
"user:fatima@example.com",
"user:wei@example.com"
]
}
C#
Antes de testar este exemplo, siga as instruções de configuração do C# no Guia de início rápido do IAM: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API IAM para C#.
Java
Antes de testar este exemplo, siga as instruções de configuração do Java no Guia de início rápido do IAM: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API IAM para Java.
Python
Antes de testar este exemplo, siga as instruções de configuração do Python no Guia de início rápido do IAM: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API IAM para Python.
Para conceder um papel que ainda não está incluído na política, adicione uma nova binding
.
gcloud
Adicione uma nova vinculação editando a política JSON ou YAML retornada pelo comando get-iam-policy
. Essa alteração de política só entrará em vigor quando você definir a política atualizada.
O exemplo a seguir concede o papel Leitor a fatima@example.com
. Para conceder esse papel, adicione uma nova vinculação à matriz bindings
da política:
{
"role": "roles/reader",
"members": [
"user:fatima@example.com"
]
}
REST
Adicione uma nova vinculação editando a política JSON ou YAML retornada pelo comando get-iam-policy
. Essa alteração de política só entrará em vigor quando você definir a política atualizada.
O exemplo a seguir concede o papel Leitor a fatima@example.com
. Para conceder esse papel, adicione uma nova vinculação à matriz bindings
da política:
{
"role": "roles/reader",
"members": [
"user:fatima@example.com"
]
}
C#
Antes de testar este exemplo, siga as instruções de configuração do C# no Guia de início rápido do IAM: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API IAM para C#.
Java
Antes de testar este exemplo, siga as instruções de configuração do Java no Guia de início rápido do IAM: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API IAM para Java.
Python
Antes de testar este exemplo, siga as instruções de configuração do Python no Guia de início rápido do IAM: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API IAM para Python.
Você só pode conceder papéis relacionados a serviços de API ativados. Se um serviço, como o Compute Engine, não estiver ativo, você não poderá atribuir papéis exclusivamente relacionados ao Compute Engine. Para mais informações, consulte Ativar e desativar APIs.
Há algumas restrições exclusivas ao conceder permissões em projetos, especialmente o papel Proprietário. Consulte a documentação de referência de projects.setIamPolicy()
para mais informações.
Como revogar um papel
Para revogar um papel:
gcloud
Revogue um papel editando a política JSON ou YAML retornada pelo comando get-iam-policy
. Essa alteração de política só entrará em vigor quando você definir a política atualizada.
Para revogar um papel de um membro, exclua os membros ou as vinculações da matriz bindings
da política.
REST
Revogue um papel editando a política JSON ou YAML retornada pelo comando get-iam-policy
. Essa alteração de política só entrará em vigor quando você definir a política atualizada.
Para revogar um papel de um membro, exclua os membros ou as vinculações da matriz bindings
da política.
C#
Antes de testar este exemplo, siga as instruções de configuração do C# no Guia de início rápido do IAM: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API IAM para C#.
Java
Antes de testar este exemplo, siga as instruções de configuração do Java no Guia de início rápido do IAM: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API IAM para Java.
Python
Antes de testar este exemplo, siga as instruções de configuração do Python no Guia de início rápido do IAM: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API IAM para Python.
Como definir uma política
Depois de modificar a política para conceder os papéis desejados, chame
setIamPolicy()
para fazer as atualizações.
gcloud
Use o comando set-iam-policy
e forneça um caminho para o arquivo JSON que
contém a política atualizada: O exemplo a seguir mostra o
comando set-iam-policy
para projetos:
gcloud projects set-iam-policy project-id filepath
Forneça os valores a seguir:
project-id
: o projeto que você está atualizando (por exemplo,my-project
).filepath
: o caminho para um arquivo que contém a nova política.
A resposta contém a política atualizada.
REST
O método projects.setIamPolicy
da API Resource Manager define a política na solicitação como a nova política do IAM do projeto.
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.policy
: uma representação JSON da política que você quer definir. Para mais informações sobre o formato de uma política, consulte a referência da política.
Método HTTP e URL:
POST https://cloudresourcemanager.googleapis.com/v1/projects/project-id:setIamPolicy
Corpo JSON da solicitação:
{ "policy": { policy } }
Para enviar a solicitação, expanda uma destas opções:
A resposta contém a política atualizada.
C#
Java
Antes de testar este exemplo, siga as instruções de configuração do Java no Guia de início rápido do IAM: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API IAM para Java.
Python
Antes de testar este exemplo, siga as instruções de configuração do Python no Guia de início rápido do IAM: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API IAM para Python.
Para evitar conflitos se várias fontes tentarem atualizar a política simultaneamente,
a política conterá um valor etag
. Quando você chama setIamPolicy()
,
o IAM compara o valor etag
na solicitação com o
etag
atual e grava a política somente se os valores corresponderem.
A seguir
- Aprenda a gerenciar o acesso às pastas.
- Aprenda a gerenciar o acesso a organizações.
- Conheça ospapéis do IAM disponíveis.
- Use o Solucionador de problemas de políticas para entender por que um usuário tem ou não acesso a um recurso ou permissão para chamar uma API.
- Descubra como visualizar os papéis que podem ser atribuídos em um recurso específico.
- Aprenda a tornar o acesso de um membro condicional com as vinculações de papéis condicionais.
- Explore maneiras de proteger seus aplicativos com o Identity-Aware Proxy.
Faça um teste
Se você começou a usar o Google Cloud agora, crie uma conta para avaliar o desempenho dos nossos produtos em situações reais. Clientes novos também ganham US$ 300 em créditos para executar, testar e implantar cargas de trabalho.
Comece gratuitamente