Configurar o SCIM no Okta

Este documento descreve como configurar um locatário SCIM em um pool de identidade de colaboradores. Para saber mais sobre o SCIM, consulte Provisionamento do SCIM para a federação de identidade de colaboradores.

Cada pool de identidade de colaboradores oferece suporte a apenas um locatário SCIM. Para configurar um novo locatário SCIM em um pool que já tem um, primeiro é necessário excluir o locatário atual.

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

Para configurar System for Cross-domain Identity Management (SCIM), faça o seguinte:
  1. Configurar um locatário e um token SCIM no 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 SCIM no Google Cloud

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

  1. Criar um locatário 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 o locatário SCIM.
    • WORKFORCE_POOL_ID: o ID do pool de colaboradores que você criou anteriormente neste documento.
    • PROVIDER_ID: o ID do provedor do pool de identidade de colaboradores que você criou anteriormente neste documento.
    • SCIM_TENANT_DISPLAY_NAME: um nome de exibição para o locatário SCIM.
    • SCIM_TENANT_DESCRIPTION: uma descrição para o locatário SCIM.
    • CLAIM_MAPPING: uma lista separada por vírgulas de mapeamentos de atributos. Para a lista estendida de atributos de mapeamento, consulte Mapear tokens e atributos 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 SCIM precisa se referir exclusivamente às mesmas identidades mapeadas no atributo google.subject no provedor do pool de identidade de colaboradores usando a flag --attribute-mapping. Depois que o locatário SCIM é criado, não é possível atualizar o mapeamento de declarações. Para substituí-lo, você pode excluir o locatário SCIM e criar um novo imediatamente. Para saber mais sobre as considerações para 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 é 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ê precisa desse UID para definir uma política de permissão do IAM no locatário SCIM mais tarde neste documento.
  3. Criar 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 global
        

    Substitua:

    • SCIM_TOKEN_ID: um ID para o token 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 SCIM
    • PROVIDER_ID: o ID do provedor do pool de identidade de colaboradores
  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 securityToken campo. Você precisa fornecer esse token de segurança ao seu IdP. O token de segurança é mostrado apenas nessa saída, e se for perdido, você precisará criar um novo token SCIM.

    2. Para verificar se 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, você poderá pular essa etapa.

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

Ao provisionar grupos no IdP, verifique se o nome de exibição de cada grupo, conforme fornecido em o displayName campo, é exclusivo em um locatário 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, no aplicativo Okta atual, faça o seguinte:

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

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

      1. Clique no nome do aplicativo criado usando o modelo da federação de identidade de colaboradores do Google Cloud.
      2. Na guia General, faça o seguinte:

        1. No painel App Settings, clique em Edit.
        2. No campo Tenant, insira o ID do locatário recebido da CLI gcloud.
        3. Clique em Concluído.
    • Se você quiser criar um novo aplicativo, faça o seguinte:

      1. Clique em Procurar no catálogo de apps.
      2. No campo Search, insira Google Cloud Workforce Identity Federation e selecione a integração Google Cloud Workforce Identity Federation nos resultados.
      3. Clique em Adicionar integração.

        1. No campo Application, insira um nome para o app.
        2. No campo Tenant, insira o ID do locatário recebido da CLI gcloud.
        3. Clique em Concluído.
  4. Na guia Provisioning, faça o seguinte:

    1. No painel Integration, clique em Edit.

      1. No campo API Token, insira o token SCIM recebido do Google Cloud.
      2. Para confirmar a validade do token de API, clique em Test Credentials.
      3. Selecione Import Groups.
      4. Clique em Salvar.
    2. No painel To App, clique em Edit.

      1. Selecione Create Users, Update User Attributes e Deactivate users.
      2. Clique em Salvar.

Atualizar o provedor para ativar o SCIM

Para ativar o SCIM para 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 de colaboradores
  • 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 de colaboradores
  • 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 tokens e atributos SCIM

É necessário mapear atributos de forma consistente, tanto no provedor do pool de identidade de colaboradores quanto no locatário SCIM configurado para o provedor. Para o provedor do pool de identidade de colaboradores, use a flag --attribute-mapping e, para o locatário SCIM, use a flag --claim-mapping. O atributo do IdP mapeado para google.subject dos usuários precisa se referir exclusivamente à mesma identidade, seja definida em um token ou em um mapeamento 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 SCIM:

Atributo do Google Mapeamento do provedor do pool de identidade de colaboradores Mapeamento do locatário 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 verifique se você atualizou o provedor com --scim-usage=enabled-for-groups N/A group.displayName

Verificar a sincronização do SCIM

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

Verificar a sincronização do usuário

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 do grupo

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

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

Observação:para receber 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 valores reais.

Forçar a exclusão de um locatário SCIM

Para forçar a exclusão de um locatário SCIM, faça o seguinte:

  1. Se --scim-usage=enabled-for-groups estiver definido para o 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 de colaboradores
    • WORKFORCE_POOL_ID: o ID do pool de colaboradores
    • LOCATION: o local do pool de colaboradores

  2. Exclua o locatário 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 SCIM a ser excluído
    • WORKFORCE_POOL_ID: o ID do pool de colaboradores
    • PROVIDER_ID: o ID do provedor do pool de identidade de colaboradores
    Para saber mais sobre o SCIM, incluindo a exclusão de locatários SCIM, consulte Suporte ao SCIM.

A seguir