Integração SCIM personalizada com o Snowflake

As integrações SCIM personalizadas permitem aos usuários construir seus próprios aplicativos para fazer interface com seu provedor de identidade para fornecer, mapear e gerenciar usuários e funções para o Snowflake.

Atualmente, integrações SCIM personalizadas têm suporte para provedores de identidade diferentes de Okta e Microsoft Azure AD.

Após criar seu aplicativo SCIM, siga o procedimento abaixo para criar uma integração de segurança do Snowflake e gerar um token de autorização SCIM API. Salve o token de autorização e inclua-o no cabeçalho da solicitação SCIM API, conforme descrito em Como fazer uma solicitação de API SCIM.

Limitações

  • O Snowflake suporta um máximo de 500 solicitações simultâneas por conta, por ponto de extremidade SCIM (por exemplo, o ponto de extremidade /Users, o ponto de extremidade /Groups). Após sua conta exceder este limite, o Snowflake retorna um código de status 429 HTTP (ou seja, excesso de solicitações). Observe que este limite de solicitações geralmente só ocorre durante o provisionamento inicial quando um número relativamente grande de solicitações (ou seja, mais de 10 mil) ocorre para provisionar usuários ou grupos.

  • Se a URL de sua conta Snowflake foi criada com sublinhados, você pode acessar sua conta Snowflake com a URL de conta incluindo sublinhados ou hifens.

    Se seu provedor SCIM reutiliza a mesma URL de conta para SAML SSO e SCIM, então URLs com sublinhados não têm suporte. Portanto, use a URL de conta hifenizada para configurar o SCIM.

    URLs de conta Snowflake que não contêm sublinhados não são restritas por esta limitação.

  • Uma integração SCIM personalizada pode ou não permitir o provisionamento e gerenciamento de grupos aninhados. Antes de tentar usar uma integração SCIM personalizada para provisionar grupos aninhados no Snowflake, contate seu provedor de identidade para determinar se grupos aninhados podem ser usados com uma integração SCIM.

  • Se estiver usando conectividade privada ao serviço Snowflake para acessar o Snowflake, certifique-se de que não esteja inserindo estes URLs nas configurações de integração. Insira o ponto de extremidade público (ou seja, sem .privatelink), e certifique-se de que a política de rede permite o acesso a partir do endereço IP do IdP, caso contrário você não poderá usar esta integração.

  • Habilitação ou desabilitação da sincronização de senhas de um provedor de identidade personalizado com o Snowflake.

    A configuração da propriedade SYNC_PASSWORD na integração de segurança do Snowflake só tem suporte para as integrações SCIM do Okta.

Pré-requisitos

Antes de provisionar usuários ou grupos, certifique-se de que a política de rede no Snowflake permita o acesso a partir dos intervalos de IP que correspondem à sua organização. Para obter mais informações, consulte Gerenciamento de políticas de rede SCIM.

Criação de uma integração de segurança SCIM personalizada e um token de API.

O processo de configuração do Snowflake cria uma integração de segurança SCIM para permitir que usuários e funções criados no provedor de identidade sejam propriedade da função GENERIC_SCIM_PROVISIONER SCIM no Snowflake e cria um token de acesso a ser usado em solicitações de API SCIM. O token de acesso é válido por seis meses. Ao expirar, crie um novo token de acesso manualmente usando SYSTEM$GENERATE_SCIM_ACCESS_TOKEN, como mostrado abaixo.

Nota

Para invalidar um token de acesso existente para uma integração SCIM, execute uma instrução DROP INTEGRATION.

Para continuar usando SCIM com Snowflake, recrie a integração SCIM com uma instrução CREATESECURITYINTEGRATION e gere um novo token de acesso usando SYSTEM$GENERATE_SCIM_ACCESS_TOKEN.

Execute as seguintes instruções SQL em seu cliente Snowflake preferido. Cada uma das seguintes instruções é explicada abaixo.

use role accountadmin;
create role if not exists generic_scim_provisioner;
grant create user on account to role generic_scim_provisioner;
grant create role on account to role generic_scim_provisioner;
grant role generic_scim_provisioner to role accountadmin;
create or replace security integration generic_scim_provisioning
    type=scim
    scim_client='generic'
    run_as_role='GENERIC_SCIM_PROVISIONER';
select system$generate_scim_access_token('GENERIC_SCIM_PROVISIONING');
Copy

Importante

