Configuração do Snowflake para usar a autenticação federada¶
Este tópico descreve como configurar o Snowflake para autenticação federada usando uma integração de segurança SAML2. Este tópico pressupõe que você já tenha configurado seu IdP para funcionar com o Snowflake.
Nota
A integração de segurança SAML2 substitui o parâmetro de conta SAML_IDENTITY_PROVIDER obsoleto.
Se você tiver uma implementação existente de SSO que usa este parâmetro de conta obsoleto, você deverá migrar para uma integração de segurança SAML antes de continuar a configurar o Snowflake para autenticação federada.
O Snowflake continuará a oferecer suporte ao parâmetro de conta obsoleto enquanto houver implementações que o utilizem.
Neste tópico:
Criação de uma integração de segurança SAML2¶
Snowflake usa uma integração de segurança SAML2 para fazer a integração com o IdP que você está usando para implementar a autenticação federada. Use o comando CREATE SECURITY INTEGRATION para começar a configurar o Snowflake para SSO.
Importante
Quando você configurar um IdP para SSO, será necessário fornecer um URL para a conta Snowflake. O formato desse URL deve corresponder aos URLs nas propriedades SAML2_SNOWFLAKE_ISSUER_URL
e SAML2_SNOWFLAKE_ACS_URL
da integração de segurança.
Se você não definir essas propriedades ao criar a integração de segurança, elas assumirão a definição padrão de URL herdado da conta.
Por exemplo, para criar uma integração de segurança que utilize um URL de nome de conta com conectividade privada, execute o seguinte comando SQL:
CREATE SECURITY INTEGRATION my_idp
TYPE = saml2
ENABLED = true
SAML2_ISSUER = 'https://example.com'
SAML2_SSO_URL = 'http://myssoprovider.com'
SAML2_PROVIDER = 'ADFS'
SAML2_X509_CERT = 'MIICr...'
SAML2_SNOWFLAKE_ISSUER_URL = 'https://<orgname>-<account_name>.privatelink.snowflakecomputing.com'
SAML2_SNOWFLAKE_ACS_URL = 'https://<orgname>-<account_name>.privatelink.snowflakecomputing.com/fed/login';
Observe que /fed/login
está anexado ao URL para a propriedade SAML2_SNOWFLAKE_ACS_URL
. Para obter mais detalhes sobre os formatos de URL para contas Snowflake, consulte Conexão com uma URL.
Após configurar uma integração de segurança SAML2, você poderá usar a integração de segurança para executar as seguintes tarefas:
Criptografar asserções SAML
Enviar solicitações SAML assinadas
Especificar o formato SAML NameID
Exportar os metadados de integração de segurança SAML2
Impor a reautenticação no procedimento do Snowflake
Nota
Você pode utilizar uma integração de segurança SAML2 com o Client Redirect se sua conta for Business Critical Edition ou superior.
Para obter mais informações, consulte Redirecionamento de conexões do cliente.
Configuração de login de SSO para usuários¶
Após ter criado uma integração de segurança SAML2, você poderá configurar se o usuário inicia seu login SSO a partir do IdP ou do Snowflake.
Um SSO iniciado por IdP não requer configuração no Snowflake. Você só precisa informar seus usuários sobre como acessar o Snowflake (por exemplo, usando um portal interno).
A propriedade SAML2_ENABLE_SP_INITIATED
ativa SSO iniciado pelo Snowflake. A propriedade SAML2_SP_INITIATED_LOGIN_PAGE_LABEL
define uma cadeia de caracteres que identifica o IdP. Esta cadeia de caracteres aparece na página de login do Snowflake para que os usuários possam acessar o IdP.
Use o comando ALTER SECURITY INTEGRATION
para definir estas propriedades:
ALTER SECURITY INTEGRATION my_idp SET SAML2_ENABLE_SP_INITIATED = true;
ALTER SECURITY INTEGRATION my_idp SET SAML2_SP_INITIATED_LOGIN_PAGE_LABEL = 'My IdP';
Para obter mais informações sobre como os clientes se conectam ao Snowflake depois de configurar login SSO para usuários, consulte Uso de SSO com aplicativos clientes que se conectam ao Snowflake
Criptografia de asserções SAML¶
A propriedade SAML2_SNOWFLAKE_X509_CERT
garante que as asserções SAML2 sejam criptografadas usando o certificado público do Snowflake, protegendo o tráfego quando os usuários acessam o Snowflake por autenticação federada.
Depois de receber as afirmações criptografadas do IdP do cliente, Snowflake descriptografa as asserções com sua chave privada. Snowflake nunca exporta ou disponibiliza sua chave privada.
Para criptografar asserções SAML, consulte as seções abaixo.
Exportação do certificado público do Snowflake¶
Depois de ter criado uma integração de segurança SAML2, siga as etapas abaixo:
Execute a seguinte instrução SQL na integração SAML2.
DESC SECURITY INTEGRATION my_idp;
Encontre o valor
SAML2_SNOWFLAKE_X509_CERT
na linha 7, que é o certificado público no formato PEM.Salve o valor, sem esquecer de incluir os delimitadores
BEGIN CERTIFICATE
eEND CERTIFICATE
. Por exemplo, o bloco de código abaixo contém um certificado truncado no formato PEM:-----BEGIN CERTIFICATE----- MIICr... -----END CERTIFICATE-----
Criação de uma solicitação de assinatura de certificado (CSR) — Opcional¶
Por padrão, uma integração de segurança SAML2 no Snowflake usa um certificado autoassinado para o IdP do SAML para criptografar asserções SAML. Se sua organização exigir o uso de um certificado emitido por uma autoridade certificadora (CA), complete as etapas abaixo:
Gere uma solicitação de assinatura de certificado (CSR) do Snowflake usando a função do sistema SYSTEM$GENERATE_SAML_CSR.
Forneça o CSR ao CA de sua escolha para que o certificado possa ser emitido.
Carregue o certificado codificado em base64 para a integração SAML usando a instrução ALTER a seguir, sem os delimitadores
BEGIN CERTIFICATE
eEND CERTIFICATE
.ALTER SECURITY INTEGRATION my_idp SET SAML2_SNOWFLAKE_X509_CERT = 'AX2bv...';
Executar o comando DESCRIBE INTEGRATION para visualizar a integração de segurança atualizada:
DESC SECURITY INTEGRATION my_idp;
Você pode então carregar o certificado para sua chave privada usando o CSR gerado pela função no Snowflake.
Configuração do seu SAML IdP¶
Carregue o certificado salvo no formato PEM para o IdP de sua organização como o certificado de criptografia SAML.
Configure seu IdP para criptografar asserções SAML para o provedor de serviço Snowflake (SP).
Envio de solicitações SAML assinadas¶
Você pode enviar uma solicitação SAML assinada do Snowflake ao IdP para verificar o Snowflake como um provedor de serviços autêntico. Para verificar o Snowflake, você pode configurar seu IdP para usar o certificado armazenado na integração de segurança SAML2 para garantir que a solicitação SAML tenha origem no Snowflake e não em um terceiro que esteja se passando pela Snowflake.
Definição da propriedade SAML2_SIGN_REQUEST¶
Se você estiver criando uma integração de segurança SAML2 pela primeira vez, certifique-se de definir a propriedade SAML2_SIGN_REQUEST.
Se você tiver criado uma integração de segurança SAML2 sem definir a propriedade SAML2_SIGN_REQUEST
, siga as etapas abaixo:
Executar o comando ALTER SECURITY INTEGRATION como um usuário com uma função ACCOUNTADMIN para atualizar a integração de segurança:
ALTER SECURITY INTEGRATION my_idp SET SAML2_SIGN_REQUEST = true;
Executar o comando DESCRIBE INTEGRATION para visualizar a integração de segurança atualizada:
DESC SECURITY INTEGRATION my_idp;
Configuração de seu IdP para aceitar solicitações assinadas¶
Configure seu IdP para aceitar solicitações assinadas do Snowflake. Durante a configuração, seu IdP precisa ter o certificado armazenado na propriedade SAML2_SNOWFLAKE_X509_CERT. Seu IdP usa este certificado para verificar se a solicitação SAML tem origem no Snowflake.
Nota
O Snowflake não é responsável pela configuração de seu IdP. Para ajuda na configuração de seu IdP, consulte seu administrador de segurança interno.
Executar o comando DESCRIBE INTEGRATION:
DESC SECURITY INTEGRATION my_idp;
Salve o valor da propriedade SAML2_SNOWFLAKE_X509_CERT na linha 7 para usar em suas configurações de IdP.
Especificação do formato SAML NameID
¶
O Snowflake permite ao administrador (ou seja, usuário com a função ACCOUNTADMIN) especificar o formato SAML NameID
que será solicitado na solicitação de autenticação SAML de saída enviada pelo Snowflake para o IdP.
Especificar o formato SAML NameID
permite ao Snowflake definir uma expectativa do atributo de identificação do usuário (isto é, o assunto SAML) na asserção SAML do IdP para assegurar uma autenticação válida para o Snowflake.
O formato SAML NameID
pode ser integrado na integração de segurança SAML2. Você pode especificar o SAML NameID
na integração de segurança usando um dos seguintes valores:
urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified
urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress
urn:oasis:names:tc:SAML:1.1:nameid-format:X509SubjectName
urn:oasis:names:tc:SAML:1.1:nameid-format:WindowsDomainQualifiedName
urn:oasis:names:tc:SAML:2.0:nameid-format:kerberos
urn:oasis:names:tc:SAML:2.0:nameid-format:persistent
urn:oasis:names:tc:SAML:2.0:nameid-format:transient
Se o formato SAML NameID
não for especificado, o Snowflake usa o seguinte valor:
urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress
Definição da propriedade SAML2_REQUESTED_NAMEID_FORMAT¶
Se você estiver criando uma integração de segurança SAML2 pela primeira vez, certifique-se de definir a propriedade SAML2_REQUESTED_NAMEID_FORMAT.
Se você tiver criado uma integração de segurança SAML2 sem definir a propriedade SAML2_REQUESTED_NAMEID_FORMAT
, siga as etapas abaixo:
Executar o comando ALTER SECURITY INTEGRATION como um usuário com uma função ACCOUNTADMIN para especificar o formato SAML
NameId
:ALTER SECURITY INTEGRATION my_idp SET SAML2_REQUESTED_NAMEID_FORMAT = '<string_literal>';
Executar o comando DESCRIBE INTEGRATION para visualizar a integração de segurança atualizada:
DESC SECURITY INTEGRATION my_idp;
Configuração do seu IdP para especificar o NameID
¶
Configure seu IdP para especificar o formato SAML NameID
nas asserções SAML.
Nota
O Snowflake não é responsável pela configuração de seu IdP. Para ajuda na configuração de seu IdP, consulte seu administrador de segurança interno.
Exportação dos metadados de integração de segurança SAML2¶
O Snowflake fornece metadados SAML 2.0 para a integração de segurança SAML2 para facilitar a configuração do provedor de serviço Snowflake em seu IdP.
Os metadados SAML 2.0 estão contidos na propriedade SAML2_SNOWFLAKE_METADATA
e podem ser obtidos por meio da execução de um comando DESCRIBE INTEGRATION na integração de segurança SAML2. Por exemplo:
DESC SECURITY INTEGRATION my_idp;
------------------------------------+---------------+-----------------------------------------------------------------------------+------------------+
property | property_type | property_value | property_default |
------------------------------------+---------------+-----------------------------------------------------------------------------+------------------+
SAML2_X509_CERT | String | MIICr... | |
SAML2_PROVIDER | String | OKTA | |
SAML2_ENABLE_SP_INITIATED | Boolean | false | false |
SAML2_SP_INITIATED_LOGIN_PAGE_LABEL | String | my_idp | |
SAML2_SSO_URL | String | https://okta.com/sso | |
SAML2_ISSUER | String | https://okta.com | |
SAML2_SNOWFLAKE_X509_CERT | String | MIICr... | |
SAML2_REQUESTED_NAMEID_FORMAT | String | urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress | |
SAML2_SNOWFLAKE_ACS_URL | String | https://example.snowflakecomputing.com/fed/login | |
SAML2_SNOWFLAKE_ISSUER_URL | String | https://example.snowflakecomputing.com | |
SAML2_SNOWFLAKE_METADATA | String | <md:EntityDescriptor entityID="https://example.snowflakecomputing.com"> ... | |
SAML2_DIGEST_METHODS_USED | String | http://www.w3.org/2001/04/xmlenc#sha256 | |
SAML2_SIGNATURE_METHODS_USED | String | http://www.w3.org/2001/04/xmldsig-more#rsa-sha256 | |
------------------------------------+---------------+-----------------------------------------------------------------------------+------------------+
Como um exemplo representativo, os metadados SAML 2.0 XML formatados da propriedade SAML2_SNOWFLAKE_METADATA
são mostrados abaixo. Observe que os valores X509certificate
para signing
e encryption
estão truncados.
<md:EntityDescriptor xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata" xmlns:xenc="http://www.w3.org/2001/04/xmlenc#" xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion" entityID="https://example.snowflakecomputing.com">
<md:SPSSODescriptor AuthnRequestsSigned="false" protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol">
<md:KeyDescriptor use="signing">
<dsig:KeyInfo>
<dsig:X509Data>
<dsig:X509Certificate>MIICr...</dsig:X509Certificate>
</dsig:X509Data>
</dsig:KeyInfo>
</md:KeyDescriptor>
<md:KeyDescriptor use="encryption">
<dsig:KeyInfo>
<dsig:X509Data>
<dsig:X509Certificate>MIICr...</dsig:X509Certificate>
</dsig:X509Data>
</dsig:KeyInfo>
</md:KeyDescriptor>
<md:AssertionConsumerService index="0" isDefault="true" Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="https://example.snowflakecomputing.com/fed/login" />
</md:SPSSODescriptor>
</md:EntityDescriptor>
Para referência, a tabela a seguir mapeia as tags de metadados XML para as propriedades de integração de segurança do Snowflake SAML2.
Saída XML |
Propriedade de integração de segurança SAML2 |
---|---|
entityID |
SAML2_SNOWFLAKE_ISSUER_URL |
AuthnRequestsSigned |
SAML2_SIGN_REQUEST |
Certificado de assinatura |
SAML2_SNOWFLAKE_X509_CERT |
Certificado de criptografia |
SAML2_SNOWFLAKE_X509_CERT |
URL do serviço ao consumidor de asserção |
SAML2_SNOWFLAKE_ACS_URL |
Imposição de reautenticação no Snowflake¶
O Snowflake oferece suporte à configuração de sua integração de segurança SAML2 para exigir que o usuário volte a se autenticar para acessar o Snowflake durante o fluxo inicial de autenticação SSO ou quando uma sessão atual do Snowflake expirar.
Ao ativar este recurso na integração de segurança SAML2 do Snowflake, o Snowflake define a propriedade ForceAuthn
da especificação SAML como True
na solicitação SAML de saída do Snowflake para o IdP. Assim que o IdP recebe a solicitação com a propriedade ForceAuthn
definida como True
, o IdP envia uma solicitação ao Snowflake, o que faz com que os usuários sejam solicitados a digitar novamente suas credenciais de autenticação (por exemplo, nome de usuário, senha) para acessar o Snowflake.
Este recurso proporciona maior segurança por meio da reautenticação. Além disso, o prompt de reautenticação permite aos usuários inserir um conjunto diferente de credenciais do que aquelas usadas para iniciar o SSO para acessar o Snowflake.
Importante
Antes de implementar esse recurso, verifique se seu IdP oferece suporte à troca de identidades durante um fluxo de autenticação SSO.
Se esse recurso for implementado no Snowflake e seu IdP não oferecer suporte à troca de identidades durante o fluxo inicial de autenticação SSO, os usuários podem não ser capazes de acessar o Snowflake usando o conjunto diferente de credenciais fornecidas no prompt de reautenticação.
Se você estiver criando uma integração de segurança SAML2 pela primeira vez, certifique-se de definir a propriedade SAML2_FORCE_AUTHN.
Para atualizar uma integração de segurança SAML2 existente para oferecer suporte à reautenticação forçada para acessar o Snowflake, siga as etapas abaixo:
Executar o comando ALTER SECURITY INTEGRATION para atualizar a integração de segurança:
ALTER SECURITY INTEGRATION my_idp SET SAML2_FORCE_AUTHN = true;
Executar o comando DESCRIBE INTEGRATION para visualizar a integração de segurança atualizada:
DESC SECURITY INTEGRATION my_idp;
Onde:
SAML2_FORCE_AUTHN = TRUE | FALSE
O booleano indica se os usuários, durante o fluxo inicial de autenticação, são forçados a se autenticar novamente para acessar o Snowflake. Quando ajustado para
TRUE
, o Snowflake define a propriedadeForceAuthn
SAML comoTRUE
na solicitação de saída do Snowflake para o provedor de identidade.
TRUE
força os usuários a se autenticarem novamente para acessar o Snowflake, mesmo que exista uma sessão válida com o provedor da identidade.
FALSE
não força os usuários a se autenticarem novamente para acessar o Snowflake.Padrão:
FALSE
.
Ponto de extremidade de logout personalizado¶
O Snowflake oferece suporte à definição de um URL de ponto de extremidade personalizado para redirecionar os usuários após o logout do Snowflake. O ponto de extremidade é definido por meio da propriedade SAML2_POST_LOGOUT_REDIRECT_URL
na integração de segurança SAML2.
Uma vez ativado para os usuários que acessam o Snowflake por meio do SSO do SAML, ao clicar no botão Log Out na Classic Console, a sessão Snowflake é terminada e os usuários são redirecionados para o ponto de extremidade especificado.
Importante
Esse comportamento não se aplica a Snowsight.
A definição de um ponto de extremidade de logout oferece aos administradores a opção de controlar aonde os usuários são redirecionados após o logout do Snowflake. Por exemplo, um ponto de extremidade personalizado pode acionar um script para encerrar simultaneamente o IdP da sessão. A vantagem dessa implementação é que tanto a sessão do Snowflake como a sessão do IdP são encerradas, o que obriga os usuários a se reautenticarem em relação ao IdP para acessar o Snowflake.
Se você estiver criando uma integração de segurança SAML2 pela primeira vez, certifique-se de definir a propriedade SAML2_POST_LOGOUT_REDIRECT_URL.
Se você tiver criado uma integração de segurança SAML2 sem definir a propriedade SAML2_POST_LOGOUT_REDIRECT_URL
, execute o comando ALTER SECURITY INTEGRATION para configurar o ponto de extremidade de logout personalizado:
ALTER SECURITY INTEGRATION my_idp SET SAML2_POST_LOGOUT_REDIRECT_URL = 'https://logout.example.com';
Gerenciamento de sua integração de segurança SAML2¶
Você pode usar um comando ALTERSECURITYINTEGRATION para gerenciar a integração de segurança SAML2. Por exemplo:
Atualize o certificado X.509 como uma cadeia de caracteres em uma integração de segurança SAML2 existente.
ALTER SECURITY INTEGRATION my_idp SET SAML2_X509_CERT = 'AX2bv...';
Se você for um cliente que configura seu IdP para verificar assinaturas de solicitação SAML ou criptografar respostas SAML, poderá substituir sua chave privada e certificado autoassinado existentes e gerar uma nova chave privada e certificado autoassinado:
Gerar uma nova chave privada:
Cuidado
Depois de executar o comando abaixo, a autenticação SAML para de funcionar porque seu IdP ainda usa seu certificado
SAML2_SNOWFLAKE_X509_CERT
antigo. Para minimizar as interrupções, você deve executar o comando abaixo quando os usuários não estiverem tão ativos.ALTER SECURITY INTEGRATION my_idp REFRESH SAML2_SNOWFLAKE_PRIVATE_KEY;
Recuperar o valor da propriedade
SAML2_SNOWFLAKE_X509_CERT
na sua integração de segurança:DESCRIBE SECURITY INTEGRATION my_idp; SELECT "property_value" FROM TABLE(RESULT_SCAN(LAST_QUERY_ID())) WHERE "property" = 'SAML2_SNOWFLAKE_X509_CERT';
Carregue o valor recuperado em seu IdP para substituir o certificado antigo pelo novo certificado em IdP.
Habilite solicitações assinadas.
ALTER SECURITY INTEGRATION my_idp SET SAML2_SIGN_REQUEST = true;
Especifique o formato
NameID
.ALTER SECURITY INTEGRATION my_idp SET SAML2_REQUESTED_NAMEID_FORMAT = 'urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified';
Atualize uma integração de segurança existente para permitir a reautenticação forçada.
ALTER SECURITY INTEGRATION my_idp SET SAML2_FORCE_AUTHN = true;
Atualize uma integração de segurança existente para desabilitar a reautenticação forçada.
ALTER SECURITY INTEGRATION my_idp UNSET SAML2_FORCE_AUTHN;
Atualize o ponto de extremidade de logout personalizado.
ALTER SECURITY INTEGRATION my_idp SET SAML2_POST_LOGOUT_REDIRECT_URL = 'https://logout.example.com';
Para obter mais informações, consulte ALTERSECURITYINTEGRATION.
Replicação da configuração de SSO¶
O Snowflake oferece suporte à replicação e failover/failback da integração de segurança SAML2 a partir 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.