Por padrão, as sessões da federação de identidade de colaboradores têm uma duração máxima de 12 horas. A duração estendida da sessão permite que as organizações configurem sessões de longa duração de até 90 dias para o Looker (Google Cloud Core) e o app Gemini Enterprise para dispositivos móveis:
Looker (Google Cloud Core): configurado usando escopos de projeto (
restricted_project). As sessões estendidas permitem que os usuários da força de trabalho mantenham uma conexão ininterrupta com o Looker (Google Cloud Core) sem exigir a reautenticação diária no provedor de identidade externo (IdP). A interação do usuário no Looker (Google Cloud Core) continua sendo regida pela configuração de duração da sessão do Looker (Google Cloud Core).O app Gemini Enterprise para dispositivos móveis: configurado usando escopos de aplicativo (
restricted_client_application). As sessões estendidas permitem que os usuários da força de trabalho mantenham uma conexão ininterrupta com o app Gemini Enterprise para dispositivos móveis sem exigir a reautenticação diária no provedor de identidade externo (IdP).
Para manter a segurança durante as sessões estendidas, Google Cloud sincroniza periodicamente os atributos do usuário e as associações ao grupo diretamente do provedor de identidade externa (IdP) em segundo plano.
Este documento descreve como definir políticas de sessão estendida usando a API Access Context Manager com controles com escopo de projeto (para o Looker (Google Cloud Core)) e controles com escopo de aplicativo (para o app Gemini Enterprise para dispositivos móveis), configurar o provedor do pool de força de trabalho e gerenciar vinculações ativas.
Visão geral
A federação de identidade de colaboradores usa vinculações de acesso do Access Context Manager Google Cloud para configurar a duração estendida da sessão:
Google Cloud Vinculação de acesso: os administradores definem uma política de duração da sessão usando o Access Context Manager que se aplica a toda a organização em todos os pools de força de trabalho. As políticas concedem sessões estendidas de até 90 dias usando um dos seguintes:
Escopo do projeto (
restricted_project): aplica sessões estendidas a instâncias do Looker (Google Cloud Core) no projeto designado.Escopo do aplicativo (
restricted_client_application): aplica sessões estendidas ao app Gemini Enterprise para dispositivos móveis.
Sincronização de atributos em segundo plano:
OIDC: com suporte usando um fluxo de código de autorização do OIDC com o escopo
offline_access(usando tokens de atualização para atualizar periodicamente os atributos do usuário e as associações de grupo do IdP externo em segundo plano) ou pelo provisionamento do SCIM.SAML: para provedores SAML, os atributos do usuário e as associações de grupo são mantidos atualizados usando o provisionamento do SCIM.
Proteção contra inatividade: se os atributos do usuário não puderem ser atualizados do IdP externo em 24 horas (por exemplo, se o usuário for desprovisionado ou as credenciais forem revogadas no IdP), Google Cloud terminará a sessão.
Antes de começar
Antes de configurar a duração estendida da sessão, verifique se você tem as permissões e APIs necessárias do Identity and Access Management ativadas:
Papéis e permissões necessárias
Para receber as permissões necessárias para configurar a duração estendida da sessão, peça ao administrador para conceder a você os papéis do IAM a seguir:
- Configurar provedores de pool de identidade de colaboradores: administrador de pool de força de trabalho (
roles/iam.workforcePoolAdmin) no pool de força de trabalho ou na organização. - Gerenciar vinculações de acesso ao Cloud do Access Context Manager: administrador de vinculação de acesso ao Cloud (
roles/accesscontextmanager.gcpAccessAdmin) no nível da organização. Esse papel fornece as permissões necessárias para criar, visualizar, atualizar e excluir vinculações de acesso do Access Context Manager.
Ativar APIs
Ative as APIs do Access Context Manager e do IAM no seu projeto:
gcloud services enable \
accesscontextmanager.googleapis.com \
iam.googleapis.com
Limitações e requisitos
Antes de configurar a duração estendida da sessão, revise os seguintes requisitos e limitações:
- Aplicativos com suporte: a duração estendida da sessão se aplica exclusivamente a:
- Looker (Google Cloud Core) (configurado usando escopos de projeto)
- O app Gemini Enterprise para dispositivos móveis (configurado usando escopos de aplicativo)
- Requisito de lista de permissões para o app Gemini Enterprise para dispositivos móveis: a duração estendida da sessão para o app Gemini Enterprise para dispositivos móveis está disponível apenas na lista de permissões. Para solicitar acesso à lista de permissões durante a versão prévia, entre em contato com seu Google Cloud ponto de contato (POC) de suporte.
- Tipos de escopo: as configurações de sessão precisam ser definidas em
scopedAccessSettingsusando um dos seguintes escopos de cliente:- Escopo do projeto (
restricted_project): especifica o Google Cloud projeto que é proprietário da instância do Looker (Google Cloud Core) (projects/{PROJECT_NUMBER}). Apenas as instâncias do Looker (Google Cloud Core) pertencentes ao projeto designado são afetadas. - Escopo do aplicativo (
restricted_client_application): especifica o aplicativo pelo nome de exibição canôniconame. - Para configurar escopos de aplicativo para o app Gemini Enterprise para dispositivos móveis, você precisa usar explicitamente um ou ambos os seguintes nomes de aplicativo exatos:
"Gemini Enterprise mobile Android""Gemini Enterprise mobile IOS"
- O escopo por ID do cliente OAuth (
clientId) não é compatível com vinculações da federação de identidade de colaboradores e será rejeitado. Você precisa identificar o aplicativo usando o camponame.
- Escopo do projeto (
- Intervalo de duração da sessão: a duração da sessão precisa ser de no mínimo 1 hora (
3600s) e no máximo 90 dias (7776000s). - Requisitos de parâmetro de configurações de sessão:
session_length_enabled: precisa ser definido comotrue.session_length: duração necessária entre 1 hora (3600s) e 90 dias (7776000s).session_reauth_method: precisa ser indefinido ou definido comoLOGIN.use_oidc_max_age: precisa ser indefinido ou definido comofalse.max_inactivity: precisa ser indefinido (ou padrão0s). Os tempos limite de sessão inativa não são compatíveis com vinculaçõesrestricted_projecterestricted_client_application.
- Provedores de identidade com suporte:
- OIDC: requer um provedor OIDC configurado com o fluxo de código de autorização e o escopo
offline_accesspara emitir tokens de atualização ou configurado com o provisionamento do SCIM. - SAML 2.0: requer o provisionamento do SCIM ativado no provedor do pool de força de trabalho.
- OIDC: requer um provedor OIDC configurado com o fluxo de código de autorização e o escopo
- Limite de inatividade do atributo: um limite de inatividade fixo de 24 horas é aplicado. Se Google Cloud não for possível atualizar os atributos do usuário do IdP em 24 horas, a sessão será invalidada e o usuário precisará se autenticar novamente.
- Restrições do Access Context Manager:
- Vinculação organizacional única: as vinculações de duração estendida da sessão para pools de força de trabalho precisam segmentar o principal "todos os pools de força de trabalho" da organização (
principalSet://cloudresourcemanager.googleapis.com/organizations/{ORG_ID}/type/WorkforcePool). Como esse identificador principal federado se aplica a toda a organização em todos os pools de força de trabalho, apenas uma vinculação desse tipo pode existir por organização. Para configurar sessões estendidas para vários projetos do Looker (Google Cloud Core), o app Gemini Enterprise para dispositivos móveis ou uma combinação dos dois, inclua vários blocos de escoporestricted_projecterestricted_client_applicationna listascopedAccessSettingsda vinculação única. - Os níveis de acesso (
access_levels,dry_run_access_levels) não são compatíveis com vinculações de pool de força de trabalho. - O
sessionSettingsde nível superior diretamente noGcpUserAccessBindingnão é compatível com vinculações de pool de força de trabalho. As configurações precisam ser definidas emscopedAccessSettings.activeSettings.sessionSettings.
- Vinculação organizacional única: as vinculações de duração estendida da sessão para pools de força de trabalho precisam segmentar o principal "todos os pools de força de trabalho" da organização (
Configurar o provedor do pool de força de trabalho
Para permitir a duração estendida da sessão, o provedor do pool de força de trabalho precisa ser configurado para oferecer suporte à atualização de atributos em segundo plano. É possível configurar o provedor para usar o protocolo OIDC ou SAML.
Configurar um provedor OIDC
A atualização de atributos em segundo plano para provedores OIDC pode ser processada usando tokens de atualização (escopo offline_access) ou provisionamento do SCIM. Se você estiver usando a atualização de atributos baseada em token:
- No IdP externo, configure um aplicativo OIDC com o fluxo de código de autorização e ative o acesso off-line para que um token de atualização seja retornado.
- Em Google Cloud, adicione
offline_accessaos escopos extras no provedor do pool de força de trabalho do OIDC.
O acesso off-line precisa ser configurado em todos os pools de identidade de colaboradores na sua Google Cloud organização para que a política de duração estendida da sessão tenha o efeito desejado.
gcloud
Se o provedor já tiver escopos extras, inclua-os com offline_access para que não sejam substituídos:
gcloud iam workforce-pools providers update-oidc PROVIDER_ID \
--workforce-pool=WORKFORCE_POOL_NAME \
--location=global \
--web-sso-additional-scopes="offline_access[,EXISTING_ADDITIONAL_SCOPES]"
Substitua:
PROVIDER_ID: o nome do provedor do pool de identidade de colaboradores.WORKFORCE_POOL_NAME: o nome do pool de identidade de colaboradores.EXISTING_ADDITIONAL_SCOPES: todos os escopos extras separados por vírgula configurados anteriormente no provedor. Se você não tiver escopos extras, omita esse parâmetro.
API REST
Envie uma solicitação PATCH para atualizar o provedor. Inclua todos os escopos extras com offline_access:
PATCH https://iam.googleapis.com/v1/locations/global/workforcePools/WORKFORCE_POOL_NAME/providers/PROVIDER_ID?updateMask=oidc.webSsoConfig.additionalScopes
Corpo da solicitação:
{
"oidc": {
"webSsoConfig": {
"additionalScopes": [
"offline_access"
]
}
}
}
Substitua:
WORKFORCE_POOL_NAME: o nome do pool de identidade de colaboradores.PROVIDER_ID: o ID do provedor do pool de identidade de colaboradores.
Configurar um provedor SAML
Para provedores SAML, a atualização de atributos em segundo plano requer o provisionamento do SCIM:
- Configure um locatário do SCIM para o provedor do pool de força de trabalho.
- Configure o provisionamento de usuários e grupos do provedor de identidade SAML para o endpoint do SCIM.
Para instruções detalhadas, consulte Provisionamento do SCIM para a federação de identidade de colaboradores.
Exemplo de configuração de política para o Looker (Google Cloud Core)
Crie um recurso GcpUserAccessBinding que atribua a política de duração estendida da sessão ao pool de força de trabalho da sua organização, definindo o escopo da política para o projeto que hospeda a instância do Looker (Google Cloud Core).
gcloud
Defina a política em um arquivo YAML chamado esl-binding.yaml:
scopedAccessSettings:
- scope:
clientScope:
restrictedProject:
name: projects/PROJECT_NUMBER
activeSettings:
sessionSettings:
sessionLength: 7776000s
sessionLengthEnabled: true
sessionReauthMethod: LOGIN
Crie a vinculação de acesso:
gcloud access-context-manager cloud-bindings create \
--organization=ORG_ID \
--federated-principal="principalSet://cloudresourcemanager.googleapis.com/organizations/ORG_ID/type/WorkforcePool" \
--binding-file="esl-binding.yaml"
Substitua:
ORG_ID: o Google Cloud ID da organização (por exemplo,123456789012).PROJECT_NUMBER: o número do projeto que é proprietário da instância de destino do Looker (Google Cloud Core) (por exemplo,987654321098). Apenas os aplicativos do Looker (Google Cloud Core) pertencentes a esse projeto recebem a duração estendida da sessão.sessionLength: a duração da sessão em segundos seguida pors. Por exemplo,7776000sespecifica uma sessão de 90 dias.sessionLengthEnabled: definido comotrue.sessionReauthMethod: definido comoLOGIN(ou deixado indefinido).
API REST
Envie uma solicitação POST para a API Access Context Manager:
POST https://accesscontextmanager.googleapis.com/v1/organizations/ORG_ID/gcpUserAccessBindings
Corpo da solicitação JSON:
{
"principal": {
"federatedPrincipal": "principalSet://cloudresourcemanager.googleapis.com/organizations/ORG_ID/type/WorkforcePool"
},
"scopedAccessSettings": [
{
"scope": {
"clientScope": {
"restrictedProject": {
"name": "projects/PROJECT_NUMBER"
}
}
},
"activeSettings": {
"sessionSettings": {
"sessionLength": "7776000s",
"sessionLengthEnabled": true,
"sessionReauthMethod": "LOGIN"
}
}
}
]
}
Substitua:
ORG_ID: o Google Cloud ID da organização (por exemplo,123456789012).PROJECT_NUMBER: o número do projeto que é proprietário da instância de destino do Looker (Google Cloud Core) (por exemplo,987654321098). Apenas os aplicativos do Looker (Google Cloud Core) pertencentes a esse projeto recebem a duração estendida da sessão.sessionLength: a duração da sessão em segundos seguida pors. Por exemplo,7776000sespecifica uma sessão de 90 dias.sessionLengthEnabled: definido comotrue.sessionReauthMethod: definido comoLOGIN(ou deixado indefinido).
Exemplo de configuração de política para o app Gemini Enterprise para dispositivos móveis
Crie um recurso GcpUserAccessBinding que atribua a política de duração estendida da sessão ao pool de força de trabalho da sua organização, definindo o escopo da política para o app Gemini Enterprise para dispositivos móveis usando o escopo restricted_client_application. Você precisa identificar os aplicativos usando os nomes de exibição canônicos exatos: "Gemini Enterprise mobile Android" e "Gemini Enterprise mobile IOS".
gcloud
Defina a política em um arquivo YAML chamado esl-app-binding.yaml:
scopedAccessSettings:
- scope:
clientScope:
restrictedClientApplication:
name: "Gemini Enterprise mobile Android"
activeSettings:
sessionSettings:
sessionLength: 7776000s
sessionLengthEnabled: true
sessionReauthMethod: LOGIN
- scope:
clientScope:
restrictedClientApplication:
name: "Gemini Enterprise mobile IOS"
activeSettings:
sessionSettings:
sessionLength: 7776000s
sessionLengthEnabled: true
sessionReauthMethod: LOGIN
Crie a vinculação de acesso:
gcloud access-context-manager cloud-bindings create \
--organization=ORG_ID \
--federated-principal="principalSet://cloudresourcemanager.googleapis.com/organizations/ORG_ID/type/WorkforcePool" \
--binding-file="esl-app-binding.yaml"
Substitua:
ORG_ID: o Google Cloud ID da organização (por exemplo,123456789012).name: precisa ser"Gemini Enterprise mobile Android"ou"Gemini Enterprise mobile IOS". A identificação de aplicativos por ID do cliente OAuth (clientId) não é compatível com pools de força de trabalho.sessionLength: a duração da sessão em segundos seguida pors(entre3600se7776000s).sessionLengthEnabled: definido comotrue.sessionReauthMethod: definido comoLOGIN(ou deixado indefinido).
API REST
Envie uma solicitação POST para a API Access Context Manager:
POST https://accesscontextmanager.googleapis.com/v1/organizations/ORG_ID/gcpUserAccessBindings
Corpo da solicitação JSON:
{
"principal": {
"federatedPrincipal": "principalSet://cloudresourcemanager.googleapis.com/organizations/ORG_ID/type/WorkforcePool"
},
"scopedAccessSettings": [
{
"scope": {
"clientScope": {
"restrictedClientApplication": {
"name": "Gemini Enterprise mobile Android"
}
}
},
"activeSettings": {
"sessionSettings": {
"sessionLength": "7776000s",
"sessionLengthEnabled": true,
"sessionReauthMethod": "LOGIN"
}
}
},
{
"scope": {
"clientScope": {
"restrictedClientApplication": {
"name": "Gemini Enterprise mobile IOS"
}
}
},
"activeSettings": {
"sessionSettings": {
"sessionLength": "7776000s",
"sessionLengthEnabled": true,
"sessionReauthMethod": "LOGIN"
}
}
}
]
}
Substitua:
ORG_ID: o Google Cloud ID da organização (por exemplo,123456789012).name: precisa ser"Gemini Enterprise mobile Android"ou"Gemini Enterprise mobile IOS". A identificação de aplicativos por ID do cliente OAuth (clientId) não é compatível com pools de força de trabalho.sessionLength: a duração da sessão em segundos seguida pors. Por exemplo,7776000sespecifica uma sessão de 90 dias.sessionLengthEnabled: definido comotrue.sessionReauthMethod: definido comoLOGIN(ou deixado indefinido).
Visualizar e listar vinculações
Como a vinculação se aplica a todos os pools de força de trabalho na organização, há no máximo uma vinculação de acesso por organização.
Listar vinculações ativas
Para listar a vinculação de acesso ao pool de força de trabalho na sua organização, use o filtro principal:federatedPrincipal:
gcloud
gcloud access-context-manager cloud-bindings list \
--organization=ORG_ID \
--filter="principal:federatedPrincipal"
API REST
GET https://accesscontextmanager.googleapis.com/v1/organizations/ORG_ID/gcpUserAccessBindings?filter=principal:federated_principal
Conferir detalhes da vinculação
Para conferir os detalhes de uma vinculação de acesso ao pool de força de trabalho específico:
gcloud
gcloud access-context-manager cloud-bindings describe \
--binding=BINDING_NAME
Substitua BINDING_NAME pelo nome completo do recurso da vinculação (por exemplo, organizations/123456789012/gcpUserAccessBindings/b1234567890).
API REST
GET https://accesscontextmanager.googleapis.com/v1/organizations/ORG_ID/gcpUserAccessBindings/BINDING_ID
Substitua:
ORG_ID: o Google Cloud ID da organização (por exemplo,123456789012).BINDING_ID: o ID da vinculação de acesso (por exemplo,b1234567890).
Atualizar uma vinculação de acesso
É possível atualizar uma vinculação de acesso ao pool de força de trabalho para modificar as durações da sessão, adicionar novos escopos de projeto ou aplicativo ou remover escopos atuais.
gcloud
Defina a política atualizada em um arquivo YAML chamado
updated-esl-binding.yaml:scopedAccessSettings: - scope: clientScope: restrictedProject: name: projects/PROJECT_NUMBER activeSettings: sessionSettings: sessionLength: 2592000s sessionLengthEnabled: true sessionReauthMethod: LOGINAplique a política atualizada:
- Substituir configurações de acesso com escopo: para substituir os escopos atuais pela configuração definida em
updated-esl-binding.yaml:
gcloud access-context-manager cloud-bindings update \ --binding=BINDING_NAME \ --binding-file="updated-esl-binding.yaml"- Anexar às configurações atuais: para anexar os escopos definidos em
updated-esl-binding.yamlaos escopos atuais da vinculação sem substituí-los, transmita a flag--append:
gcloud access-context-manager cloud-bindings update \ --binding=BINDING_NAME \ --binding-file="updated-esl-binding.yaml" \ --append- Substituir configurações de acesso com escopo: para substituir os escopos atuais pela configuração definida em
Substitua: * BINDING_NAME: o nome completo do recurso da vinculação (por exemplo, organizations/123456789012/gcpUserAccessBindings/b1234567890). * PROJECT_NUMBER: o número do projeto que é proprietário da instância de destino do Looker (Google Cloud Core).
* sessionLength: a duração atualizada da sessão (por exemplo, 2592000s para 30 dias).
API REST
Envie uma solicitação PATCH para atualizar a vinculação.
- Substituir configurações de acesso com escopo: para substituir os escopos atuais:
PATCH https://accesscontextmanager.googleapis.com/v1/organizations/ORG_ID/gcpUserAccessBindings/BINDING_ID?updateMask=scopedAccessSettings
- Adicionar ao final das configurações atuais: para adicionar novos escopos sem substituir os atuais, defina o parâmetro de consulta
append=true:
PATCH https://accesscontextmanager.googleapis.com/v1/organizations/ORG_ID/gcpUserAccessBindings/BINDING_ID?updateMask=scopedAccessSettings&append=true
Corpo da solicitação JSON:
{
"scopedAccessSettings": [
{
"scope": {
"clientScope": {
"restrictedProject": {
"name": "projects/PROJECT_NUMBER"
}
}
},
"activeSettings": {
"sessionSettings": {
"sessionLength": "2592000s",
"sessionLengthEnabled": true,
"sessionReauthMethod": "LOGIN"
}
}
}
]
}
Substitua:
* ORG_ID: o ID da sua Google Cloud organização (por exemplo, 123456789012).
* BINDING_ID: o ID da vinculação de acesso (por exemplo, b1234567890).
* PROJECT_NUMBER: o número do projeto que é proprietário da instância de destino do Looker (Google Cloud Core).
* sessionLength: a duração atualizada da sessão (por exemplo, 2592000s para 30 dias).
Excluir uma vinculação de acesso
Se você excluir a vinculação de acesso ao pool de força de trabalho, a duração estendida da sessão será desativada para todos os pools de força de trabalho na sua organização.
gcloud
gcloud access-context-manager cloud-bindings delete \
--binding=BINDING_NAME
Substitua BINDING_NAME pelo nome completo do recurso da vinculação.
API REST
Envie uma solicitação DELETE para remover a vinculação:
DELETE https://accesscontextmanager.googleapis.com/v1/organizations/ORG_ID/gcpUserAccessBindings/BINDING_ID
Substitua:
ORG_ID: Google Cloud ID da organização.BINDING_ID: o ID da vinculação de acesso a ser excluída.