Este tópico descreve como definir o acesso temporário (com prazo) aos Google Cloud recursos através de associações de funções condicionais nas suas políticas de autorização. Ao usar os atributos de data/hora, pode aplicar controlos baseados no tempo quando acede a um determinado recurso. Por exemplo, pode conceder acesso temporário a um projeto que começa e termina a uma hora especificada ou de forma agendada e recorrente.
Antes de começar
- Leia a vista geral das condições para compreender os básicos das associações de funções condicionais da gestão de identidade e de acesso (IAM).
- Reveja os atributos de data/hora que podem ser usados numa expressão de condição. Os atributos de data/hora são reconhecidos por todos os serviços Google Cloud .
Funções necessárias
Para receber as autorizações de que precisa para gerir as associações de funções condicionais, peça ao seu administrador que lhe conceda as seguintes funções do IAM:
-
Para gerir o acesso a projetos:
Administrador de IAM do projeto (
roles/resourcemanager.projectIamAdmin
) no projeto -
Para gerir o acesso a pastas:
Administrador da pasta (
roles/resourcemanager.folderAdmin
) na pasta -
Para gerir o acesso a projetos, pastas e organizações:
Administrador da organização (
roles/resourcemanager.organizationAdmin
) na organização -
Para gerir o acesso a quase todos os Google Cloud recursos:
Administrador de segurança (
roles/iam.securityAdmin
) no projeto, na pasta ou na organização cujos recursos quer gerir o acesso
Para mais informações sobre a atribuição de funções, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.
Estas funções predefinidas contêm as autorizações necessárias para gerir associações de funções condicionais. Para ver as autorizações exatas que são necessárias, expanda a secção Autorizações necessárias:
Autorizações necessárias
As seguintes autorizações são necessárias para gerir associações de funções condicionais:
-
Para gerir o acesso a projetos:
-
resourcemanager.projects.getIamPolicy
no projeto -
resourcemanager.projects.setIamPolicy
no projeto
-
-
Para gerir o acesso a pastas:
-
resourcemanager.folders.getIamPolicy
na pasta -
resourcemanager.folders.setIamPolicy
na pasta
-
-
Para gerir o acesso a organizações:
-
resourcemanager.organizations.getIamPolicy
na organização -
resourcemanager.organizations.setIamPolicy
na organização
-
Também pode conseguir estas autorizações com funções personalizadas ou outras funções predefinidas.
Conceda acesso temporário
Uma associação de funções condicional pode ser usada para conceder acesso limitado no tempo a um recurso, garantindo que um utilizador deixa de poder aceder ao recurso após a data e hora de validade especificadas.
Considere o seguinte cenário: as regras de segurança das informações da empresa ExampleCo enfatizam que nenhum funcionário deve ter acesso indefinido a recursos em projetos de produção. Anteriormente, os administradores definiram e eliminaram manualmente as associações de funções da IAM para satisfazer as necessidades de emergência dos engenheiros. Para reduzir os custos administrativos, a ExampleCo pode, em alternativa, configurar uma associação de funções condicional com uma condição de data/hora para definir uma data de fim para a associação.
Para conceder acesso com prazo de validade a um recurso do projeto:
Consola
Na Google Cloud consola, aceda à página IAM.
Na lista de diretores, localize o diretor pretendido e clique no botão
.No painel Editar autorizações, localize a função pretendida para configurar uma condição. Em seguida, em Condição do IAM (opcional), clique em Adicionar condição do IAM.
No painel Editar condição, introduza um título e uma descrição opcional para a condição.
Pode adicionar uma expressão de condição através do criador de condições ou do editor de condições. O criador de condições oferece uma interface interativa para selecionar o tipo de condição, o operador e outros detalhes aplicáveis desejados acerca da expressão. O editor de condições oferece uma interface baseada em texto para introduzir manualmente uma expressão através da sintaxe CEL.
Construtor de condições:
- No menu pendente Tipo de condição, selecione Acesso com prazo.
- No menu pendente Operador, selecione por.
- No menu pendente Hora, clique no botão para selecionar um intervalo de datas e horas.
- Clique em Guardar para aplicar a condição.
- Depois de fechar o painel Editar condição, clique novamente em Guardar no painel Editar autorizações para atualizar a sua política de autorização.
Editor de condições:
Clique no separador Editor de condições e introduza a seguinte expressão (substituindo a indicação de tempo pela sua):
request.time < timestamp("2020-07-01T00:00:00.000Z")
Depois de introduzir a expressão, pode optar por validar a sintaxe CEL clicando em Executar Linter acima da caixa de texto na parte superior direita.
Clique em Guardar para aplicar a condição.
Depois de fechar o painel Editar condição, clique novamente em Guardar no painel Editar autorizações para atualizar a sua política de autorização.
gcloud
As políticas de permissão são definidas através do padrão read-modify-write.
Execute o comando
gcloud projects get-iam-policy
para obter a política de autorização atual do projeto. No exemplo
seguinte, a versão JSON da política de permissão é transferida para um caminho no disco.
Comando:
gcloud projects get-iam-policy project-id --format=json > filepath
O formato JSON da política de autorização é transferido:
{
"bindings": [
{
"members": [
"user:my-user@example.com"
],
"role": "roles/owner"
},
{
"members": [
"group:my-group@example.com"
],
"role": "roles/iam.securityReviewer"
}
],
"etag": "BwWKmjvelug=",
"version": 1
}
Para configurar a política de permissão com acesso expirável, adicione a seguinte expressão de condição realçada (substituindo a data/hora pela sua). A CLI gcloud atualiza a versão automaticamente:
{
"bindings": [
{
"members": [
"user:my-user@example.com"
],
"role": "roles/owner"
},
{
"members": [
"group:my-group@example.com"
],
"role": "roles/iam.securityReviewer",
"condition": {
"title": "Expires_July_1_2020",
"description": "Expires on July 1, 2020",
"expression":
"request.time < timestamp('2020-07-01T00:00:00.000Z')"
}
}
],
"etag": "BwWKmjvelug=",
"version": 3
}
Em seguida, defina a nova política de permissão executando o comando
gcloud projects set-iam-policy
:
gcloud projects set-iam-policy project-id filepath
A nova política de autorização é aplicada e a concessão de funções do grupo expira à hora especificada.
REST
Use o padrão read-modify-write para permitir o acesso até uma hora específica.
Primeiro, leia a política de permissão para o projeto:
O método
projects.getIamPolicy
da API Resource Manager obtém a política de autorização de um projeto.
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
PROJECT_ID
: O ID do seu Google Cloud projeto. Os IDs dos projetos são strings alfanuméricas, comomy-project
.POLICY_VERSION
: a versão da política a ser devolvida. Os pedidos devem especificar a versão da política mais recente, que é a versão 3 da política. Consulte o artigo Especificar uma versão da política ao obter uma política para ver detalhes.
Método HTTP e URL:
POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:getIamPolicy
Corpo JSON do pedido:
{ "options": { "requestedPolicyVersion": POLICY_VERSION } }
Para enviar o seu pedido, expanda uma destas opções:
Deve receber uma resposta JSON semelhante à seguinte:
{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/owner", "members": [ "user:my-user@example.com" ] }, { "role": "roles/iam.securityReviewer", "members": [ "group:my-group@example.com" ] } ] }
Em seguida, modifique a política de permissão para que permita o acesso até uma hora específica. Certifique-se de que altera o campo version
para o valor
3
:
{
"version": 3,
"etag": "BwWKmjvelug=",
"bindings": [
{
"role": "roles/owner",
"members": [
"user:my-user@example.com"
]
},
{
"role": "roles/iam.securityReviewer",
"members": [
"group:my-group@example.com"
],
"condition": {
"title": "Expires_July_1_2020",
"description": "Expires on July 1, 2020",
"expression":
"request.time < timestamp('2020-07-01T00:00:00.000Z')"
}
}
]
}
Por último, escreva a política de permissão atualizada:
O método projects.setIamPolicy
da API Resource Manager define a política de autorização no pedido como a nova política de autorização do projeto.
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
PROJECT_ID
: O ID do seu Google Cloud projeto. Os IDs dos projetos são strings alfanuméricas, comomy-project
.
Método HTTP e URL:
POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:setIamPolicy
Corpo JSON do pedido:
{ "policy": { "version": 3, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/owner", "members": [ "user:my-user@example.com" ] }, { "role": "roles/iam.securityReviewer", "members": [ "group:my-group@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 o seu pedido, expanda uma destas opções:
A resposta contém a política de permissão atualizada.
Faça a gestão do acesso com base nos dias/horas da semana
Uma associação de funções condicional pode ser usada para conceder acesso a um recurso apenas em determinados dias ou horas da semana de forma recorrente.
Considere o seguinte cenário: a empresa ExampleCo tem um projeto de garantia de qualidade. Toda a equipa de controlo de qualidade tem de ter funções com privilégios elevados para concluir o seu trabalho. A ExampleCo tem de cumprir as leis laborais na sua localização, que limitam o horário de trabalho de segunda a sexta-feira, das 09:00 às 17:00. A ExampleCo pode usar condições de data/hora para garantir que os respetivos funcionários só podem aceder aoGoogle Cloud durante a semana de trabalho e o horário de trabalho agendado.
Para conceder acesso a um recurso de projeto apenas em determinados dias ou horas da semana de forma recorrente:
Consola
Na Google Cloud consola, aceda à página IAM.
Na lista de diretores, localize o diretor pretendido e clique no botão
.No painel Editar autorizações, localize a função pretendida para configurar uma condição. Em seguida, em Condição do IAM (opcional), clique em Adicionar condição do IAM.
No painel Editar condição, introduza um título e uma descrição opcional para a condição.
Pode adicionar uma expressão de condição através do criador de condições ou do editor de condições. O criador de condições oferece uma interface interativa para selecionar o tipo de condição, o operador e outros detalhes aplicáveis desejados acerca da expressão. O editor de condições oferece uma interface baseada em texto para introduzir manualmente uma expressão através da sintaxe CEL.
Construtor de condições:
- Clique em Adicionar.
- No menu pendente Tipo de condição, selecione Hora Programação Dia da semana.
- No menu pendente Operador, selecione Depois ou em.
- No menu pendente Dia da semana, selecione Segunda-feira.
- No menu pendente Escolha um fuso horário, selecione o fuso horário pretendido na lista.
- Certifique-se de que o operador E está selecionado à esquerda e, em seguida, clique novamente em Adicionar.
- No menu pendente Tipo de condição, selecione Hora Programação Dia da semana.
- No menu pendente Operador, selecione Antes ou a.
- No menu pendente Dia da semana, selecione Sexta-feira.
- No menu pendente Escolha um fuso horário, selecione o fuso horário pretendido na lista.
Neste momento, configurou o acesso apenas de segunda a sexta-feira. Agora, vai configurar o acesso das 09:00 às 17:00.
- Certifique-se de que o operador E está selecionado à esquerda e, em seguida, clique novamente em Adicionar.
No menu pendente Tipo de condição, selecione Tempo
Programação Hora do dia.- No menu pendente Operador, selecione Depois ou em.
- No menu pendente Hora do dia, selecione 9 (9:00).
- No menu pendente Escolha um fuso horário, selecione o fuso horário pretendido na lista.
- No menu pendente Tipo de condição, selecione Tempo Programação Hora do dia.
- No menu pendente Operador, selecione Antes ou a. Tenha em atenção que, para esta seleção, "ativado" é avaliado logicamente para todas as horas entre as 17:00 e as 17:59. Para definir a expiração do acesso às 16:59, certifique-se de que a hora está definida para 16 em vez de 17.
- No menu pendente Hora do dia, selecione 17 (17:00).
- No menu pendente Escolha um fuso horário, selecione o fuso horário pretendido na lista.
- Clique em Guardar para aplicar a condição.
- Quando o painel Editar condição estiver fechado, clique novamente em Guardar no painel Editar autorizações para atualizar a política de permissão.
Já configurou o acesso de segunda a sexta-feira, das 9:00 às 17:00.
Editor de condições:
Clique no separador Editor de condições e introduza a seguinte expressão (substituindo os valores dos marcadores de posição pelos seus):
request.time.getHours("Europe/Berlin") >= 9 && request.time.getHours("Europe/Berlin") <= 17 && request.time.getDayOfWeek("Europe/Berlin") >= 1 && request.time.getDayOfWeek("Europe/Berlin") <= 5
Depois de introduzir a expressão, pode optar por validar a sintaxe CEL clicando em Executar Linter acima da caixa de texto na parte superior direita.
Clique em Guardar para aplicar a condição.
Quando o painel Editar condição estiver fechado, clique novamente em Guardar no painel Editar autorizações para atualizar a política de permissão.
gcloud
As políticas de permissão são definidas através do padrão read-modify-write.
Execute o comando
gcloud projects get-iam-policy
para obter a política de autorização atual do projeto. No exemplo
seguinte, a versão JSON da política de permissão é transferida para um caminho no disco.
Comando:
gcloud projects get-iam-policy project-id --format=json > filepath
O formato JSON da política de autorização é transferido:
{
"bindings": [
{
"members": [
"user:my-user@example.com"
],
"role": "roles/owner"
},
{
"members": [
"group:my-group@example.com"
],
"role": "roles/bigquery.dataViewer"
}
],
"etag": "BwWKmjvelug=",
"version": 1
}
Para configurar a política de autorização com acesso agendado, adicione a seguinte expressão de condição realçada (substituindo a data/hora pela sua). A CLI gcloud atualiza a versão automaticamente:
{
"bindings": [
{
"members": [
"user:my-user@example.com"
],
"role": "roles/owner"
},
{
"members": [
"group:my-group@example.com"
],
"role": "roles/bigquery.dataViewer",
"condition": {
"title": "Business_hours",
"description": "Business hours Monday-Friday",
"expression": "request.time.getHours('Europe/Berlin') >= 9 && request.time.getHours('Europe/Berlin') <= 17 && request.time.getDayOfWeek('Europe/Berlin') >= 1 && request.time.getDayOfWeek('Europe/Berlin') <= 5"
}
}
],
"etag": "BwWKmjvelug=",
"version": 3
}
Em seguida, defina a nova política de permissão executando o comando
gcloud projects set-iam-policy
:
gcloud projects set-iam-policy project-id filepath
A nova política de permissão é aplicada e a concessão de funções do grupo permite o acesso entre os dias e as horas especificados.
REST
Use o padrão read-modify-write para permitir o acesso agendado.Primeiro, leia a política de permissão para o projeto:
O método
projects.getIamPolicy
da API Resource Manager obtém a política de autorização de um projeto.
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
PROJECT_ID
: O ID do seu Google Cloud projeto. Os IDs dos projetos são strings alfanuméricas, comomy-project
.POLICY_VERSION
: a versão da política a ser devolvida. Os pedidos devem especificar a versão da política mais recente, que é a versão 3 da política. Consulte o artigo Especificar uma versão da política ao obter uma política para ver detalhes.
Método HTTP e URL:
POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:getIamPolicy
Corpo JSON do pedido:
{ "options": { "requestedPolicyVersion": POLICY_VERSION } }
Para enviar o seu pedido, expanda uma destas opções:
Deve receber uma resposta JSON semelhante à seguinte:
{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/owner", "members": [ "user:my-user@example.com" ] }, { "role": "roles/bigquery.dataViewer", "members": [ "group:my-group@example.com" ] } ] }
Em seguida, modifique a política de permissão para permitir o acesso agendado.
Adicione a seguinte expressão de condição realçada (substituindo a indicação de tempo pela sua). Certifique-se de que atualizou o valor version
para3
:
{
"etag": "BwWKmjvelug=",
"version": 3,
"bindings": [
{
"role": "roles/owner",
"members": [
"user:my-user@example.com"
]
},
{
"role": "roles/bigquery.dataViewer",
"members": [
"group:my-group@example.com"
],
"condition": {
"title": "Business_hours",
"description": "Business hours Monday-Friday",
"expression":
"request.time.getHours('Europe/Berlin') >= 9 &&
request.time.getHours('Europe/Berlin') <= 17 &&
request.time.getDayOfWeek('Europe/Berlin') >= 1 &&
request.time.getDayOfWeek('Europe/Berlin') <= 5"
}
}
]
}
O método projects.setIamPolicy
da API Resource Manager define a política de autorização no pedido como a nova política de autorização do projeto.
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
PROJECT_ID
: O ID do seu Google Cloud projeto. Os IDs dos projetos são strings alfanuméricas, comomy-project
.
Método HTTP e URL:
POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:setIamPolicy
Corpo JSON do pedido:
{ "policy": { "etag": "BwWKmjvelug=", "version": 3, "bindings": [ { "role": "roles/owner", "members": [ "user:my-user@example.com" ] }, { "role": "roles/bigquery.dataViewer", "members": [ "group:my-group@example.com" ], "condition": { "title": "Business_hours", "description": "Business hours Monday-Friday", "expression": "request.time.getHours('Europe/Berlin') >= 9 && request.time.getHours('Europe/Berlin') <= 17 && request.time.getDayOfWeek('Europe/Berlin') >= 1 && request.time.getDayOfWeek('Europe/Berlin') <= 5" } } ] } }
Para enviar o seu pedido, expanda uma destas opções:
A resposta contém a política de permissão atualizada.
O que se segue?
- Saiba como gerir associações de funções condicionais.
- Saiba como validar políticas de permissão.
- Saiba como usar associações de funções condicionais para gerir o acesso privilegiado just-in-time a projetos.