Como configurar o acesso temporário

Neste tópico, descrevemos como conceder acesso temporário aos recursos do Google Cloud usando vinculações de papel condicionais nas políticas do Cloud Identity and Access Management. Por meio de atributos de data/hora, é possível aplicar restrições temporais de acesso a um determinado recurso. Por exemplo, é possível conceder acesso temporário a um projeto por um horário específico ou de forma programada e recorrente.

Antes de começar

  • Leia a Visão geral das condições para entender os conceitos básicos das políticas condicionais do Cloud IAM.
  • Revise os atributos de data/hora que podem ser usados em uma expressão condicional.
  • No momento, os atributos de data/hora são compatíveis com todos os serviços do Google Cloud.

Como conceder acesso temporário

Uma política condicional pode ser usada para conceder acesso temporário a um recurso, garantindo que um usuário não possa mais acessar o recurso após a data/hora de expiração especificada.

Considere o seguinte cenário: a política de segurança de informações da ExampleCo enfatiza que nenhum funcionário deve ter acesso indefinido aos recursos de projetos de produção. Anteriormente, os administradores definiam e excluíam manualmente as políticas do Cloud IAM para atender às necessidades emergenciais dos engenheiros. Para reduzir a sobrecarga administrativa, a ExampleCo agora pode configurar uma política condicional com uma condição "Data/hora" para definir uma data de término para a política.

Para conceder acesso expirável a um recurso de projeto:

Console

  1. Abra a página "IAM" no Console do Cloud.

    Abrir a página "IAM"

  2. Clique em Selecionar um projeto e em Abrir.

  3. Na lista de membros, localize o membro desejado e clique no botão .

  4. No painel Editar permissões, localize o papel desejado para configurar uma condição. Em seguida, em Condição, clique em Adicionar condição.

  5. No painel Editar condição, insira um título e uma descrição opcional para a condição.

  6. É possível adicionar uma expressão de condição usando o Criador de condições ou o Editor de 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:

    1. No menu suspenso Tipo de condição, selecione Acesso expirado.
    2. Na lista suspensa Operador, selecione até.
    3. Na lista suspensa Horário, clique no botão para selecionar um intervalo de data e hora.
    4. Clique em Salvar para aplicar a condição.
    5. Quando o painel Editar condição for fechado, clique em Salvar novamente no painel Editar permissões para atualizar a política do Cloud IAM.

    Editor de condições:

    1. Clique na guia Editor de condições e insira a expressão a seguir (substituindo o carimbo de data/hora pelo seu próprio texto):

      request.time > timestamp("2020-07-01T00:00:00.000Z")
    2. Depois de inserir sua expressão, é possível validar a sintaxe CEL clicando em Executar linter acima da caixa de texto, na parte superior direita.

    3. Clique em Salvar para aplicar a condição.

    4. Quando o painel Editar condição for fechado, clique em Salvar novamente no painel Editar permissões para atualizar a política do Cloud IAM.

Comando gcloud

As políticas do Cloud IAM são definidas usando o padrão Leitura-modificação-gravação.

Execute o comando gcloud projects get-iam-policy para descobrir a política atual do Cloud 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 Cloud IAM no formato JSON:

{
      "bindings": [
        {
          "members": [
            "user:user@example.com"
          ],
          "role": "roles/iam.securityReviewer"
        }
      ],
      "etag": "BwWKmjvelug=",
      "version": 1
    }
    

Para configurar a política com acesso expirável, adicione a expressão condicional destacada a seguir (substituindo o carimbo de data/hora pelo seu próprio). Se você não estiver usando a versão 263.0.0 ou mais recente da ferramenta gcloud, certifique-se de atualizar o valor version para 3. Se você estiver usando uma versão mais recente da ferramenta gcloud, o valor máximo da política será definido automaticamente para você:

