Neste documento, descrevemos como configurar um locatário do SCIM em um pool de identidades de colaboradores. Para saber mais sobre o SCIM, consulte Provisionamento do SCIM para a federação de identidade de colaboradores.
Cada pool de identidades de colaboradores é compatível com apenas um locatário do SCIM. Para configurar um novo locatário do SCIM em um pool que já tem um, primeiro é necessário excluir permanentemente o locatário atual.
A flag --claim-mapping de um locatário do SCIM só pode conter expressões específicas da Common Expression Language (CEL). Para saber quais expressões são compatíveis, consulte Mapeamento de declarações.
Verifique se o IdP fornece valores exclusivos e não vazios para atributos mapeados para
google.subject e google.group. A sincronização de valores duplicados falha com um erro HTTP 409 Conflict, e valores nulos ou vazios falham com um erro HTTP 400 Bad Request. Para mais
informações, consulte Suporte ao SCIM.
Para configurar o Sistema de gerenciamento de identidade entre domínios (SCIM, na sigla em inglês), faça o seguinte:
- Configurar um locatário e um token do SCIM no Google Cloud
- Configurar o SCIM no Microsoft Entra ID
- Atualizar o provedor para ativar o SCIM
- Verificar a sincronização do SCIM
Configurar um locatário e um token do SCIM no Google Cloud
Para configurar um locatário do SCIM no Google Cloud, faça o seguinte:
-
Criar um locatário do SCIM.
gcloud iam workforce-pools providers scim-tenants create SCIM_TENANT_ID \ --workforce-pool="WORKFORCE_POOL_ID" \ --provider="PROVIDER_ID" \ --display-name="SCIM_TENANT_DISPLAY_NAME" \ --description="SCIM_TENANT_DESCRIPTION" \ --claim-mapping="CLAIM_MAPPING" \ --location="global"Substitua:
SCIM_TENANT_ID: um ID para seu locatário do SCIM.WORKFORCE_POOL_ID: o ID do pool de força de trabalho que você criou anteriormente neste documento.PROVIDER_ID: o ID do provedor de pool de identidade de colaboradores que você criou anteriormente neste documento.SCIM_TENANT_DISPLAY_NAME: um nome de exibição para o locatário do SCIM.SCIM_TENANT_DESCRIPTION: uma descrição para o locatário do SCIM.CLAIM_MAPPING: uma lista separada por vírgulas de mapeamentos de atributos. Para ver a lista estendida de atributos de mapeamento, consulte Mapeamento de declarações. O mapeamento a seguir é recomendado para o Gemini Enterprise:google.subject=user.emails[0].value.lowerAscii(),google.group=group.externalIdO atributo
google.subjectque você mapeia no locatário do SCIM precisa se referir exclusivamente às mesmas identidades mapeadas no atributogoogle.subjectno provedor do pool de identidades de colaboradores usando a flag--attribute-mapping. Depois que o locatário do SCIM for criado, não será possível atualizar o mapeamento de declarações. Para substituí-lo, exclua permanentemente o locatário do SCIM e crie um novo imediatamente. Para saber mais sobre as considerações para usar o SCIM, consulte Suporte ao SCIM.
-
Quando o comando for concluído, faça o seguinte:
-
No campo
baseUrida saída, salve todo o URI, que está formatado comohttps://iamscim.googleapis.com/v1alpha1/tenants/SCIM_TENANT_UID. Você precisa fornecer esse URI ao IdP. -
Além disso, do URI, salve apenas o
SCIM_TENANT_UID. Você vai precisar desse UID para definir uma política de permissão do IAM no locatário do SCIM mais adiante neste documento.
-
No campo
-
Crie um token SCIM:
gcloud iam workforce-pools providers scim-tenants tokens create SCIM_TOKEN_ID \ --display-name DISPLAY_NAME \ --scim-tenant SCIM_TENANT_ID \ --workforce-pool WORKFORCE_POOL_ID \ --provider PROVIDER_ID \ --location globalSubstitua:
SCIM_TOKEN_ID: um ID para o token SCIMDISPLAY_NAME: o nome de exibição do token SCIM.WORKFORCE_POOL_ID: o ID do pool de colaboradoresSCIM_TENANT_ID: o ID do locatário do SCIM.PROVIDER_ID: o ID do provedor do pool de identidade de colaboradores
-
Quando o comando
gcloud iam workforce-pools providers scim-tenants tokens createfor concluído, faça o seguinte:-
Na saída, salve o valor de
SCIM_TOKENno camposecurityToken. Você precisa fornecer esse token de segurança ao seu IdP. O token de segurança é exibido apenas nessa saída. Se ele for perdido, você precisará criar um novo token SCIM. -
Para verificar se
SCIM_TOKENfoi rejeitado pela política da organização, execute o seguinte comando:curl -v -H "Authorization: Bearer SCIM_TOKEN" https://iamscim.googleapis.com/v1alpha1/tenants/SCIM_TENANT_UID/Users
Se o comando falhar com um erro relacionado a permissões, execute
gcloud organizations add-iam-policy-binding, descrito em uma etapa posterior. Se o comando for bem-sucedido, pule essa etapa.
-
-
Defina uma política de permissão do IAM no locatário e no token do SCIM. Se o comando
curlem uma etapa anterior falhou com um erro relacionado a permissões, execute o seguinte comando:gcloud organizations add-iam-policy-binding ORGANIZATION_ID \ --member=serviceAccount:SERVICE_AGENT_EMAIL \ --role roles/iam.scimSyncerSubstitua:
- ORGANIZATION_ID: o ID da organização.
- SERVICE_AGENT_EMAIL: o endereço de e-mail do agente de serviço. O endereço de e-mail está no seguinte formato:
o-ORGANIZATION_ID-SCIM_TENANT_UID@gcp-sa-iamscim.iam.gserviceaccount.com. SCIM_TENANT_UID é retornado quando você cria o locatário do SCIM.
Ao provisionar grupos no IdP, verifique se o nome de exibição de cada grupo, conforme fornecido no
campo displayName, é exclusivo em um locatário do SCIM. Para saber mais sobre grupos e
SCIM no Microsoft Entra ID, consulte
Grupos.
Configurar o SCIM no Microsoft Entra ID
Para configurar o SCIM no Microsoft Entra ID, faça o seguinte:
- Abra o portal do Azure e faça login como usuário com privilégios de administrador global.
- Selecione Microsoft Entra ID > Apps empresariais.
- Clique em Novo aplicativo.
- Em Procurar na galeria de apps do Microsoft Entra, clique em Criar seu próprio aplicativo.
-
No painel Criar seu próprio aplicativo que aparece, faça o seguinte:
- Em Qual é o nome do seu app, insira o nome do seu app.
- Selecione Integrar outros apps que você não encontra na galeria (não galeria).
- Para criar o app, clique em Criar.
-
No aplicativo, faça o seguinte:
- Na seção Gerenciar, clique em Provisionamento.
- No painel à direita, clique em Nova configuração.
-
Em Credenciais de administrador, no URL do locatário, insira o URL do SCIM que você recebeu ao criar o locatário do SCIM, seguido de
?aadOptscim062020. É necessário anexar?aadOptscim062020ao final do URI base.Esse parâmetro de consulta é exigido pelo Microsoft Entra ID para garantir que as solicitações PATCH do SCIM estejam em conformidade com os padrões RFC do SCIM. Para mais detalhes, consulte a documentação da Microsoft.
O URL final do locatário no Microsoft Entra ID precisa estar no seguinte formato:
https://iamscim.googleapis.com/v1alpha1/tenants/SCIM_TENANT_UID?aadOptscim062020
Substitua
SCIM_TENANT_UIDpelo UID do locatário do SCIM. - Em Token secreto, insira o token secreto que você recebeu ao criar o token SCIM.
- Para testar a configuração do SCIM com a federação de identidade de colaboradores, clique em Testar conexão.
- Para salvar a configuração, clique em Criar.
-
Na seção Gerenciar, faça o seguinte:
- Clique em Mapeamento de atributos.
- Clique em Provisionar usuários do Microsoft Entra ID.
-
Na página Mapeamento de atributos, faça o seguinte:
-
Na tabela Mapeamentos de atributos, encontre a linha de externalId e clique em Editar.
Na página Editar atributos, faça o seguinte:
-
Na lista suspensa Atributo de origem, selecione
objectId. - Clique em OK.
-
Na lista suspensa Atributo de origem, selecione
- Para salvar o mapeamento de atributos, clique em Salvar.
-
Na tabela Mapeamentos de atributos, encontre a linha de externalId e clique em Editar.
Na página Editar atributos, faça o seguinte:
Atualizar o provedor para ativar o SCIM
Para ativar o SCIM em um provedor, defina a flag --scim-usage com base no destino do produto:
-
Ativado para grupos (
enabled-for-groups): usado para o Gemini Enterprise. Usa grupos sincronizados com o SCIM para autorização do IAM e avaliação de políticas. Os atributos do usuário continuam sendo extraídos dos tokens de login do IdP. -
Ativado para usuários e grupos (
enabled-for-users-groups): usado para o Looker (pré-lançamento). Usa dados de usuários e grupos sincronizados com o SCIM como a principal fonte de declarações para autorização do IAM e fluxos de trabalho de login do OAuth.
Ativar o SCIM para grupos (Gemini Enterprise)
OIDC
gcloud iam workforce-pools providers update-oidc PROVIDER_ID \
--workforce-pool=WORKFORCE_POOL_ID \
--location=global \
--scim-usage=enabled-for-groups
Substitua:
PROVIDER_ID: o ID do provedor do pool de identidade de colaboradoresWORKFORCE_POOL_ID: o ID do pool de colaboradores
SAML
gcloud iam workforce-pools providers update-saml PROVIDER_ID \
--workforce-pool=WORKFORCE_POOL_ID \
--location=global \
--scim-usage=enabled-for-groups
Substitua:
PROVIDER_ID: o ID do provedor do pool de identidade de colaboradoresWORKFORCE_POOL_ID: o ID do pool de colaboradores
Ativar o SCIM para usuários e grupos (Looker) (pré-lançamento)
OIDC
gcloud iam workforce-pools providers update-oidc PROVIDER_ID \
--workforce-pool=WORKFORCE_POOL_ID \
--location=global \
--scim-usage=enabled-for-users-groups
Substitua:
PROVIDER_ID: o ID do provedor do pool de identidade de colaboradoresWORKFORCE_POOL_ID: o ID do pool de colaboradores
SAML
gcloud iam workforce-pools providers update-saml PROVIDER_ID \
--workforce-pool=WORKFORCE_POOL_ID \
--location=global \
--scim-usage=enabled-for-users-groups
Substitua:
PROVIDER_ID: o ID do provedor do pool de identidade de colaboradoresWORKFORCE_POOL_ID: o ID do pool de colaboradores
Para verificar a sincronização do SCIM, consulte Verificar a sincronização do SCIM.
Mapeamento de declarações
Ao configurar o SCIM, você define mapeamentos de declarações (--claim-mapping) no locatário do SCIM para mapear atributos de usuário e grupo do SCIM para atributos do Google.
Atributos do Google Cloud compatíveis com o mapeamento de declarações
A tabela a seguir lista os atributos do Google Cloud que podem ser mapeados no locatário do SCIM (--claim-mapping) usando a Common Expression Language (CEL):
| AtributoGoogle Cloud | Requisito | Descrição | Expressões e limites aceitos |
|---|---|---|---|
google.subject |
Obrigatório |
Identificador exclusivo do usuário que está sendo autenticado. O atributo do IdP usado para preencher |
Restrito às seguintes expressões de base (ou com .lowerAscii()):
Tamanho máximo: 127 bytes. Observação:esse mapeamento é imutável depois que o locatário do SCIM é criado. Para atualizá-lo, é necessário excluir permanentemente e recriar o locatário do SCIM. |
google.group |
Obrigatório para grupos do SCIM | Identificador exclusivo da associação ao grupo sincronizada usando o SCIM. | Restrito às seguintes expressões de base (ou com .lowerAscii()):
Observação:esse mapeamento é imutável depois que o locatário do SCIM é criado. Para atualizá-lo, é necessário excluir permanentemente e recriar o locatário do SCIM. |
google.display_name |
Opcional | Um atributo que define o nome do usuário conectado no console do Google Cloud . Ele não pode ser usado em políticas de permissão do IAM. | É mapeado para um atributo de string (como user.displayName ou user.name.formatted). Tamanho máximo: 100 bytes. |
google.profile_photo |
Opcional | Um URL da foto em miniatura do usuário que fica visível como a foto do perfil no console do Google Cloud . Ele não pode ser usado em políticas de permissão do IAM. | Precisa ser avaliada como uma string de URL válida (como user.photos.filter(p, p.type == 'thumbnail')[0].value ou user.photos[0].value). |
google.email |
Opcional | Um atributo usado para mapear endereços de e-mail do IdP para produtos integrados usando a integração de cliente OAuth da federação de identidade de colaboradores. Ele não pode ser usado em políticas de permissão do IAM. | Mapeia para um atributo de e-mail (como user.emails.filter(e, e.type == 'work')[0].value ou user.emails[0].value). |
google.posix_username |
Opcional | Uma string de nome de usuário exclusiva compatível com POSIX usada para SSH no navegador e Login do SO com a federação de identidade de colaboradores. Esse atributo não pode ser usado nas políticas de permissão do IAM. | O tamanho máximo é de 32 caracteres. |
attribute.KEY |
Opcional |
Atributos personalizados do IdP que podem ser usados para definir sua estratégia de autorização em uma política de permissão do IAM. Substitua KEY pelo nome do atributo que você quer usar. Por exemplo, é possível definir um atributo personalizado como |
Até 50 regras de mapeamento de atributos personalizados. Tamanho máximo por regra: 256 caracteres. |
Exemplos de mapeamentos para consistência de assunto
Conforme descrito em Atributos compatíveis com o mapeamento de declarações,
o atributo do IdP subjacente usado para preencher google.subject precisa ser idêntico no
mapeamento do provedor (--attribute-mapping) e no locatário do SCIM (--claim-mapping).
A tabela a seguir mostra exemplos de referência para o Microsoft Entra ID:
| Atributo do Google | Mapeamento de provedor de pool de identidade de colaboradores | Mapeamento de locatário do SCIM |
|---|---|---|
google.subject |
assertion.oid |
user.externalId |
google.subject |
assertion.attributes['http://schemas.microsoft.com/identity/claims/objectidentifier'][0] |
user.externalId |
google.subject |
assertion.email |
user.emails[0].value |
google.subject |
assertion.attributes['http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress'][0] |
user.emails[0].value |
google.subject |
assertion.email.lowerAscii() |
user.emails[0].value.lowerAscii() |
google.subject |
assertion.attributes['http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress'][0].lowerAscii() |
user.emails[0].value.lowerAscii() |
google.subject |
assertion.preferred_username |
user.userName |
google.subject |
assertion.attributes['http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name'][0] |
user.userName |
google.subject |
assertion.preferred_username.lowerAscii() |
user.userName.lowerAscii() |
google.subject |
assertion.attributes['http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name'][0].lowerAscii() |
user.userName.lowerAscii() |
Verificar a sincronização do SCIM
Depois de configurar o SCIM, use curl para consultar o
endpoint do serviço SCIM do IAM
(iamscim.googleapis.com) e verificar se os usuários e grupos estão
sincronizando com o Google Cloud. Esses comandos exigem um token SCIM válido e
o UID do locatário do SCIM. O serviço iamscim.googleapis.com
implementa o protocolo SCIM 2.0 (RFC 7644). Para detalhes sobre
endpoints compatíveis, filtros de consulta e limitações, consulte Endpoints compatíveis e
não compatíveis e
Limitações de recursos do protocolo.
Verificar a sincronização de usuários
Para verificar se um usuário foi sincronizado corretamente, pesquise o userName dele usando o seguinte filtro:
curl -H "Authorization: Bearer SCIM_TOKEN" \ "https://iamscim.googleapis.com/v1alpha1/tenants/SCIM_TENANT_UID/Users?filter=userName%20eq%20%22USER_NAME%22"
Exemplo de resposta:
{
"schemas": ["urn:ietf:params:scim:api:messages:2.0:ListResponse"],
"totalResults": 1,
"Resources": [
{
"id": "USER_ID",
"userName": "USER_NAME",
...
}
]
}
Verificar a sincronização de grupos
Para verificar se um grupo foi sincronizado corretamente, pesquise o displayName do grupo usando o seguinte filtro:
curl -H "Authorization: Bearer SCIM_TOKEN" \ "https://iamscim.googleapis.com/v1alpha1/tenants/SCIM_TENANT_UID/Groups?filter=displayName%20eq%20%22GROUP_NAME%22"
Exemplo de resposta:
{
"schemas": ["urn:ietf:params:scim:api:messages:2.0:ListResponse"],
"totalResults": 1,
"Resources": [
{
"id": "GROUP_ID",
"displayName": "GROUP_NAME",
...
}
]
}
Verificar a participação no grupo
Para verificar se um usuário específico é membro de um grupo, use um filtro que especifique o ID do grupo e o ID do usuário.
curl -H "Authorization: Bearer SCIM_TOKEN" \ "https://iamscim.googleapis.com/v1alpha1/tenants/SCIM_TENANT_UID/Groups?filter=id%20eq%20%22GROUP_ID%22%20and%20members%20eq%20%22USER_ID%22"
Exemplo de resposta se o usuário for um membro:
{
"schemas": ["urn:ietf:params:scim:api:messages:2.0:ListResponse"],
"totalResults": 1,
"Resources": [
{
"id": "GROUP_ID",
"displayName": "GROUP_NAME",
...
}
]
}
Exemplo de resposta se o usuário não for um membro:
{
"schemas": ["urn:ietf:params:scim:api:messages:2.0:ListResponse"],
"totalResults": 0,
"Resources": []
}
Observação:para receber GROUP_ID e USER_ID, primeiro encontre o grupo e o usuário usando os filtros displayName e userName. Os IDs são retornados no campo id da resposta. Substitua SCIM_TOKEN, SCIM_TENANT_UID, USER_NAME, GROUP_NAME, GROUP_ID e USER_ID pelos valores reais.
Forçar a exclusão de um locatário do SCIM
Para forçar a exclusão de um locatário do SCIM, faça o seguinte:
-
Se
--scim-usage=enabled-for-groupsou--scim-usage=enabled-for-users-groupsestiver definido para seu provedor, desative-o na configuração do provedor:OIDC
gcloud iam workforce-pools providers update-oidc PROVIDER_ID \ --workforce-pool=WORKFORCE_POOL_ID \ --location=global \ --scim-usage=SCIM_USAGE_UNSPECIFIEDSubstitua:
PROVIDER_ID: o ID do provedor do pool de identidade de colaboradoresWORKFORCE_POOL_ID: o ID do pool de colaboradores
SAML
gcloud iam workforce-pools providers update-saml PROVIDER_ID \ --workforce-pool=WORKFORCE_POOL_ID \ --location=global \ --scim-usage=SCIM_USAGE_UNSPECIFIEDSubstitua:
PROVIDER_ID: o ID do provedor do pool de identidade de colaboradoresWORKFORCE_POOL_ID: o ID do pool de colaboradores
- Exclua o locatário do SCIM:
gcloud iam workforce-pools providers scim-tenants delete SCIM_TENANT_ID \ --workforce-pool=WORKFORCE_POOL_ID \ --provider=PROVIDER_ID \ --hard-delete \ --location=globalSubstitua:
SCIM_TENANT_ID: o ID do locatário do SCIM a ser excluído.WORKFORCE_POOL_ID: o ID do pool de colaboradoresPROVIDER_ID: o ID do provedor do pool de identidade de colaboradores
A seguir
- Resolver problemas de provisionamento do SCIM
- Excluir os usuários da federação de identidade de colaboradores e respectivos dados
- Revogar sessões de usuários da federação de identidade de colaboradores
- Saiba quais produtos do Google Cloud são compatíveis com a federação de identidade de colaboradores
- Configurar o acesso do usuário ao console (federado)