Configure o acesso temporário

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 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

  1. Na Google Cloud consola, aceda à página IAM.

    Aceda à página IAM

  2. Na lista de diretores, localize o diretor pretendido e clique no botão .

  3. 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.

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

  5. 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:

    1. No menu pendente Tipo de condição, selecione Acesso com prazo.
    2. No menu pendente Operador, selecione por.
    3. No menu pendente Hora, clique no botão para selecionar um intervalo de datas e horas.
    4. Clique em Guardar para aplicar a condição.
    5. 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:

    1. 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")
    2. 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.

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

    4. 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, como my-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, como my-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

  1. Na Google Cloud consola, aceda à página IAM.

    Aceda à página IAM

  2. Na lista de diretores, localize o diretor pretendido e clique no botão .

  3. 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.

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

  5. 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:

    1. Clique em Adicionar.
    2. No menu pendente Tipo de condição, selecione Hora Programação Dia da semana.
    3. No menu pendente Operador, selecione Depois ou em.
    4. No menu pendente Dia da semana, selecione Segunda-feira.
    5. No menu pendente Escolha um fuso horário, selecione o fuso horário pretendido na lista.
    6. Certifique-se de que o operador E está selecionado à esquerda e, em seguida, clique novamente em Adicionar.
    7. No menu pendente Tipo de condição, selecione Hora Programação Dia da semana.
    8. No menu pendente Operador, selecione Antes ou a.
    9. No menu pendente Dia da semana, selecione Sexta-feira.
    10. 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.

    1. Certifique-se de que o operador E está selecionado à esquerda e, em seguida, clique novamente em Adicionar.
    2. No menu pendente Tipo de condição, selecione Tempo Programação Hora do dia.

      1. No menu pendente Operador, selecione Depois ou em.
      2. No menu pendente Hora do dia, selecione 9 (9:00).
      3. No menu pendente Escolha um fuso horário, selecione o fuso horário pretendido na lista.
      4. No menu pendente Tipo de condição, selecione Tempo Programação Hora do dia.
      5. 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.
      6. No menu pendente Hora do dia, selecione 17 (17:00).
      7. No menu pendente Escolha um fuso horário, selecione o fuso horário pretendido na lista.
      8. Clique em Guardar para aplicar a condição.
      9. 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:

      1. 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
        
      2. 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.

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

      4. 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, como my-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, como my-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?