Configurar o SCIM no Okta

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 da força de trabalho aceita apenas um locatário do SCIM. Para configurar um novo locatário do SCIM em um pool que já tem um, primeiro exclua permanentemente o locatário atual.

A flag --claim-mapping de um locatário do SCIM pode conter apenas expressões específicas da Common Expression Language (CEL). Para saber quais expressões são compatíveis, consulte Mapear atributos de token e SCIM.

Para configurar o Sistema para gerenciamento de identidade entre domínios (SCIM), faça o seguinte:
  1. Configurar um locatário e um token do SCIM em Google Cloud
  2. Configurar o SCIM no Okta
  3. Atualizar o provedor para ativar o SCIM
  4. Verificar a sincronização do SCIM

Configurar um locatário e um token do SCIM em Google Cloud

Para configurar um locatário do SCIM em Google Cloud, faça o seguinte:

  1. Crie 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 do 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 seu locatário do SCIM.
    • SCIM_TENANT_DESCRIPTION: uma descrição para seu locatário do SCIM.
    • CLAIM_MAPPING: uma lista separada por vírgulas de mapeamentos de atributos. Para conferir a lista completa de atributos de mapeamento, consulte Mapear atributos de token e SCIM. O mapeamento a seguir é recomendado para o Gemini Enterprise:
      google.subject=user.emails[0].value.lowerAscii(),google.group=group.displayName

      O atributo google.subject mapeado no locatário do SCIM precisa se referir de forma exclusiva às mesmas identidades mapeadas no atributo google.subject no provedor de pool de identidades da força de trabalho usando a flag --attribute-mapping. Depois que o locatário do SCIM é criado, não é possível atualizar o mapeamento de declarações. Para substituir, exclua permanentemente o locatário do SCIM e crie um novo imediatamente. Para saber mais sobre as considerações ao usar o SCIM, consulte Suporte ao SCIM.

  2. Quando o comando for concluído, faça o seguinte:

    1. No campo baseUri da saída, salve todo o URI, que está formatado como https://iamscim.googleapis.com/v1alpha1/tenants/SCIM_TENANT_UID. Você precisa fornecer esse URI ao seu IdP.
    2. Além disso, salve apenas o SCIM_TENANT_UID do URI. Você vai precisar desse UID para definir uma política de permissão do IAM no locatário do SCIM mais adiante neste documento.
  3. Crie um token do 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 global
        

    Substitua:

    • SCIM_TOKEN_ID: um ID para o token do SCIM
    • DISPLAY_NAME: o nome de exibição do token SCIM
    • WORKFORCE_POOL_ID: o ID do pool de colaboradores
    • SCIM_TENANT_ID: o ID do locatário do SCIM
    • PROVIDER_ID: o ID do provedor do pool de identidade da força de trabalho
  4. Quando o comando gcloud iam workforce-pools providers scim-tenants tokens create for concluído, faça o seguinte:

    1. Na saída, salve o valor de SCIM_TOKEN no campo securityToken. Você precisa fornecer esse token de segurança ao seu IdP. O token de segurança é mostrado apenas nessa saída. Se ele for perdido, será necessário criar um novo token do SCIM.

    2. Para verificar se o SCIM_TOKEN foi rejeitado pela política da sua 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.

  5. Defina uma política de permissão do IAM no locatário e no token do SCIM. Se o comando curl em 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.scimSyncer
        

    Substitua:

    • 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 Okta

Para configurar o SCIM no Okta, faça o seguinte no aplicativo Okta atual:

  1. Faça login no Admin Console do Okta.
  2. Acesse Aplicativos > Aplicativos.
  3. Selecione ou crie um aplicativo:

    • Se você quiser selecionar um aplicativo, faça o seguinte:

      1. Clique no nome do aplicativo que você criou usando o modelo da federação de identidade de colaboradores do Google Cloud.
      2. Na guia Geral, faça o seguinte:

        1. No painel Configurações do app, clique em Editar.
        2. No campo Locatário, insira o ID do locatário obtido na CLI gcloud.
        3. Clique em Concluído.
    • Se quiser criar um novo aplicativo, faça o seguinte:

      1. Clique em Procurar no catálogo de apps.
      2. No campo Pesquisar, insira Federação de identidade de colaboradores do Google Cloud e selecione a integração Federação de identidade de colaboradores do Google Cloud nos resultados.
      3. Clique em Adicionar integração.

        1. No campo Aplicativo, insira um nome para seu app.
        2. No campo Locatário, insira o ID do locatário obtido na CLI gcloud.
        3. Clique em Concluído.
  4. Na guia Provisionamento, faça o seguinte:

    1. No painel Integração, clique em Editar.

      1. No campo Token da API, insira o token SCIM que você recebeu de Google Cloud.
      2. Para confirmar a validade do token de API, clique em Testar credenciais.
      3. Selecione Importar grupos.
      4. Clique em Salvar.
    2. No painel Para app, clique em Editar.

      1. Selecione Criar usuários, Atualizar atributos do usuário e Desativar usuários.
      2. Clique em Salvar.

