Integração Azure SCIM com o Snowflake

O Snowflake suporta o Microsoft Azure Active Directory como um provedor de identidade SCIM.

Este guia fornece as etapas necessárias para configurar o provisionamento (no Azure AD) para usuários e grupos do Azure AD no Snowflake e inclui as seguintes seções:

Recursos

  • Provisionamento de usuários automático do Azure AD para o Snowflake.

  • Provisionamento de grupos automático do Azure AD para o Snowflake.

  • Sincronização de usuários e grupos do Azure AD com o Snowflake.

  • Se o Azure AD estiver configurado para SAML SSO ao Snowflake, os usuários do Azure AD provisionados ao Snowflake podem acessar o Snowflake usando SAML SSO.

    Nota

    Por padrão, os usuários do Azure AD provisionados ao Snowflake usando SCIM não recebem uma senha no Snowflake. Isto significa que se o SAML SSO estiver configurado no Azure AD, os usuários se autenticarão no Snowflake usando SSO.

    SAML SSO não é uma exigência se SCIM for usado para provisionar usuários e grupos do Azure AD no Snowflake. Para opções adicionais, consulte Configuração do login único do Azure AD.

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.

Sem suporte

  • AWS PrivateLink e Google Cloud Private Service Connect. Os clientes que desejam provisionar usuários e grupos ao Snowflake a partir do Microsoft Azure AD sem atravessar a Internet pública precisam ter sua conta Snowflake no Microsoft Azure.

  • Se você estiver usando o Azure Private Link para acessar o Snowflake, certifique-se de que não está usando a URL do Azure Private Link 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 dos endereços IP Azure como mostrado na seção Pré-requisitos (neste tópico), caso contrário você não poderá usar esta integração.

  • Transferência de propriedade de usuários e funções existentes. O Azure AD é a fonte autoritativa para seus usuários e grupos. A associação a grupos pode ser atualizada no Azure AD. Entretanto, os usuários e grupos existentes no Snowflake não podem ser transferidos para o Microsoft Azure AD.

  • O Microsoft Azure AD não suporta a leitura ou o provisionamento de grupos aninhados. Portanto, não é possível utilizar a integração SCIM do Snowflake Azure para provisionar ou gerenciar grupos aninhados no Snowflake. Entre em contato com a Microsoft para solicitar o suporte a grupos aninhados.

  • Habilitação ou desabilitação da sincronização de senhas do Microsoft Azure AD com o Snowflake.

    A definição da propriedade SYNC_PASSWORD na integração de segurança do Snowflake não sincronizará as senhas de usuário do Microsoft Azure AD com o Snowflake. Esta é uma limitação do Microsoft Azure AD. Para solicitar suporte, entre em contato com o Microsoft Azure.

Pré-requisitos

Antes de usar SCIM para provisionar usuários e grupos do Azure AD ao Snowflake, verifique a existência de:

  1. Um locatário do Azure AD.

  2. Um locatário do Snowflake.

    • Durante o processo de configuração na Microsoft, será necessário inserir a URL do ponto de extremidade SCIM do Snowflake (isto é, Tenant URL no guia de configuração do SCIM no Microsoft Azure Active Directory). O ponto de extremidade SCIM do Snowflake consiste na URL da conta Snowflake anexada com /scim/v2/. Por exemplo, se você usar o formato de URL do nome da conta, o ponto de extremidade SCIM é https://myorg-myaccount.snowflakecomputing.com/scim/v2/. Para obter uma lista de formatos compatíveis com a URL de conta Snowflake, consulte Conexão com uma URL.

  3. Pelo menos um usuário no Snowflake com a função ACCOUNTADMIN

  4. Antes de provisionar usuários ou grupos, como for o caso de sua conta, certifique-se de que a política de rede no Snowflake permita o acesso a partir de todos os endereços IP do Azure AD para a Nuvem pública ou Nuvem do governo dos EUA. Atualmente, todos os endereços IP do Azure AD são necessários para criar uma política de rede Azure SCIM. Para obter mais informações, consulte Gerenciamento de políticas de rede SCIM.

