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>' ]
Copy

OAuth: fluxo de concessão de código de autorização

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 = 'AUTHORIZATION_CODE']
  [ OAUTH_ACCESS_TOKEN_VALIDITY = <integer> ]
  [ OAUTH_REFRESH_TOKEN_VALIDITY = <integer> ]
  [ COMMENT = '<string_literal>' ]
Copy

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>' ]
Copy

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
Copy

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 propriedade OAUTH_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;
Copy