Reautenticação do IAP

A reautenticação do IAP permite que proprietários de serviços e aplicativos ou Google Cloud administradores exijam que os usuários finais autenticados se autentiquem novamente após um período especificado ao acessar um serviço ou aplicativo protegido pelo IAP e limitar o tempo que um usuário pode acessar um serviço ou aplicativo protegido pelo IAP antes que a autenticação seja necessária.

A reautenticação do IAP (ou reauth) foi criada para aplicar políticas de reautenticação a serviços e aplicativos (ou apps) protegidos pelo IAP. Com esse serviço, é possível aplicar políticas de reautenticação para serviços e aplicativos críticos que processam informações confidenciais. Por exemplo, é possível especificar que os usuários que acessam um aplicativo de RH crítico se autentiquem novamente a cada hora usando um segundo fator.

Métodos de reautenticação compatíveis

Use os seguintes métodos para gerenciar as configurações de reautenticação:

  • Login: os usuários finais se autenticam novamente usando as credenciais de login.
  • Chave segura: os usuários finais se autenticam novamente usando a chave de segurança configurada.
  • Segundos fatores registrados: os usuários finais se autenticam novamente usando um dos segundos fatores registrados.

Para mais informações, consulte IapSettings.

Configurar uma política de reautenticação

Os reauthSettings estão incluídos como parte de IapSettings e podem ser definidos em qualquer tipo de recurso na hierarquia de recursos. É possível definir reauthSettings no nível da organização, da pasta, do projeto ou do serviço para aplicar restrições. Por exemplo, é possível limitar a duração da sessão a no máximo uma hora para todos os aplicativos em uma organização ou para um aplicativo específico.

Há dois tipos de políticas que podem ser usados para configurar a reautenticação:

  • Mínimo: se o tipo de política estiver definido como MINIMUM em um recurso, como uma organização, ao avaliar as configurações de reautenticação em um recurso de nível inferior, como uma pasta, as duas configurações serão mescladas. Se o recurso de nível inferior não tiver configurações de reautenticação, o resultado da fusão será as configurações não vazias do recurso de nível superior. Caso contrário, a fusão vai usar a duração de sessão mais curta e o método de reautenticação de maior precedência entre os dois recursos. O tipo de política mesclada resultante é definido como MINIMUM.

  • Padrão: se o tipo de política estiver definido como DEFAULT em um recurso, como uma organização, ao avaliar a configuração de reautenticação em um recurso de nível inferior, como uma pasta, a configuração do recurso de nível inferior será usada se estiver configurada. Caso contrário, a configuração de reautenticação do recurso de nível superior será aplicada.

Para os dois tipos de política, o processo de avaliação é repetido para determinar o reauthSettings do serviço ou aplicativo de destino. Os reauthSettings efetivos em qualquer nível são determinados da seguinte forma:

  • Herança: as configurações do recurso de nível superior são mescladas com as do recurso de nível inferior.

  • Regras de mesclagem: se o recurso de nível inferior não tiver configurações específicas de reautenticação, ele vai herdar as configurações do nível superior.

    Se os dois níveis tiverem reauthSettings, o resultado mesclado vai usar o seguinte:

    • A duração mais curta da sessão.
    • O método de reautenticação com maior precedência.
    • A ordem de precedência é Secure key (mais alta), Enrolled second factors (média) e Login (mais baixa).
  • Tipo de política resultante: o tipo de política das configurações mescladas é MINIMUM.

Os exemplos a seguir mostram as configurações antes e depois da avaliação. Durante a avaliação, a pasta e a organização reauthSettings são mescladas, resultando na mudança do tipo de política da pasta para MINIMUM. As configurações combinadas são usadas para fazer a fusão com o serviço ou aplicativo reauthSettings.

Organização IapSettings:

accessSettings:
  reauthSettings:
    method: "ENROLLED_SECOND_FACTORS"
    maxAge: "3600s"
    policyType: "MINIMUM"

IapSettings de pasta:

accessSettings:
  reauthSettings:
    method: "LOGIN"
    maxAge: "1200s"
    policyType: "DEFAULT"

Serviço ou aplicativo IapSettings:

accessSettings:
  reauthSettings:
    method: "SECURE_KEY"
    maxAge: "7200s"
    policyType: "DEFAULT"

Configurações após a fusão:

Organização IapSettings:

accessSettings:
  reauthSettings:
    method: "ENROLLED_SECOND_FACTORS"
    maxAge: "3600s"
    policyType: "MINIMUM"

IapSettings de pasta:

accessSettings:
  reauthSettings:
    method: "ENROLLED_SECOND_FACTORS"
    maxAge: "1200s"
    policyType: "MINIMUM"

Serviço ou aplicativo IapSettings:

accessSettings:
  reauthSettings:
    method: "SECURE_KEY"
    maxAge: "1200s"
    policyType: "MINIMUM"

Neste exemplo, se o tipo de política de cada recurso for definido como DEFAULT, o reauthSettings do serviço ou aplicativo será usado.

MaxAge

Use o parâmetro maxAge para especificar a frequência com que um usuário final precisa se autenticar novamente, indicado em segundos. Por exemplo, para definir uma política de reautenticação de uma hora, defina os segundos como 3600, como mostrado no exemplo a seguir:

