Reautenticação do IAP

A reautenticação do IAP permite que os proprietários de serviços e aplicativos ou os administradores do Google Cloud 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. Ele limita o período em que um usuário pode acessar o serviço ou aplicativo protegido pelo IAP antes que ele precise se autenticar novamente.

A reautenticação do IAP foi projetada para aplicar políticas de reautenticação a serviços e aplicativos protegidos pelo IAP. Você pode fazer isso para serviços e aplicativos essenciais que lidam com informações confidenciais. Por exemplo, é possível especificar que os usuários que acessam um aplicativo de RH importante façam a autenticação novamente a cada hora usando um segundo fator.

Métodos de reautenticação com suporte

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

  • Login: o IAP força a reautenticação do aplicativo protegido, e os usuários precisam fazer login novamente.
  • Chave segura: os usuários finais precisam fazer uma nova autenticação usando a autenticação de dois fatores com chave de segurança configurada.
  • Segundos fatores registrados: os usuários finais precisam se autenticar novamente usando um dos métodos de autenticação de dois fatores registrados.

Para mais informações, consulte IapSettings.

Configurar uma política de reautenticação

reauthSettings fazem parte de IapSettings e, portanto, podem ser definidos em qualquer tipo de recurso na hierarquia de recursos. É possível definir reauthSettings em um serviço ou aplicativo no nível da organização, da pasta, do projeto ou do serviço para aplicar restrições. Por exemplo, você pode limitar a duração da sessão a, no máximo, uma hora para todos os aplicativos de 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 for definido como MINIMUM em um recurso, como uma organização, as duas configurações serão mescladas ao avaliar as configurações de reautorização no recurso de nível inferior, como uma pasta. Se o recurso de nível inferior não tiver configurações de reautorização, o resultado da mesclagem será as configurações não vazias do recurso de nível superior. Caso contrário, a mesclagem vai usar a duração de sessão mais curta e o método de reautorização de maior precedência entre os dois recursos. O tipo de política sempre será MINIMUM. As configurações de reautenticação mescladas serão usadas para mesclar com as configurações de reautenticação do próximo recurso de nível inferior, como um projeto.

    A ordem de precedência dos três métodos compatíveis, da maior para a menor, é Secure key, Enrolled second factors e Login.

  • 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 reautorização no 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 reautorizaçã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 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 mescladas são usadas para mesclar com o reauthSettings do serviço ou aplicativo.

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"

No exemplo, se o tipo de política de todos os recursos 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 cinco minutos.

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

Console

  1. Acesse a página Identity-Aware Proxy.
    Acessar a página "Identity-Aware Proxy"
  2. Selecione um projeto e, em seguida, o recurso em que você quer definir uma política de reautorizaçã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 reautorização e clique em Salvar.

gcloud

É possível definir uma política de reautenticação em recursos e serviços no nível 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 reautorizaçã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 reautorização nos recursos de uma pasta, execute o seguinte comando:

gcloud iap settings set SETTING_FILE --folder=FOLDER

Para definir uma política de reautorizaçã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 reautorizaçã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 do IAP. Precisa ser app-engine, iap_web, compute, organization ou folder.
  • SERVICE: o nome do serviço. Isso é opcional quando resource-type é compute ou app-engine.
  • VERSION: o nome da versão. Isso não é aplicável a compute e é opcional quando resource-type é 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 conferir o nome do recurso, execute o comando gcloud iap settings get. Copie o campo de nome da saída. Você vai precisar do nome 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 impedir que os usuários façam uma nova autenticação com muita frequência ao usar apps semelhantes, o cookie é definido no domínio particular de nível superior e é válido para esse domínio inteiro.

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. Apps 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 particular 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.
  • 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 IAM.
  • As identidades externas via Identity Platform não são compatíveis com a reautenticação porque os recursos que exigem a reautenticação não são acessíveis.