Configurar controles de sessão para reautenticação

Com os controles de sessão, você configura a frequência com que os usuários precisam se autenticar novamente depois de receber acesso e se é necessário um login completo, apenas uma senha ou uma chave de segurança de hardware.

É possível aplicar controles de sessão para fazer o seguinte:

  • Imponha a reautenticação frequente para usuários privilegiados: exija que usuários com privilégios elevados, como proprietários de projetos e administradores de faturamento, façam uma nova autenticação com mais frequência.
  • Configurar sessões mais longas para determinados aplicativos: permita que alguns aplicativos, como os de IA baseados em contexto (por exemplo, o Gemini), tenham sessões mais longas para preservar a grande janela de contexto necessária para um desempenho ideal.

Definir a duração da sessão e os métodos de reautenticação

É possível definir controles de sessão ao criar uma vinculação do Access Context Manager. Para mais detalhes sobre os controles de sessão, consulte Aplicar políticas a grupos de usuários usando vinculações de acesso.

gcloud

  • Definir controles de sessão padrão para todos os aplicativos

    Use a flag --session-length para definir a duração da sessão e a flag --session-reauth-method para especificar o método de reautenticação. Por exemplo, é possível definir uma duração de sessão de 30 minutos (30m) e um método de reautenticação LOGIN, PASSWORD ou SECURITY_KEY.

    Isso será aplicado a todos os aplicativos, a menos que seja substituído por configurações específicas do aplicativo.

  • Definir controles de sessão específicos do aplicativo

    Defina scopedAccessSettings em um arquivo YAML para especificar controles de sessão para aplicativos específicos usando clientId. Isso permite substituir os controles de sessão padrão desses aplicativos. Em seguida, transmita o arquivo YAML usando o --binding-file flag.

API

Defina os campos sessionLength e sessionReauthMethod no sessionSettings object no corpo JSON da solicitação POST para criar ou atualizar uma vinculação GcpUserAccessBinding. Use scopedAccessSettings para definir controles de sessão específicos do aplicativo. Consulte Definir configurações para aplicativos específicos para mais detalhes.

Principais considerações ao definir controles de sessão:

  • Não é possível especificar o console Google Cloud usando clientId. Para aplicar controles de sessão no console Google Cloud , defina-o como padrão e crie exceções para outros aplicativos.
  • Somente a vinculação de acesso criada mais recentemente que corresponde à solicitação é usada ao resolver as configurações de controle de sessão.

Exemplo de configuração de política

Confira um exemplo que demonstra como criar um controle de sessão que exige reautenticação a cada 18 horas por padrão com LOGIN e a cada duas horas para um aplicativo específico (SENSITIVE_APP_ID) com SECURITY_KEY.

Configurações padrão

As flags --level, --session-length e --session-reauth-method no comando da Google Cloud CLI (ou os campos correspondentes no corpo JSON da chamada de API) definem o comportamento padrão para todos os aplicativos não definidos explicitamente em scopedAccessSettings.

Configurações específicas do aplicativo

A seção scopedAccessSettings no arquivo YAML (ou corpo JSON) permite substituir as configurações padrão de aplicativos específicos. No exemplo, definimos um requisito de reautenticação de duas horas com SECURITY_KEY para o aplicativo com o ID do cliente SENSITIVE_APP_ID.

Para isentar determinados apps do controle de sessão, defina o campo sessionLength como 0s ou sessionLengthEnabled para false. O método sessionReauthMethod será ignorado.

gcloud

A configuração de configurações:

scopedAccessSettings:
  scope:
    clientScope:
      restrictedClientApplication:
        clientId: SENSITIVE_APP_ID
  activeSettings:
    sessionSettings:
      sessionLength: 7200s
      sessionReauthMethod: SECURITY_KEY
      sessionLengthEnabled: true

Crie a vinculação de acesso:

gcloud access-context-manager cloud-bindings create \
    --organization ORG_ID \
    --group-key GROUP_ID \
    --binding-file BINDING_FILE_PATH \
    --level DEFAULT_ACCESS_LEVEL
    --session-length 18h \
    --session-reauth-method LOGIN

API

Corpo JSON:

{
  "groupKey": "GROUP_ID",
  "accessLevels": [
    "accessPolicies/POLICY_ID/accessLevels/DEFAULT_ACCESS_LEVEL"
  ],
  "scopedAccessSettings": [
    {
      "scope": {
        "clientScope": {
          "restrictedClientApplication": {
            "clientId": "SENSITIVE_APP_ID"
          }
        }
      },
      "activeSettings": {
        "accessLevels": [
          "accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME"
        ],
        "sessionSettings": [
          {
            "sessionLength": "2h",
            "sessionReauthMethod": "SECURITY_KEY",
            "sessionLengthEnabled": true
          }
        ]
      }
    }
  ]

Solicitação POST:

POST https://accesscontextmanager.googleapis.com/v1/organizations/ORG_ID/gcpUserAccessBindings