accessSettings:
  reauthSettings:
    method: "LOGIN"
    maxAge: "3600s"
    policyType: "MINIMUM"

O valor mínimo para maxAge é de 300 segundos ou cinco minutos.

Para definir uma política de reautenticação, siga estas etapas.

Console

  1. Acesse a página do IAP.
    Acessar a página "Identity-Aware Proxy"
  2. Selecione um projeto e o recurso em que você quer definir uma política de reautenticação.

  3. Abra as Configurações do recurso e, em Política de reautenticação, selecione Configurar reautenticação.

  4. Especifique as configurações de reautenticação e clique em Salvar.

gcloud

É possível definir uma política de reautenticação em recursos e serviços nos níveis da organização, do projeto e da pasta. Confira alguns exemplos de comandos para definir uma política de reautenticação.

Para ver mais informações, consulte gcloud iap settings set.

Execute este comando:

gcloud iap settings set SETTING_FILE [--organization=ORGANIZATION --folder=FOLDER --project=/PROJECT --resource-type=RESOURCE_TYPE --service=SERVICE --version=VERSION

Para definir uma política de reautenticação nos recursos de uma organização, execute o seguinte comando:

gcloud iap settings set SETTING_FILE --organization=ORGANIZATION

Para definir uma política de reautenticação nos recursos de uma pasta, execute o seguinte comando:

gcloud iap settings set SETTING_FILE --folder=FOLDER

Para definir uma política de reautenticação em todos os recursos do tipo Web em um projeto, execute o seguinte comando:

gcloud iap settings set SETTING_FILE --project=PROJECT --resource-type=iap_web

Para definir uma política de reautenticação em um serviço do App Engine em um projeto, execute o seguinte comando:

gcloud iap settings set SETTING_FILE --project=PROJECT --resource-type=app-engine --service=SERVICE

Onde SETTING_FILE é:

accessSettings:
  reauthSettings:
    method: "LOGIN"
    maxAge: "3600s"
    policyType: "MINIMUM"

Substitua:

  • FOLDER: o ID da pasta.
  • ORGANIZATION: o ID da organização.
  • PROJECT: o ID do projeto.
  • RESOURCE_TYPE: o tipo de recurso da IAP. Precisa ser app-engine, iap_web, compute, organization ou folder.
  • SERVICE: o nome do serviço. Isso é opcional quando resource-type está definido como compute ou app-engine.
  • VERSION: o nome da versão. Isso não se aplica ao tipo de recurso compute e é opcional para o tipo de recurso app-engine.

API

Execute o comando a seguir para preparar um arquivo iap_settings.json. Atualize os valores conforme necessário.

cat << EOF > iap_settings.json
{
  "access_settings": {
      "reauth_settings": {
            "method": "LOGIN",
            "maxAge": "300s",
            "policy_type": "DEFAULT"
        }
    }
}
EOF

Para receber o nome do recurso, execute o comando gcloud iap settings get. Copie o campo "name" da saída. Você vai precisar dele na próxima etapa.

gcloud iap settings get [--organization=ORGANIZATION --folder=FOLDER --project=/PROJECT --resource-type=RESOURCE_TYPE --service=SERVICE --version=VERSION]

Substitua RESOURCE_NAME no comando a seguir pelo nome da etapa anterior. O IapSettings será atualizado.

curl -X PATCH \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d @iap_settings.json \
"https://iap.googleapis.com/v1/RESOURCE_NAME:iapSettings?updateMask=iapSettings.accessSettings.reauthSettings"

Como entender as credenciais de reautenticação

Após uma nova autenticação bem-sucedida, o IAP cria um cookie no navegador do usuário final. Para evitar a reautenticação frequente de aplicativos no mesmo domínio, o cookie é definido no domínio particular de nível superior e é válido para todo o domínio.

Por exemplo, foo.example.com é um recurso protegido pelo IAP e tem uma política de reautenticação com o IAP. Após uma nova autenticação bem-sucedida, o IAP define um cookie em example.com, que é o domínio particular de nível superior. Aplicativos do mesmo domínio particular de nível superior, como bar.example.com, usam as mesmas credenciais de reautenticação e não solicitam que o usuário se autentique novamente, desde que as credenciais sejam válidas.

Para URLs como myapp.appspot.com, appspot.com é um domínio público. Portanto, o domínio privado de nível superior é myapp.appspot.com.

Limitações conhecidas

  • A reautenticação é compatível apenas com fluxos de navegador. O acesso programático à conta de usuário não é compatível. Por exemplo, não é possível autenticar novamente os usuários com apps para dispositivos móveis e computadores porque os recursos que exigem esse recurso não podem ser acessados por esses apps.
  • As contas de serviço e o IAP-TCP estão isentos dos requisitos de reautenticação.
  • A reautenticação não funciona com o tipo de membro allUsers do Identity and Access Management.
  • As identidades externas, como OAuth e SAML, não são compatíveis com a reautenticação.
  • As identidades da federação de identidade de colaboradores não são compatíveis com a reautenticação do IAP.