{
      "bindings": [
        {
          "members": [
            "user:user@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 condicional executando o comando gcloud projects set-iam-policy:

    gcloud projects set-iam-policy [PROJECT-ID] [FILE-PATH]
    

A nova política condicional será aplicada e a atribuição de papel de user@example.com expirará no horário especificado.

API REST

Chame projects.getIamPolicy() para receber a política atual do Cloud IAM para o projeto.

    POST https://cloudresourcemanager.googleapis.com/v1/projects/[PROJECT-ID]:getIamPolicy
    

O corpo da solicitação deve ser definido da seguinte maneira:

{
      "options": {
        "requestedPolicyVersion": 3
      }
    }
    

O corpo da resposta incluirá a política do Cloud IAM do projeto:

{
      "bindings": [
        {
          "members": [
            "user:user@example.com"
          ],
          "role": "roles/iam.securityReviewer"
        }
      ],
      "etag": "BwWKmjvelug=",
      "version": 1
    }
    

Para configurar a política com acesso expirável, adicione a expressão condicional destacada a seguir (substituindo o carimbo de data/hora pelo seu próprio). Verifique se você atualizou o valor version para 3:

{
      "bindings": [
        {
          "members": [
            "user:user@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
    }

Chame projects.setIamPolicy() para definir a nova política condicional do Cloud IAM para o projeto, incluindo a política atualizada no corpo da solicitação:

    POST https://cloudresourcemanager.googleapis.com/v1/projects/[PROJECT-ID]:setIamPolicy
    

A resposta será a política atualizada:

Como restringir o acesso a dias e horas da semana

Uma política condicional pode ser usada para conceder acesso a um recurso apenas dentro de determinados dias ou horas da semana de forma recorrente.

Considere o seguinte cenário: a empresa ExampleCo tem um projeto de controle de qualidade. É necessário que toda a equipe do controle de qualidade tenha papéis altamente privilegiados para concluir o trabalho. A ExampleCo precisa obedecer às leis trabalhistas nos seus locais, que limitam o horário de trabalho, de segunda a sexta-feira, das 9h às 17h. A ExampleCo pode usar as condições de data e hora para garantir que os funcionários só possam acessar o Google Cloud durante a semana de trabalho e durante o horário de trabalho programado.

Para conceder acesso a um recurso de projeto somente a determinados dias ou horas da semana de forma recorrente:

Console

  1. Abra a página "IAM" no Console do Cloud.

    Abrir a página "IAM"

  2. Clique em Selecionar um projeto e em Abrir.

  3. Na lista de membros, localize o membro desejado e clique no botão .

  4. No painel Editar permissões, localize o papel desejado para configurar uma condição. Em seguida, em Condição, clique em Adicionar condição.

  5. No painel Editar de condições, insira um título e uma descrição opcional para a condição.

  6. É possível adicionar uma expressão de condição usando o Criador de condições ou o Editor de 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:

    1. Clique em Add.
    2. No menu suspenso Tipo de condição, selecione Horário Programar Dia da semana.
    3. Na lista suspensa Operador, selecione Após ou Em.
    4. Na lista suspensa Dia da semana, selecione Segunda-feira.
    5. Na lista suspensa Escolha um fuso horário, selecione o fuso horário que você quer na lista.
    6. Certifique-se de que o operador E esteja selecionado à esquerda e clique em Adicionar novamente.
    7. No menu suspenso Tipo de condição, selecione Horário Programar Dia da semana.
    8. Na lista suspensa Operador, selecione Antes ou Em.
    9. Na lista suspensa Dia da semana, selecione Sexta-feira.
    10. Na lista suspensa Escolha um fuso horário, selecione o fuso horário que você quer na lista.

    Até aqui, você configurou o acesso somente de segunda a sexta-feira. Agora, você configurará o acesso das 9h às 17h.

    1. Certifique-se de que o operador E esteja selecionado à esquerda e clique em Adicionar novamente.
    2. No menu suspenso Tipo de condição, selecione Horário Programar Hora do dia.

      1. Na lista suspensa Operador, selecione Após ou Em.
      2. Na lista suspensa Hora do dia, selecione 9h.
      3. Na lista suspensa Escolha um fuso horário, selecione o fuso horário que você quer na lista.
      4. No menu suspenso Tipo de condição, selecione Horário Programar Hora do dia.
      5. Na lista suspensa Operador, selecione Antes ou Em. Observe que, para essa seleção, "em" será avaliado logicamente para todos os horários entre 17h e 17h59. Para definir o acesso para expirar às 16h59, verifique se a hora está definida como 16h em vez de 17h.
      6. Na lista suspensa Hora do dia, selecione 17h.
      7. Na lista suspensa Escolha um fuso horário, selecione o fuso horário que você quer na lista.
      8. Clique em Salvar para aplicar a condição.
      9. Quando o painel Editar condição for fechado, clique em Salvar novamente no painel Editar permissões para atualizar a política do Cloud IAM.

      Agora você configurou o acesso para segunda a sexta-feira, das 9h às 17h.

      Editor de condições:

      1. Clique na guia Editor de condições e insira a expressão a seguir (substituindo os valores de marcador por seus próprios valores):

            request.time.getHours("Europe/Berlin") >= 9 &&
            request.time.getHours("Europe/Berlin") <= 17 &&
            request.time.getDayOfWeek("Europe/Berlin") >= 1 &&
            request.time.getDayOfWeek("Europe/Berlin") <= 5
            
      2. Depois de inserir sua expressão, é possível validar a sintaxe CEL clicando em Executar linter acima da caixa de texto, na parte superior direita.

      3. Clique em Salvar para aplicar a condição.

      4. Quando o painel Editar condição for fechado, clique em Salvar novamente no painel Editar permissões para atualizar a política do Cloud IAM.

Comando gcloud

As políticas do Cloud IAM são definidas usando o padrão Leitura-modificação-gravação.

Execute o comando gcloud projects get-iam-policy para descobrir a política atual do Cloud 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 Cloud IAM no formato JSON:

{
      "bindings": [
        {
          "members": [
            "user:user@example.com"
          ],
          "role": "roles/bigquery.dataViewer"
        }
      ],
      "etag": "BwWKmjvelug=",
      "version": 1
    }
    

Para configurar a política com acesso programável, adicione a expressão condicional destacada a seguir (substituindo o carimbo de data/hora pelo seu próprio). Se você não estiver usando a versão 263.0.0 ou mais recente da ferramenta gcloud, certifique-se de atualizar o valor version para 3. Se você estiver usando uma versão mais recente da ferramenta gcloud, o valor máximo da política será definido automaticamente para você:

{
      "bindings": [
        {
          "members": [
            "user:user@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 condicional executando o comando gcloud projects set-iam-policy:

    gcloud projects set-iam-policy [PROJECT-ID] [FILE-PATH]
    

A nova política condicional será aplicada e a atribuição de papel de user@example.com permitirá o acesso nos dias e horários especificados.

API REST

Chame projects.getIamPolicy() para receber a política atual do Cloud IAM para o projeto.

    POST https://cloudresourcemanager.googleapis.com/v1/projects/[PROJECT-ID]:getIamPolicy
    

O corpo da solicitação deve ser definido da seguinte maneira:

{
      "options": {
        "requestedPolicyVersion":3
      }
    }
    

O corpo da resposta incluirá a política do Cloud IAM do projeto:

{
      "bindings": [
        {
          "members": [
            "user:user@example.com"
          ],
          "role": "roles/bigquery.dataViewer"
        }
      ],
      "etag": "BwWKmjvelug=",
      "version": 1
    }
    

Para configurar a política com acesso programável, adicione a expressão condicional destacada a seguir (substituindo o carimbo de data/hora pelo seu próprio). Verifique se você atualizou o valor version para 3:

{
      "bindings": [
        {
          "members": [
            "user:user@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
    }

Chame projects.setIamPolicy() para definir a nova política condicional do Cloud IAM para o projeto, incluindo a política atualizada no corpo da solicitação:

    POST https://cloudresourcemanager.googleapis.com/v1/projects/[PROJECT-ID]:setIamPolicy
    

A resposta conterá a política atualizada.

A seguir