As instruções SQL de exemplo utilizam a função ACCOUNTADMIN do sistema e a função GENERIC_SCIM_PROVISIONER personalizada é concedida à função ACCOUNTADMIN.

É possível não utilizar a função ACCOUNTADMIN em favor de uma função menos privilegiada. O uso de uma função menos privilegiada pode ajudar a resolver as preocupações de conformidade relacionadas ao acesso menos privilegiado; entretanto, o uso de uma função menos privilegiada pode resultar em erros inesperados durante o processo de configuração e gerenciamento do SCIM.

Estes erros podem ser o resultado de a função menos privilegiada não ter direitos suficientes para administrar todas as funções através do SCIM devido à forma como as funções são criadas e à hierarquia de funções resultante. Portanto, em um esforço para evitar erros nos processos de configuração e gerenciamento, escolha uma das seguintes opções:

  1. Use a função ACCOUNTADMIN, como mostrado nas instruções SQL de exemplo.

  2. Use uma função com o privilégio global MANAGE GRANTS.

  3. Se nenhuma dessas duas primeiras opções for desejável, use uma função personalizada que tenha o privilégio OWNERSHIP sobre todas as funções que serão gerenciadas usando SCIM.

  1. Use a função ACCOUNTADMIN.

    use role accountadmin;
    
    Copy
  2. Crie a função personalizada GENERIC_SCIM_PROVISIONER. Todos os usuários e funções no Snowflake criados pelo IdP serão de propriedade da função GENERIC_SCIM_PROVISIONER com escopo inferior.

    create role if not exists generic_scim_provisioner;
    grant create user on account to role generic_scim_provisioner;
    grant create role on account to role generic_scim_provisioner;
    
    Copy
  3. Deixe a função ACCOUNTADMIN criar a integração de segurança usando a função GENERIC_SCIM_PROVISIONER personalizada. Para obter mais informações, consulte CREATESECURITYINTEGRATION.

    grant role generic_scim_provisioner to role accountadmin;
    create or replace security integration generic_scim_provisioning
        type = scim
        scim_client = 'generic'
        run_as_role = 'GENERIC_SCIM_PROVISIONER';
    
    Copy
  4. Crie e salve o token de autorização e armazene-o com segurança para uso posterior. Use este token para cada solicitação de API REST SCIM e coloque-o no cabeçalho da solicitação. O token de acesso expira após seis meses e um novo token de acesso pode ser gerado com esta instrução.

    select system$generate_scim_access_token('GENERIC_SCIM_PROVISIONING');
    
    Copy

Habilitação do SSO iniciado pelo Snowflake

O processo de provisionamento do SCIM não habilita automaticamente o login único (SSO).

Para usar o SSO depois que o processo de provisionamento do SCIM estiver completo, habilite o SSO iniciado pelo Snowflake.

Gerenciamento de políticas de rede SCIM

A aplicação de uma política de redes a uma integração de segurança SCIM permite que a política de redes SCIM seja distinta das políticas de redes que se aplicam a toda a conta Snowflake. Ele permite que o provedor de SCIM provisione usuários e grupos sem adicionar endereços IP a uma política de redes que controla o acesso de usuários normais.

Uma política de redes aplicada a uma integração de SCIM substitui uma política de redes aplicada a toda a conta Snowflake, mas é substituída por uma política de redes atribuída a um usuário.

Depois de criar a integração de segurança SCIM, crie a política de redes SCIM usando este comando:

alter security integration generic_scim_provisioning set network_policy = <scim_network_policy>;
Copy

Para remover a política de redes SCIM, use este comando:

alter security integration generic_scim_provisioning unset network_policy;
Copy

Onde:

generic_scim_provisioning

Especifica o nome da integração de segurança SCIM personalizada.

scim_network_policy

Especifica a política de rede SCIM personalizada no Snowflake.

Para obter mais informações, consulte Políticas de rede e ALTERSECURITYINTEGRATION.

Uso de funções secundárias com SCIM

O Snowflake suporta a definição da propriedade de usuário DEFAULT_SECONDARY_ROLES como 'ALL' com SCIM para permitir que os usuários usem funções secundárias em uma sessão do Snowflake.

Para um exemplo representativo, consulte PUT scim/v2/Users/{id}.

Replicação da integração de segurança SCIM personalizada

O Snowflake oferece suporte à replicação e failover/failback com a integração de segurança SCIM da conta de origem para a conta de destino.

Para obter mais detalhes, consulte Replicação de integrações de segurança e políticas de redes em múltiplas contas.

Próximos tópicos: