CREATE SECURITY INTEGRATION (Snowflake OAuth)

Cria uma nova integração de segurança Snowflake OAuth na conta ou substitui uma integração existente. Uma integração de segurança Snowflake OAuth permite aos clientes que oferecem suporte a OAuth redirecionar usuários para uma página de autorização e gerar tokens de acesso (e, opcionalmente, atualizar tokens) para acessar o Snowflake.

Para obter mais informações sobre a criação de outros tipos de integrações de segurança (por exemplo, OAuth externo), consulte CREATE SECURITY INTEGRATION.

Consulte também:

ALTER SECURITY INTEGRATION (Snowflake OAuth) , DROP INTEGRATION , SHOW INTEGRATIONS

Sintaxe

Snowflake OAuth para aplicativos de parceiros

CREATE [ OR REPLACE ] SECURITY INTEGRATION [IF NOT EXISTS]
  <name>
  TYPE = OAUTH
  OAUTH_CLIENT = <partner_application>
  OAUTH_REDIRECT_URI = '<uri>'  -- Required when OAUTH_CLIENT=LOOKER
  [ ENABLED = { TRUE | FALSE } ]
  [ OAUTH_ISSUE_REFRESH_TOKENS = TRUE | FALSE ]
  [ OAUTH_REFRESH_TOKEN_VALIDITY = <integer> ]
  [ OAUTH_USE_SECONDARY_ROLES = IMPLICIT | NONE ]
  [ BLOCKED_ROLES_LIST = ( '<role_name>' [ , '<role_name>' , ... ] ) ]
  [ COMMENT = '<string_literal>' ]
Copy

Snowflake OAuth para clientes personalizados

CREATE [ OR REPLACE ] SECURITY INTEGRATION [IF NOT EXISTS]
  <name>
  TYPE = OAUTH
  OAUTH_CLIENT = CUSTOM
  OAUTH_CLIENT_TYPE = 'CONFIDENTIAL' | 'PUBLIC'
  OAUTH_REDIRECT_URI = '<uri>'
  [ ENABLED = { TRUE | FALSE } ]
  [ OAUTH_ALLOW_NON_TLS_REDIRECT_URI = TRUE | FALSE ]
  [ OAUTH_ENFORCE_PKCE = TRUE | FALSE ]
  [ OAUTH_USE_SECONDARY_ROLES = IMPLICIT | NONE ]
  [ PRE_AUTHORIZED_ROLES_LIST = ( '<role_name>' [ , '<role_name>' , ... ] ) ]
  [ BLOCKED_ROLES_LIST = ( '<role_name>' [ , '<role_name>' , ... ] ) ]
  [ OAUTH_ISSUE_REFRESH_TOKENS = TRUE | FALSE ]
  [ OAUTH_REFRESH_TOKEN_VALIDITY = <integer> ]
  [ NETWORK_POLICY = '<network_policy>' ]
  [ OAUTH_CLIENT_RSA_PUBLIC_KEY = <public_key1> ]
  [ OAUTH_CLIENT_RSA_PUBLIC_KEY_2 = <public_key2> ]
  [ COMMENT = '<string_literal>' ]
Copy

Parâmetros obrigatórios (todos os clientes OAuth)

name

Cadeia de caracteres que especifica o identificador (ou seja, nome) para a integração; deve ser única em sua conta.

Além disso, o identificador deve começar com um caractere alfabético e não pode conter espaços ou caracteres especiais, a menos que toda a cadeia de caracteres do identificador esteja entre aspas duplas (por exemplo, "My object"). Os identificadores delimitados por aspas duplas também diferenciam letras maiúsculas de minúsculas.

Para obter mais detalhes, consulte Requisitos para identificadores.

TYPE = OAUTH

Especifique o tipo de integração:

  • OAUTH: cria uma interface de segurança entre o Snowflake e um cliente que oferece suporte ao OAuth.

OAUTH_CLIENT = { CUSTOM | partner_application }

Especificar o tipo de cliente:

  • CUSTOM: cria uma interface OAuth entre o Snowflake e um cliente personalizado.

  • partner_application: cria uma interface OAuth entre o Snowflake e um aplicativo parceiro. Os valores suportados são:

    • TABLEAU_DESKTOP: Tableau Desktop versão 2019.1 ou superior.

    • TABLEAU_SERVER: Tableau Online ou Tableau Server. Se o Tableau Server estiver se conectando ao Snowflake usando conectividade privada com o serviço Snowflake, certifique-se de especificar OAUTH_CLIENT = CUSTOM em vez disso.

    • LOOKER: a ferramenta de business intelligence Looker.

OAUTH_REDIRECT_URI = 'uri'

Especifica o URI do cliente. Depois que um usuário é autenticado, o navegador é redirecionado para este URI.

Este parâmetro é necessário quando OAUTH_CLIENT = LOOKER. Para obter mais detalhes, consulte o exemplo na Documentação do Looker.

Parâmetros adicionais obrigatórios (clientes personalizados)

Obrigatório somente quando OAUTH_CLIENT = CUSTOM (ou seja, ao criar uma integração para um cliente personalizado)

OAUTH_CLIENT_TYPE = { 'CONFIDENTIAL' | 'PUBLIC' }

Especifica o tipo de cliente que está sendo registrado. O Snowflake oferece suporte tanto para clientes confidenciais como públicos. Clientes confidenciais podem armazenar um segredo. Eles são executados em uma área protegida, onde os usuários finais não podem acessá-los. Por exemplo, um serviço seguro implantado na nuvem poderia ser um cliente confidencial; enquanto que um cliente executado em um desktop ou distribuído através de uma loja de aplicativos poderia ser um cliente público.

OAUTH_REDIRECT_URI = 'uri'

Especifica o URI do cliente. Depois que um usuário é autenticado, o navegador é redirecionado para este URI. O URI deve ser protegido por TLS (Transport Layer Security), a menos que o parâmetro opcional OAUTH_ALLOW_NON_TLS_REDIRECT_URI esteja definido como TRUE.

Não inclua parâmetros de consulta enviados com o redirecionamento URI na solicitação para o ponto de extremidade de autorização. Por exemplo, se o valor do parâmetro de consulta redirect_uri na solicitação ao ponto de extremidade de autorização for https://www.example.com/connect?authType=snowflake, verifique se o parâmetro OAUTH_REDIRECT_URI está definido como https://www.example.com/connect.

Parâmetros opcionais (todos os clientes OAuth)

ENABLED = { TRUE | FALSE }

Especifica se deve iniciar a operação da integração ou suspendê-la.

  • TRUE permite a integração.

  • FALSE desabilita a integração para manutenção. Qualquer integração entre o Snowflake e um serviço de terceiro não funciona.

Padrão FALSE. Se for criada uma integração de segurança sem definir este parâmetro como TRUE, o Snowflake define o parâmetro como FALSE.

Parâmetros opcionais adicionais (aplicativos de parceiros)

Válido quando OAUTH_CLIENT = <aplicativo_parceiro> (ou seja, ao criar uma integração para um aplicativo do parceiro)

OAUTH_ISSUE_REFRESH_TOKENS = { TRUE | FALSE }

Booleano que especifica se permite ao cliente trocar um token de atualização por um token de acesso quando o token de acesso atual tiver expirado. Se definido como FALSE, um símbolo de atualização não é emitido independentemente do valor inteiro definido em OAUTH_REFRESH_TOKEN_VALIDITY. O consentimento do usuário é revogado, e o usuário deve confirmar a autorização novamente.

Padrão: TRUE

Nota

Se este parâmetro for definido como FALSE e a integração de segurança também tiver ENABLED = TRUE, o fluxo do Snowflake OAuth é repetido, um token de acesso não configurável é emitido e o token de acesso é válido por 600 segundos (10 minutos). Após a expiração deste token de acesso, o usuário deve se autenticar novamente.

A definição deste parâmetro como FALSE e ENABLED = FALSE resulta na não emissão de tokens e a integração é desativada.

OAUTH_REFRESH_TOKEN_VALIDITY = integer

Inteiro que especifica por quanto tempo os tokens de atualização devem ser válidos (em segundos). Isso pode ser usado para expirar o token de atualização periodicamente. Note que OAUTH_ISSUE_REFRESH_TOKENS deve ser ajustado para TRUE.

Quando um token de atualização expirar, o aplicativo precisará direcionar o usuário ao fluxo de autorização novamente para obter um novo token de atualização.

Os valores mínimo, máximo e padrão suportados são os seguintes:

Aplicativo

Mínimo

Máximo

Padrão

Tableau Desktop

60 (1 minuto)

36000 (10 horas)

36000 (10 horas)

Tableau Server ou Tableau Online

60 (1 minuto)

7776000 (90 dias)

7776000 (90 dias)

Cliente personalizado

3600 (1 hora)

7776000 (90 dias)

7776000 (90 dias)

Se você tiver uma necessidade comercial de abaixar o valor mínimo ou aumentar o valor máximo, peça para o administrador de sua conta enviar uma solicitação para o suporte Snowflake.

