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>' ]
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>' ]
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 especificarOAUTH_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 comoTRUE
.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 forhttps://www.example.com/connect?authType=snowflake
, verifique se o parâmetro OAUTH_REDIRECT_URI está definido comohttps://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 comoTRUE
, o Snowflake define o parâmetro comoFALSE
.
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 emOAUTH_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 tiverENABLED = 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
eENABLED = 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 definirOAUTH_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
ecode_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. Esta política de redes controla o tráfego de rede que está tentando trocar um código de autorização por um token de acesso ou atualização ou usar um token de atualização para obter um novo token de acesso.
Se também houver políticas de rede definidas para a conta ou usuário, consulte Precedência de política de redes.
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;
Ver as configurações de integração usando DESCRIBE INTEGRATION:
DESC SECURITY INTEGRATION td_oauth_int1;
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');
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;
Ver as configurações de integração usando DESCRIBE INTEGRATION:
DESC SECURITY INTEGRATION ts_oauth_int1;
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');
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');