Atualizar o provedor para ativar o SCIM

Para ativar o SCIM em um provedor, faça o seguinte:

OIDC

      gcloud iam workforce-pools providers update-oidc PROVIDER_ID \
          --workforce-pool=WORKFORCE_POOL_ID \
          --location=LOCATION \
          --scim-usage=enabled-for-groups
    

Substitua:

  • PROVIDER_ID: o ID do provedor do pool de identidade da força de trabalho
  • WORKFORCE_POOL_ID: o ID do pool de colaboradores
  • LOCATION: o local do pool de colaboradores

SAML

      gcloud iam workforce-pools providers update-saml PROVIDER_ID \
          --workforce-pool=WORKFORCE_POOL_ID \
          --location=LOCATION \
          --scim-usage=enabled-for-groups
    

Substitua:

  • PROVIDER_ID: o ID do provedor do pool de identidade da força de trabalho
  • WORKFORCE_POOL_ID: o ID do pool de colaboradores
  • LOCATION: o local do pool de colaboradores

Para verificar a sincronização do SCIM, consulte Verificar a sincronização do SCIM.

Mapear atributos de token e SCIM

Você precisa mapear atributos de forma consistente, tanto no provedor do pool de identidades de colaboradores quanto no locatário do SCIM configurado para o provedor. Para o provedor de pool de identidades de colaboradores, use a flag --attribute-mapping e, para o locatário do SCIM, use a flag --claim-mapping. O atributo do IdP mapeado para google.subject dos usuários precisa se referir exclusivamente à mesma identidade, seja ela definida em um token ou em um mapeamento do SCIM. Para saber mais sobre o mapeamento de atributos ao usar o SCIM, consulte a seção Suporte ao SCIM. A tabela a seguir mostra como mapear atributos em declarações de token e atributos do SCIM:

Atributo do Google Mapeamento de provedor de pool de identidade de colaboradores Mapeamento de locatário do SCIM
google.subject assertion.sub user.externalId
google.subject assertion.subject user.userName
google.subject assertion.subject.lowerAscii() user.userName.lowerAscii()
google.subject assertion.preferred_username user.userName
google.subject assertion.preferred_username.lowerAscii() user.userName.lowerAscii()
google.subject assertion.email user.emails[0].value
google.subject assertion.email.lowerAscii() user.emails[0].value.lowerAscii()
google.group atualize seu provedor com --scim-usage=enabled-for-groups N/A group.displayName

Verificar a sincronização do SCIM

Depois de configurar o SCIM, use curl para verificar se os usuários e grupos estão sendo sincronizados corretamente com o Google Cloud. Esses comandos exigem um token SCIM válido e seu ID de locatário do SCIM.

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 dele 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 associação ao grupo

Para verificar se um usuário específico é membro de um grupo, use um filtro que especifique o ID do grupo e 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 assinante:

{
  "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 membro:

{
  "schemas": ["urn:ietf:params:scim:api:messages:2.0:ListResponse"],
  "totalResults": 0,
  "Resources": []
}

Observação:para conseguir o GROUP_ID e o 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 seus 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:

  1. Se --scim-usage=enabled-for-groups estiver definido para seu provedor, desative-o na configuração do provedor:
              gcloud iam workforce-pools providers update-oidc PROVIDER_ID \
                  --workforce-pool=WORKFORCE_POOL_ID \
                  --location=LOCATION \
                  --scim-usage=SCIM_USAGE_UNSPECIFIED
            

    Substitua:

    • PROVIDER_ID: o ID do provedor do pool de identidade da força de trabalho
    • WORKFORCE_POOL_ID: o ID do pool de colaboradores
    • LOCATION: o local do pool de colaboradores

  2. 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=global
    

    Substitua:

    • SCIM_TENANT_ID: o ID do locatário do SCIM a ser excluído
    • WORKFORCE_POOL_ID: o ID do pool de colaboradores
    • PROVIDER_ID: o ID do provedor do pool de identidade da força de trabalho
    Para saber mais sobre o SCIM, incluindo a exclusão de locatários do SCIM, consulte Suporte ao SCIM.

A seguir