OAUTH_USE_SECONDARY_ROLES = { IMPLICIT | NONE }
  • IMPLICIT: as funções secundárias padrão definidas nas propriedades do usuário são ativadas por padrão na sessão que está sendo aberta.

  • NONE: as funções secundárias predefinidas não são suportadas na sessão que está sendo aberta.

Padrão: NONE

BLOCKED_ROLES_LIST = ( 'role_name' [ , 'role_name' , ... ] )

Lista separada por vírgula das funções do Snowflake que um usuário não pode consentir explicitamente a utilização após autenticação (por exemplo, 'BLOCKED_ROLES_LIST = ('custom_role1', 'custom_role2')).

Por padrão, o Snowflake impede a autenticação das funções ACCOUNTADMIN, ORGADMIN e SECURITYADMIN. Para permitir a autenticação dessas funções privilegiadas, use o comando ALTER ACCOUNT para definir o parâmetro de conta OAUTH_ADD_PRIVILEGED_ROLES_TO_BLOCKED_LIST como FALSE.

COMMENT = 'string_literal'

Especifica um comentário para a integração.

Padrão: sem valor

Parâmetros opcionais adicionais (clientes personalizados)

Válido quando OAUTH_CLIENT = CUSTOM (ou seja, ao criar uma integração para um cliente personalizado)

OAUTH_ALLOW_NON_TLS_REDIRECT_URI = { TRUE | FALSE }

Se TRUE, permite definir OAUTH_REDIRECT_URI para um URI não protegido por TLS. Recomendamos o uso de TLS para evitar que o OAuth intermediário seja redirecionado para uso em ataques de phishing.

Padrão: FALSE

OAUTH_ENFORCE_PKCE = { TRUE | FALSE }

Booleano que especifica se a chave de prova para troca de código (PKCE) deve ser exigida para a integração.

Por padrão, o PKCE é opcional e só é aplicado se os parâmetros code_challenge e code_challenge_method estiverem ambos incluídos na URL do ponto de extremidade de autorização. Entretanto, nós recomendamos fortemente que seu cliente exija PKCE para que todas as autorizações tornem o fluxo de OAuth mais seguro. Para obter mais informações, consulte Configuração do Snowflake OAuth para clientes personalizados.

Padrão: FALSE

OAUTH_USE_SECONDARY_ROLES = { IMPLICIT | NONE }
  • IMPLICIT: as funções secundárias padrão definidas nas propriedades do usuário são ativadas por padrão na sessão que está sendo aberta.

  • NONE: as funções secundárias predefinidas não são suportadas na sessão que está sendo aberta.

Padrão: NONE

PRE_AUTHORIZED_ROLES_LIST = ( 'role_name' [ , 'role_name' , ... ] )

Lista separada por vírgula das funções do Snowflake que um usuário não precisa consentir explicitamente a utilização após autenticação (por exemplo, PRE_AUTHORIZED_ROLES_LIST = ('custom_role1', 'custom_role2')). Note que as funções ACCOUNTADMIN, ORGADMIN e SECURITYADMIN não podem ser incluídas nesta lista.

Nota

Este parâmetro é suportado apenas para clientes confidenciais.

BLOCKED_ROLES_LIST = ( 'role_name' [ , 'role_name' , ... ] )

Lista separada por vírgula das funções do Snowflake que um usuário não pode consentir explicitamente a utilização após autenticação (por exemplo, BLOCKED_ROLES_LIST = ('custom_role1', 'custom_role2')).

Observe que as funções ACCOUNTADMIN, ORGADMIN e SECURITYADMIN estão incluídas nessa lista por padrão; entretanto, se essas funções precisarem ser removidas para sua conta, peça para o administrador da conta enviar uma solicitação para o suporte Snowflake.

OAUTH_ISSUE_REFRESH_TOKENS = { TRUE | FALSE }

Booleano que especifica se permite ao cliente trocar um token de atualização por um token de acesso quando o token de acesso atual tiver expirado. Se definido como FALSE, um token de atualização não é emitido. O consentimento do usuário é revogado, e o usuário deve confirmar a autorização novamente.

Padrão: TRUE

OAUTH_REFRESH_TOKEN_VALIDITY = integer

Inteiro que especifica por quanto tempo os tokens de atualização devem ser válidos (em segundos). Isso pode ser usado para expirar o token de atualização periodicamente. Note que OAUTH_ISSUE_REFRESH_TOKENS deve ser ajustado para TRUE.

Observe que se sua organização desejar que os valores mínimos ou máximos abaixem ou aumentem, respectivamente, você deve pedir para o administrador de sua conta enviar uma solicitação para o suporte Snowflake.

Valores

86400 (1 dia) até 7776000 (90 dias)

Padrão

7776000

NETWORK_POLICY = 'network_policy'

Especifica uma política de redes existente ativa para sua conta. A política de redes restringe a lista de endereços IP do usuário ao trocar um código de autorização por um token de acesso ou de atualização e ao usar um token de atualização para obter um novo token de acesso. Se este parâmetro não for definido, a política de redes para a conta (se houver) é utilizada em seu lugar.

OAUTH_CLIENT_RSA_PUBLIC_KEY = public_key1

Especifica uma chave pública RSA.

OAUTH_CLIENT_RSA_PUBLIC_KEY_2 = public_key2

Especifica uma segunda chave pública RSA. Utilizado para rotação de chaves.

COMMENT = 'string_literal'

Especifica um comentário para a integração.

Padrão: sem valor

Requisitos de controle de acesso

Uma função usada para executar este comando SQL deve ter os seguintes privilégios no mínimo:

Privilégio

Objeto

Notas

CREATE INTEGRATION

Conta

Only the ACCOUNTADMIN role has this privilege by default. The privilege can be granted to additional roles as needed.

Para instruções sobre como criar uma função personalizada com um conjunto específico de privilégios, consulte Criação de funções personalizadas.

Para informações gerais sobre concessões de funções e privilégios para executar ações de SQL em objetos protegíveis, consulte Visão geral do controle de acesso.

Notas de uso

  • Em relação aos metadados:

    Atenção

    Os clientes devem garantir que nenhum dado pessoal (exceto para um objeto do usuário), dados sensíveis, dados controlados por exportação ou outros dados regulamentados sejam inseridos como metadados ao usar o serviço Snowflake. Para obter mais informações, consulte Campos de metadados no Snowflake.

  • Instruções CREATE OR REPLACE <object> são atômicas. Ou seja, quando um objeto é substituído, o objeto antigo é excluído e o novo objeto é criado em uma única transação.

Exemplos

Exemplo de Tableau Desktop

O exemplo seguinte cria uma integração de OAuth com as configurações padrão:

CREATE SECURITY INTEGRATION td_oauth_int1
  TYPE = oauth
  ENABLED = true
  OAUTH_CLIENT = tableau_desktop;
Copy

Ver as configurações de integração usando DESCRIBE INTEGRATION:

DESC SECURITY INTEGRATION td_oauth_int1;
Copy

O exemplo a seguir cria uma integração de OAuth com tokens de atualização que expiram após 10 horas (36.000 segundos). A integração bloqueia o início de uma sessão com SYSADMIN como a função ativa:

CREATE SECURITY INTEGRATION td_oauth_int2
  TYPE = oauth
  ENABLED = true
  OAUTH_CLIENT = tableau_desktop
  OAUTH_REFRESH_TOKEN_VALIDITY = 36000
  BLOCKED_ROLES_LIST = ('SYSADMIN');
Copy

Exemplo de Tableau Online ou Tableau Server

O exemplo seguinte cria uma integração de OAuth com as configurações padrão:

CREATE SECURITY INTEGRATION ts_oauth_int1
  TYPE = oauth
  ENABLED = true
  OAUTH_CLIENT = tableau_server;
Copy

Ver as configurações de integração usando DESCRIBE INTEGRATION:

DESC SECURITY INTEGRATION ts_oauth_int1;
Copy

O exemplo a seguir cria uma integração de OAuth com tokens de atualização que expiram após 1 dia (86.400 segundos). A integração bloqueia o início de uma sessão com SYSADMIN como a função ativa:

CREATE SECURITY INTEGRATION ts_oauth_int2
  TYPE = oauth
  ENABLED = true
  OAUTH_CLIENT = tableau_server
  OAUTH_REFRESH_TOKEN_VALIDITY = 86400
  BLOCKED_ROLES_LIST = ('SYSADMIN');
Copy

Exemplo de cliente personalizado

O exemplo a seguir cria uma integração OAuth que utiliza autenticação de par de chaves. A integração permite tokens de atualização, que expiram após 1 dia (86400 segundos). A integração bloqueia o início de uma sessão com SYSADMIN como a função ativa:

CREATE SECURITY INTEGRATION oauth_kp_int
  TYPE = oauth
  ENABLED = true
  OAUTH_CLIENT = custom
  OAUTH_CLIENT_TYPE = 'CONFIDENTIAL'
  OAUTH_REDIRECT_URI = 'https://localhost.com'
  OAUTH_ISSUE_REFRESH_TOKENS = TRUE
  OAUTH_REFRESH_TOKEN_VALIDITY = 86400
  PRE_AUTHORIZED_ROLES_LIST = ('MYROLE')
  BLOCKED_ROLES_LIST = ('SYSADMIN');
Copy