Por padrão, as sessões da federação de identidade da força de trabalho têm uma duração máxima de 12 horas. Com a duração estendida da sessão, as organizações podem configurar sessões de longa duração de até 90 dias para clientes do Looker (Google Cloud Core).
Com a duração estendida da sessão, os usuários da sua força de trabalho mantêm uma conexão ininterrupta com o Looker (Google Cloud Core) sem precisar de autenticação diária com seu provedor de identidade externa (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). Para manter a segurança durante sessões estendidas,o Google Cloud sincroniza periodicamente os atributos do usuário e as associações a grupos diretamente do seu 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 no escopo do projeto, configurar seu provedor de 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:
- Vinculação de acessoGoogle Cloud : os administradores definem uma política de duração da sessão usando o Access Context Manager, que é aplicada em toda a organização e em todos os pools de funcionários. Usando o escopo
restricted_project, a política concede sessões estendidas de até 90 dias, afetando apenas as instâncias do Looker (Google Cloud Core) pertencentes a esse projeto. - Sincronização de atributos em segundo plano:
- OIDC: compatível com 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 a grupos do seu IdP externo em segundo plano) ou pelo provisionamento do SCIM. - SAML: para provedores SAML, os atributos de usuário e as associações a grupos são mantidos atualizados usando o provisionamento do SCIM.
- OIDC: compatível com um fluxo de código de autorização do OIDC com o escopo
- Proteção contra obsolescência: 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),o Google Cloud encerra a sessão.
Antes de começar
Antes de configurar a duração estendida da sessão, verifique se você tem as permissões necessárias do Identity and Access Management e as APIs 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 seguintes papéis do IAM:
- Configurar provedores de pool de identidade de colaboradores: Administrador de pool de colaboradores (
roles/iam.workforcePoolAdmin) no pool de colaboradores ou na organização. - Gerenciar vinculações de acesso à nuvem do Access Context Manager: Administrador de vinculação de acesso à nuvem (
roles/accesscontextmanager.gcpAccessAdmin) no nível da organização. Essa função 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 Access Context Manager e 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, confira os requisitos e limitações a seguir:
- Aplicativo compatível: a duração estendida da sessão se aplica exclusivamente ao Looker (Google Cloud Core).
- Escopo obrigatório do projeto (
restricted_project): as configurações da sessão precisam ser configuradas emscopedAccessSettingsusando o escopo do clienterestricted_project, especificando o projeto Google Cloud que é proprietário da instância do Looker (Google Cloud Core) (projects/{PROJECT_NUMBER}).- A política de ESL afeta apenas os aplicativos do Looker (Google Cloud Core) pertencentes ao projeto designado.
- Todos os outros aplicativos (e os aplicativos do Looker (Google Cloud Core) pertencentes a outros projetos) não são afetados pela política.
- 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âmetros 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 estar sem definição (ou o padrão0s). Os tempos limite de sessão inativa não são compatíveis com vinculaçõesrestricted_project.
- Provedores de identidade compatíveis:
- 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: exige que o provisionamento do SCIM esteja ativado no provedor de pool da 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 de 24 horas fixo é aplicado. Se o Google Cloud não puder atualizar os atributos do usuário do IdP em 24 horas, a sessão será invalidada, e o usuário precisará fazer a autenticação 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, só pode haver uma vinculação por organização. Para configurar sessões estendidas em vários projetos do Looker (Google Cloud Core) em pools de colaboradores, inclua vários blocos de escoporestricted_projectna listascopedAccessSettingsde uma única vinculação. - Os níveis de acesso (
access_levels,dry_run_access_levels) não são compatíveis com vinculações de pool de colaboradores. sessionSettingsde nível superior diretamente noGcpUserAccessBindingnão são compatíveis 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 de pool de força de trabalho
Para permitir uma duração de sessão estendida, o provedor do pool da 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 com base em token:
- No IdP externo, configure um aplicativo OIDC com o fluxo do 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 de pool de força de trabalho do OIDC.
O acesso off-line precisa ser configurado em todos os pools de identidades da força de trabalho na sua organização Google Cloud para que a política de duração estendida da sessão tenha o efeito desejado.
gcloud
Se o provedor já tiver outros escopos, 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 da força de trabalho.WORKFORCE_POOL_NAME: o nome do pool de identidade da força de trabalho.EXISTING_ADDITIONAL_SCOPES: outros escopos separados por vírgulas configurados anteriormente no provedor. Se você não tiver outros escopos, omita esse parâmetro.
API REST
Envie uma solicitação PATCH para atualizar o provedor. Inclua todos os escopos adicionais ao lado de 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 da força de trabalho.PROVIDER_ID: o ID do provedor do pool de identidades da força de trabalho.
Configurar um provedor SAML
Para provedores SAML, a atualização em segundo plano dos atributos exige o provisionamento do SCIM:
- Configure um locatário do SCIM para seu provedor de pool de colaboradores.
- Configure o provisionamento de usuários e grupos do provedor de identidade SAML para o endpoint 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 sua 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 ID da organização Google Cloud . Por exemplo,123456789012.PROJECT_NUMBER: o número do projeto que possui a instância de destino do Looker (Google Cloud Core), por exemplo,987654321098. Somente 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.- Defina
sessionLengthEnabledcomotrue. sessionReauthMethod: defina comoLOGINou deixe sem definir.
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 ID da organização Google Cloud . Por exemplo,123456789012.PROJECT_NUMBER: o número do projeto que possui a instância de destino do Looker (Google Cloud Core), por exemplo,987654321098. Somente 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.- Defina
sessionLengthEnabledcomotrue. sessionReauthMethod: defina comoLOGINou deixe sem definir.
Como visualizar e listar vinculações
Como a vinculação se aplica a todos os pools de funcionários da 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 colaboradores 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 a um 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 ID da organização Google Cloud . Por exemplo,123456789012.BINDING_ID: o ID da sua vinculação de acesso (por exemplo,b1234567890).
Atualizar uma vinculação de acesso
É possível atualizar uma vinculação de acesso a um pool de força de trabalho para modificar a duração da sessão, adicionar ou remover escopos de projeto.
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 limitado: para substituir os escopos de projeto 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"- Adicionar às configurações atuais: para adicionar os escopos de projeto definidos em
updated-esl-binding.yamlaos escopos de projeto 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 limitado: para substituir os escopos de projeto atuais pela configuração definida em
Substitua o seguinte:
* BINDING_NAME: o nome completo do recurso da vinculação (por exemplo, organizations/123456789012/gcpUserAccessBindings/b1234567890).
* PROJECT_NUMBER: o número do projeto 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 limitado: para substituir os escopos de projeto atuais:
PATCH https://accesscontextmanager.googleapis.com/v1/organizations/ORG_ID/gcpUserAccessBindings/BINDING_ID?updateMask=scopedAccessSettings
- Anexar às configurações atuais: para anexar novos escopos de projeto 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 o seguinte:
* ORG_ID: ID da organização Google Cloud (por exemplo, 123456789012).
* BINDING_ID: ID da sua vinculação de acesso (por exemplo, b1234567890).
* PROJECT_NUMBER: 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: o ID da organização Google Cloud .BINDING_ID: o ID da vinculação de acesso a ser excluída.