Neste tópico, descrevemos como adicionar, modificar e remover vinculações de papéis condicionais nas políticas de gerenciamento de identidade e acesso (IAM, na sigla em inglês).
Antes de começar
- Leia a Visão geral das condições do IAM para entender os princípios básicos das vinculações de papéis condicionais do IAM.
- Revise a referência sobre atributo para saber mais sobre os diferentes atributos condicionais que podem ser usados em uma expressão.
Como adicionar uma vinculação de papel condicional a uma política
As vinculações de papéis condicionais podem ser adicionadas a políticas novas ou atuais do IAM
para controlar ainda mais o acesso aos recursos do Google Cloud. Esta seção mostra
como adicionar uma condição baseada em tempo a uma
política existente usando o Console do Cloud, a ferramenta de linha de comando gcloud
e a
API REST.
Para adicionar uma vinculação de papel condicional a uma política existente:
Console
No Console do Cloud, acesse a página IAM.
Na lista de membros, localize o membro desejado e clique no botão
.No painel Editar permissões, localize o papel desejado para configurar uma condição. Em seguida, em Condição, clique em Adicionar condição.
No painel Editar condição, insira um título e uma descrição opcional para a condição.
É possível adicionar uma expressão de condição usando o Criador de condições ou o Editor da condição. O criador de condições fornece uma interface interativa para selecionar o tipo de condição desejado, o operador e outros detalhes aplicáveis sobre a expressão. O editor de condições fornece uma interface baseada em texto para inserir manualmente uma expressão usando a sintaxe CEL.
Criador de condições:
- Na lista suspensa Tipo de condição, selecione Acesso expirado.
- Na lista suspensa Operador, selecione até.
- Na lista suspensa Horário, clique no botão para selecionar um intervalo de data e hora.
- Clique em Salvar para aplicar a condição.
- Quando o painel Editar condição for fechado, clique em Salvar novamente no painel Editar permissões para atualizar a política do IAM.
Editor da condição:
Clique na guia Editor de condições e insira a expressão a seguir (substituindo o carimbo de data/hora pelo seu):
request.time < timestamp("2019-12-31T12:00:00.000Z")
Depois de inserir a expressão, será possível validar a sintaxe CEL clicando em Executar linter acima da caixa de texto, na parte superior direita.
Clique em Salvar para aplicar a condição.
Quando o painel Editar condição for fechado, clique em Salvar novamente no painel Editar permissões para atualizar a política do IAM.
gcloud
As políticas do IAM são definidas usando o padrão read-modify-write.
Execute o comando gcloud projects get-iam-policy
para descobrir
a política atual do IAM para o projeto. No exemplo a seguir,
a versão JSON da política é transferida por download para um caminho no disco.
Comando:
gcloud projects get-iam-policy project-id --format json > file-path
É feito o download da política do IAM no formato JSON:
{ "bindings": [ { "members": [ "user:project-owner@example.com" ], "role": "roles/owner" }, { "members": [ "user:travis@example.com" ], "role": "roles/iam.securityReviewer" } ], "etag": "BwWKmjvelug=", "version": 1 }
Observe o version
atual da política, que é 1
. Para configurar a política com acesso expirável, adicione a expressão de condição destacada a seguir (substituindo o carimbo de data/hora pelo seu). A ferramenta
gcloud
atualiza a versão automaticamente:
{ "bindings": [ { "members": [ "user:project-owner@example.com" ], "role": "roles/owner" }, { "members": [ "user:travis@example.com" ], "role": "roles/iam.securityReviewer", "condition": { "title": "Expires_2019", "description": "Expires at noon on 2019-12-31", "expression": "request.time < timestamp('2019-12-31T12:00:00Z')" } } ], "etag": "BwWKmjvelug=", "version": 3 }
Em seguida, execute o comando gcloud projects set-iam-policy
para definir a nova política:
gcloud projects set-iam-policy project-id file-path
A nova política será aplicada, e a vinculação de papel de travis@example.com
expirará no horário determinado.
REST
Use o padrão read-modify-write para permitir o acesso até um momento específico.
Primeiro, leia a política do IAM para o projeto:
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:travis@example.com" ] } ] }
Observe o version
atual da política, que é 1
.
Em seguida, modifique a política para que ela permita o acesso até um horário específico.
Altere o campo version
para o valor
3
:
{ "etag": "BwWKmjvelug=", "version": 3, "bindings": [ { "role": "roles/owner", "members": [ "user:project-owner@example.com" ] }, { "role": "roles/iam.securityReviewer", "condition": { "title": "Expires_2019", "description": "Expires at noon on 2019-12-31", "expression": "request.time < timestamp('2019-12-31T12:00:00Z')" }, "members": [ "user:travis@example.com" ] } ] }
Por fim, grave a política atualizada:
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.
Método HTTP e URL:
POST https://cloudresourcemanager.googleapis.com/v1/projects/project-id:setIamPolicy
Corpo JSON da solicitação:
{ "policy": { "version": 3, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/owner", "members": [ "user:project-owner@example.com" ] }, { "role": "roles/iam.securityReviewer", "members": [ "user:travis@example.com" ], "condition": { "title": "Expires_July_1_2020", "description": "Expires on July 1, 2020", "expression": "request.time < timestamp('2020-07-01T00:00:00.000Z')" } } ] } }
Para enviar a solicitação, expanda uma destas opções:
A resposta contém a política atualizada.
Modificar uma vinculação de papel condicional existente
Depois de criar uma vinculação de papel condicional, é possível alterar a expressão de condição a qualquer momento. Esta seção mostra como atualizar uma condição baseada em tempo em uma política existente usando o Console do Cloud, a ferramenta de linha de comando gcloud
e a API REST.
Para modificar uma vinculação de papel condicional de uma política existente:
Console
No Console do Cloud, acesse a página IAM.
Na lista de membros, localize o membro desejado e clique no botão
.No painel Editar permissões, localize o papel desejado para configurar uma condição. Em seguida, em Condição, clique no nome da condição existente para editá-la.
No painel Editar condição, é possível manter ou atualizar o título e a descrição da condição.
Edite a expressão de condição existente ou adicione uma nova usando o Criador de condições ou o Editor de condições. O criador de condições fornece uma interface interativa para selecionar o tipo de condição desejado, o operador e outros detalhes aplicáveis sobre a expressão. O editor de condições fornece uma interface baseada em texto para inserir manualmente uma expressão usando a sintaxe CEL.
Criador de condições:
- Adicione uma nova expressão de condição ou modifique a expressão de condição existente.
- Clique em Salvar para aplicar a condição.
- Quando o painel Editar condição for fechado, clique em Salvar novamente no painel Editar permissões para atualizar a política do IAM.
Editor da condição:
- Clique na guia Editor de condições e adicione uma nova expressão de condição ou modifique a expressão de condição existente.
- Depois de inserir a expressão, será possível validar a sintaxe CEL clicando em Executar linter acima da caixa de texto, na parte superior direita.
- Clique em Salvar para aplicar a condição.
- Quando o painel Editar condição for fechado, clique em Salvar novamente no painel Editar permissões para atualizar a política do IAM.
gcloud
As políticas do IAM são definidas usando o padrão read-modify-write.
Execute o comando gcloud projects get-iam-policy
para descobrir
a política atual do IAM para o projeto. No exemplo a seguir,
a versão JSON da política é transferida por download para um caminho no disco.
Comando:
gcloud projects get-iam-policy project-id --format json > file-path
É feito o download da política do IAM no formato JSON:
{ "bindings": [ { "members": [ "user:project-owner@example.com" ], "role": "roles/owner" }, { "members": [ "user:fatima@example.com" ], "role": "roles/bigquery.dataViewer", "condition": { "title": "Duration_3_months", "description": "Expires in 3 months on 2019-10-12", "expression": "request.time > timestamp(\"2019-07-12T07:00:00.000Z\") && request.time < timestamp(\"2019-10-12T07:00:00.000Z\")" } } ], "etag": "BwWKmjvelug=", "version": 3 }
Neste exemplo, atualizaremos os valores de title
,
description
e do carimbo de data/hora na expressão para alterar
a duração da condição de acesso programado. Atualize a parte destacada da condição a seguir (substituindo os valores pelos seus):
{ "bindings": [ { "members": [ "user:project-owner@example.com" ], "role": "roles/owner" }, { "members": [ "user:fatima@example.com" ], "role": "roles/bigquery.dataViewer", "condition": { "title": "Duration_5_months", "description": "Expires in 5 months on 2020-01-12", "expression": "request.time > timestamp('2019-07-12T07:00:00.000Z') && request.time < timestamp('2020-01-12T07:00:00.000Z')" } } ], "etag": "BwWKmjvelug=", "version": 3 }
Em seguida, execute o comando gcloud projects set-iam-policy
para definir a nova política:
gcloud projects set-iam-policy project-id file-path
A política atualizada foi aplicada, e a vinculação de papéis de fatima@example.com
expirará no novo horário.
REST
Use o padrão read-mod-write para modificar a vinculação de papel condicional.
Primeiro, leia a política do IAM para o projeto:
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.
Método HTTP e URL:
POST https://cloudresourcemanager.googleapis.com/v1/projects/project-id:getIamPolicy
Corpo JSON da solicitação:
{ "options": { "requestedPolicyVersion": 3 } }
Para enviar a solicitação, expanda uma destas opções:
Você receberá uma resposta JSON semelhante a esta:
{ "etag": "BwWKmjvelug=", "version": 3, "bindings": [ { "role": "roles/owner", "members": [ "user:project-owner@example.com" ] }, { "role": "roles/bigquery.dataViewer", "condition": { "title": "Duration_3_months", "description": "Expires in 3 months on 2019-10-12", "expression": "request.time > timestamp(\"2019-07-12T07:00:00.000Z\") && request.time < timestamp(\"2019-10-12T07:00:00.000Z\")" }, "members": [ "user:fatima@example.com" ] } ] }
Em seguida, modifique a vinculação de papel condicional na política. Neste exemplo, atualizaremos os valores do carimbo de data/hora para alterar a duração da condição de acesso programado. Atualize a parte destacada da expressão de condição a seguir (substituindo o carimbo de data/hora pelo seu):
{ "etag": "BwWKmjvelug=", "version": 3, "bindings": [ { "role": "roles/owner", "members": [ "user:project-owner@example.com" ] }, { "role": "roles/bigquery.dataViewer", "condition": { "title": "Duration_5_months", "description": "Expires in 5 months on 2020-01-12", "expression": "request.time > timestamp('2019-07-12T07:00:00.000Z') && request.time < timestamp('2020-01-12T07:00:00.000Z')" }, "members": [ "user:fatima@example.com" ] } ] }
Por fim, grave a política atualizada:
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.
Método HTTP e URL:
POST https://cloudresourcemanager.googleapis.com/v1/projects/project-id:setIamPolicy
Corpo JSON da solicitação:
{ "policy": { "etag": "BwWKmjvelug=", "version": 3, "bindings": [ { "role": "roles/owner", "members": [ "user:project-owner@example.com" ] }, { "role": "roles/bigquery.dataViewer", "condition": { "title": "Duration_5_months", "description": "Expires in 5 months on 2020-01-12", "expression": "request.time > timestamp('2019-07-12T07:00:00.000Z') && request.time < timestamp('2020-01-12T07:00:00.000Z')" }, "members": [ "user:fatima@example.com" ], } ] } }
Para enviar a solicitação, expanda uma destas opções:
A resposta contém a política atualizada.
Como remover uma vinculação de papel condicional
Quando você remove a vinculação de papel condicional em uma política do
IAM, o acesso ao recurso é restrito apenas à vinculação de papel. Esta seção
mostra como remover uma condição baseada em tempo de uma política
usando o Console do Cloud, a ferramenta de linha de comando gcloud
e a API REST.
Para remover uma condição de uma vinculação de papel em uma política:
Console
No Console do Cloud, acesse a página IAM.
Na lista de membros, localize o membro desejado e clique no botão
.No painel Editar permissões, localize a vinculação de papel desejada. Em seguida, em Condição, clique no nome de uma condição existente.
No painel Editar condição, clique no botão
para remover a condição. Você será solicitado a confirmar a exclusão da condição.Quando o painel Editar condição for fechado, clique em Salvar novamente no painel Editar permissões para atualizar a política do IAM.
gcloud
As políticas do IAM são definidas usando o padrão read-modify-write.
Execute o comando gcloud projects get-iam-policy
para descobrir
a política atual do IAM para o projeto. No exemplo a seguir,
a versão JSON da política é transferida por download para um caminho no disco.
Comando:
gcloud projects get-iam-policy project-id --format json > file-path
É feito o download da política do IAM no formato JSON:
{ "bindings": [ { "members": [ "user:project-owner@example.com" ], "role": "roles/owner" }, { "members": [ "user:fatima@example.com" ], "role": "roles/bigquery.dataViewer", "condition": { "title": "Duration_3_months", "description": "Expires in 3 months on 2019-10-12", "expression": "request.time > timestamp(\"2019-07-12T07:00:00.000Z\") && request.time < timestamp(\"2019-10-12T07:00:00.000Z\")" } } ], "etag": "BwWKmjvelug=", "version": 3 }
Para remover a vinculação de papel condicional da política, remova o bloco condition
,
conforme mostrado abaixo:
{ "bindings": [ { "members": [ "user:project-owner@example.com" ], "role": "roles/owner" }, { "members": [ "user:fatima@example.com" ], "role": "roles/bigquery.dataViewer", } ], "etag": "BwWKmjvelug=", "version": 3 }
Observe que version
ainda está definido como 3
, apesar de as vinculações de papel não condicionais exigirem apenas a versão 1
da política. Recomendamos que você sempre use a versão mais recente da política ao defini-la, tanto para vinculações de papéis condicionais quanto não condicionais. Veja
os requisitos de versão para mais informações. A ferramenta
gcloud
atualiza o número da versão da política automaticamente.
Em seguida, defina a política atualizada executando o comando gcloud projects set-iam-policy
:
gcloud projects set-iam-policy project-id file-path
A política atualizada é aplicada, removendo a vinculação de papel condicional para fatima@example.com
. A vinculação de papéis não expirará mais.
REST
Use o padrão read-modify-write para remover a vinculação de papel condicional.
Primeiro, leia a política do IAM para o projeto:
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.
Método HTTP e URL:
POST https://cloudresourcemanager.googleapis.com/v1/projects/project-id:getIamPolicy
Corpo JSON da solicitação:
{ "options": { "requestedPolicyVersion": 3 } }
Para enviar a solicitação, expanda uma destas opções:
Você receberá uma resposta JSON semelhante a esta:
{ "etag": "BwWKmjvelug=", "version": 3, "bindings": [ { "role": "roles/owner", "members": [ "user:project-owner@example.com" ] }, { "role": "roles/bigquery.dataViewer", "condition": { "title": "Duration_3_months", "description": "Expires in 3 months on 2019-10-12", "expression": "request.time > timestamp(\"2019-07-12T07:00:00.000Z\") && request.time < timestamp(\"2019-10-12T07:00:00.000Z\")" }, "members": [ "user:fatima@example.com" ] } ] }
Em seguida, modifique a política removendo a vinculação de papel condicional:
{ "etag": "BwWKmjvelug=", "version": 3, "bindings": [ { "role": "roles/owner", "members": [ "user:project-owner@example.com" ] }, { "role": "roles/bigquery.dataViewer", "members": [ "user:fatima@example.com" ] } ] }
Observe que version
ainda está definido como 3
, apesar de as vinculações de papel não condicionais exigirem apenas a versão 1
da política. Recomendamos que você sempre use a versão mais recente da política ao defini-la, tanto para vinculações de papéis condicionais quanto não condicionais. Veja
os requisitos de versão para mais informações.
Por fim, grave a política atualizada:
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.
Método HTTP e URL:
POST https://cloudresourcemanager.googleapis.com/v1/projects/project-id:setIamPolicy
Corpo JSON da solicitação:
{ "policy": { "etag": "BwWKmjvelug=", "version": 3, "bindings": [ { "role": "roles/owner", "members": [ "user:project-owner@example.com" ] }, { "role": "roles/bigquery.dataViewer", "members": [ "user:fatima@example.com" ] } ] } }
Para enviar a solicitação, expanda uma destas opções:
A resposta contém a política atualizada.