Configuração

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 Azure AD sejam propriedade da função AAD_PROVISIONER SCIM no Snowflake e cria um token de acesso a ser usado em solicitações de API SCIM. O token de acesso (ou seja, o Secret Token no guia de configuração do SCIM do Microsoft Azure Active Directory) é 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.

Configuração do Azure Active Directory

Para usar o Microsoft Azure Active Directory como provedor de identidade SCIM, siga as instruções na documentação Microsoft. Ao completar estas etapas, não reutilize um aplicativo empresarial existente no Azure AD. Deixar de criar um novo aplicativo empresarial para provisionamento pode resultar em comportamento inesperado.

Nota

Se você estiver criando atributos personalizados e gostaria que os campos name e login_name para o usuário Snowflake tivessem valores diferentes, contate o suporte Snowflake para permitir mapeamentos separados para sua conta antes de criar os atributos personalizados.

Configuração do Snowflake

Para facilitar a configuração do Snowflake, você pode copiar o SQL abaixo para uso nesta primeira etapa. Cada uma das seguintes instruções é explicada abaixo.

use role accountadmin;
create role if not exists aad_provisioner;
grant create user on account to role aad_provisioner;
grant create role on account to role aad_provisioner;
grant role aad_provisioner to role accountadmin;
create or replace security integration aad_provisioning
    type = scim
    scim_client = 'azure'
    run_as_role = 'AAD_PROVISIONER';
select system$generate_scim_access_token('AAD_PROVISIONING');
Copy

Importante

As instruções SQL de exemplo utilizam a função ACCOUNTADMIN do sistema e a função AAD_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. Faça login no Snowflake como administrador e execute o seguinte a partir da interface da planilha Snowflake ou SnowSQL.

  2. Use a função ACCOUNTADMIN.

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

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

    grant role aad_provisioner to role accountadmin;
    create or replace security integration aad_provisioning
        type=scim
        scim_client='azure'
        run_as_role='AAD_PROVISIONER';
    
    Copy
  5. Crie e copie o token de autorização para a área de transferência 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('AAD_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 aad_provisioning set network_policy = <scim_network_policy>;
Copy

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

alter security integration aad_provisioning unset network_policy;
Copy

Onde:

aad_provisioning

Especifica o nome da integração de segurança SCIM do Azure AD.

scim_network_policy

Especifica a política de rede SCIM do Azure AD 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 do Azure

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.

Solução de problemas

  • Para verificar se o Azure AD está enviando atualizações ao Snowflake, verifique os eventos de log no Azure AD para o aplicativo Snowflake e os logs de auditoria do SCIM no Snowflake para garantir que o Snowflake esteja recebendo atualizações do Azure AD. Use o seguinte SQL para consultar os logs de auditoria SCIM do Snowflake, em que demo_db é o nome do seu banco de dados.

    use role accountadmin;
    use database demo_db;
    use schema information_schema;
    select * from table(rest_event_history('scim'));
    select *
        from table(rest_event_history(
            'scim',
            dateadd('minutes',-5,current_timestamp()),
            current_timestamp(),
            200))
        order by event_timestamp;
    
    Copy
  • Se a atualização do usuário falhar, verifique a propriedade do usuário no Snowflake. Se ele não pertencer à função aad_provisioner (ou à função definida no parâmetro run_as_role ao criar a integração de segurança no Snowflake), então a atualização falhará. Transfira a propriedade executando a seguinte instrução SQL no Snowflake e tente novamente.

    grant ownership on user <username> to role AAD_PROVISIONER;
    
    Copy
  • Se houver mudanças no valor do atributo UPN no Azure AD após o provisionamento inicial do SCIM, as atualizações subsequentes para o usuário não funcionarão. Uma mudança no valor do atributo UPN quebra a ligação entre o objeto de usuário no Azure AD e o objeto de usuário no Snowflake. Se ocorrer uma mudança no valor do atributo UPN, reprovisione o usuário com o valor correto do atributo UPN.

Próximos tópicos: