CREATE SECURITY INTEGRATION (Autenticação de API externa)¶
Cria uma nova integração de segurança da autenticação de API externa na conta ou substitui uma integração existente.
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 (Autenticação de API externa) , DESCRIBE INTEGRATION , DROP INTEGRATION , SHOW INTEGRATIONS
Sintaxe¶
OAuth: credenciais do cliente¶
CREATE SECURITY INTEGRATION <name>
TYPE = API_AUTHENTICATION
AUTH_TYPE = OAUTH2
ENABLED = { TRUE | FALSE }
[ OAUTH_TOKEN_ENDPOINT = '<string_literal>' ]
[ OAUTH_CLIENT_AUTH_METHOD = CLIENT_SECRET_POST ]
[ OAUTH_CLIENT_ID = '<string_literal>' ]
[ OAUTH_CLIENT_SECRET = '<string_literal>' ]
[ OAUTH_GRANT = 'CLIENT_CREDENTIALS']
[ OAUTH_ACCESS_TOKEN_VALIDITY = <integer> ]
[ OAUTH_ALLOWED_SCOPES = ( '<scope_1>' [ , '<scope_2>' ... ] ) ]
[ COMMENT = '<string_literal>' ]
OAuth: fluxo do JWT bearer¶
CREATE SECURITY INTEGRATION <name>
TYPE = API_AUTHENTICATION
AUTH_TYPE = OAUTH2
ENABLED = { TRUE | FALSE }
[ OAUTH_AUTHORIZATION_ENDPOINT = '<string_literal>' ]
[ OAUTH_TOKEN_ENDPOINT = '<string_literal>' ]
[ OAUTH_CLIENT_AUTH_METHOD = CLIENT_SECRET_POST ]
[ OAUTH_CLIENT_ID = '<string_literal>' ]
[ OAUTH_CLIENT_SECRET = '<string_literal>' ]
[ OAUTH_GRANT = 'JWT_BEARER']
[ OAUTH_ACCESS_TOKEN_VALIDITY = <integer> ]
[ OAUTH_REFRESH_TOKEN_VALIDITY = <integer> ]
[ COMMENT = '<string_literal>' ]
Parâmetros obrigatórios¶
name
Especifica o identificador (ou seja, nome) da integração. Este valor deve ser único 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 identificadora esteja entre aspas duplas (por exemplo, “Meu objeto”). Os identificadores delimitados por aspas duplas também diferenciam letras maiúsculas de minúsculas.
Para obter mais detalhes, consulte Requisitos para identificadores.
TYPE = API_AUTHENTICATION
Especifica que você está criando uma interface de segurança entre o Snowflake e um serviço externo que usa OAuth 2.0 com autenticação de API externa
AUTH_TYPE = OAUTH2
Especifica que a integração utiliza OAuth 2.0 para fazer autenticação ao serviço externo.
ENABLED = { TRUE | FALSE }
Especifica se esta integração de segurança está habilitada ou desabilitada.
TRUE
Permite que a integração funcione com base nos parâmetros especificados na definição da integração.
FALSE
Suspende a integração para manutenção. Qualquer integração entre o Snowflake e um serviço de terceiro não funciona
Parâmetros opcionais¶
Note que esta é uma lista exaustiva de parâmetros que você pode configurar. Configure os parâmetros na integração para corresponder aos parâmetros que você configura quando cria um segredo baseado no fluxo de OAuth que você escolher.
OAUTH_AUTHORIZATION_ENDPOINT = 'string_literal'
Especifica o URL para autenticação ao serviço externo. Por exemplo, para conectar à instância do ServiceNow, o URL deve estar no seguinte formato:
https://<instance_name>.service-now.com/oauth_token
Onde
instance_name
é o nome de sua instância do ServiceNow.OAUTH_TOKEN_ENDPOINT = 'string_literal'
Especifica o ponto de extremidade do token usado pelo cliente para obter um token de acesso apresentando sua concessão de autorização ou token de atualização. O ponto de extremidade do token é usado com todas as concessões de autorização, exceto para o tipo de concessão implícita (uma vez que um token de acesso é emitido diretamente).
OAUTH_CLIENT_AUTH_METHOD = CLIENT_SECRET_POST
Especifica que POST é usado como o método de autenticação para o serviço externo.
OAUTH_CLIENT_ID = 'string_literal'
Especifica o ID do cliente para o aplicativo OAuth no serviço externo.
OAUTH_CLIENT_SECRET = 'string_literal'
Especifica o segredo do cliente para o aplicativo OAuth na instância ServiceNow da etapa anterior. O conector usa isto para solicitar um token de acesso da instância do ServiceNow.
OAUTH_GRANT = 'string_literal'
Especifica o tipo de fluxo de OAuth. Um dos seguintes:
'CLIENT_CREDENTIALS'
quando a integração usará credenciais do cliente.'AUTHORIZATION_CODE'
quando a integração usará um código de autorização.'JWT_BEARER'
quando a integração usará um token de portador do tipo JWT (JSON Web Token).
OAUTH_ACCESS_TOKEN_VALIDITY = integer
Especifica a vida útil padrão do token de acesso OAuth (em segundos) emitido por um servidor OAuth.
O valor definido nesta propriedade é usado se a vida útil do token de acesso não for devolvida como parte da resposta ao token OAuth. Quando os dois valores estiverem disponíveis, o menor dos dois valores será usado para atualizar o token de acesso.
OAUTH_REFRESH_TOKEN_VALIDITY = integer
Especifica o valor para determinar a validade do token de atualização obtido do servidor OAuth.
OAUTH_ALLOWED_SCOPES = ( 'scope_1' [ , 'scope_2' ... ] )
Especifica uma lista de escopos separada por vírgulas, com aspas simples em torno de cada escopo, a ser usada ao fazer uma solicitação do OAuth por uma função com USAGE na integração durante o fluxo de credenciais do cliente OAuth.
Esta lista deve ser um subconjunto dos escopos definidos na propriedade
OAUTH_ALLOWED_SCOPES
da integração de segurança. Se os valores de propriedadeOAUTH_SCOPES
não forem especificados, o segredo herdará todos os escopos que são especificados na integração de segurança.Para o conector ServiceNow, o único valor de escopo possível é
'useraccount'
.Padrão: lista vazia (ou seja,
[]
).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¶
Crie uma integração de segurança chamada servicenow_oauth
para conectar o Snowflake à instância do ServiceNow chamada myinstance
usando OAuth com o fluxo de concessão de código:
CREATE SECURITY INTEGRATION servicenow_oauth TYPE = api_authentication AUTH_TYPE = oauth2 OAUTH_CLIENT_AUTH_METHOD = client_secret_post OAUTH_CLIENT_ID = 'sn-oauth-134o9erqfedlc' OAUTH_CLIENT_SECRET = 'eb9vaXsrcEvrFdfcvCaoijhilj4fc' OAUTH_TOKEN_ENDPOINT = 'https://myinstance.service-now.com/oauth_token.do' ENABLED = true;