CREATE SECURITY INTEGRATION (OAuth externo)¶
Cria uma nova integração de segurança do OAuth externo na conta ou substitui uma integração existente. Uma integração de segurança de OAuth externo permite que um cliente utilize um servidor de autorização de terceiros para obter os tokens de acesso necessários para interagir com o Snowflake.
Para obter mais informações sobre a criação de outros tipos de integrações de segurança (por exemplo, Snowflake OAuth), ver CREATE SECURITY INTEGRATION.
- Consulte também:
ALTER SECURITY INTEGRATION (OAuth externo) , DROP INTEGRATION , SHOW INTEGRATIONS
Sintaxe¶
CREATE [ OR REPLACE ] SECURITY INTEGRATION [IF NOT EXISTS]
<name>
TYPE = EXTERNAL_OAUTH
ENABLED = { TRUE | FALSE }
EXTERNAL_OAUTH_TYPE = { OKTA | AZURE | PING_FEDERATE | CUSTOM }
EXTERNAL_OAUTH_ISSUER = '<string_literal>'
EXTERNAL_OAUTH_TOKEN_USER_MAPPING_CLAIM = { '<string_literal>' | ('<string_literal>' [ , '<string_literal>' , ... ] ) }
EXTERNAL_OAUTH_SNOWFLAKE_USER_MAPPING_ATTRIBUTE = { 'LOGIN_NAME' | 'EMAIL_ADDRESS' }
[ EXTERNAL_OAUTH_JWS_KEYS_URL = { '<string_literal>' | ('<string_literal>' [ , '<string_literal>' , ... ] ) } ]
[ EXTERNAL_OAUTH_BLOCKED_ROLES_LIST = ( '<role_name>' [ , '<role_name>' , ... ] ) ]
[ EXTERNAL_OAUTH_ALLOWED_ROLES_LIST = ( '<role_name>' [ , '<role_name>' , ... ] ) ]
[ EXTERNAL_OAUTH_RSA_PUBLIC_KEY = <public_key1> ]
[ EXTERNAL_OAUTH_RSA_PUBLIC_KEY_2 = <public_key2> ]
[ EXTERNAL_OAUTH_AUDIENCE_LIST = { '<string_literal>' | ('<string_literal>' [ , '<string_literal>' , ... ] ) } ]
[ EXTERNAL_OAUTH_ANY_ROLE_MODE = { DISABLE | ENABLE | ENABLE_FOR_PRIVILEGE } ]
[ EXTERNAL_OAUTH_SCOPE_DELIMITER = '<string_literal>' ]
[ EXTERNAL_OAUTH_SCOPE_MAPPING_ATTRIBUTE = '<string_literal>' ]
[ COMMENT = '<string_literal>' ]
Parâmetros obrigatórios¶
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 = EXTERNAL_OAUTH
Distingue a integração de OAuth externo de uma integração de OAuth Snowflake.
ENABLED = { TRUE | FALSE }
Especifica se deve iniciar a operação da integração ou suspendê-la.
TRUE
permite que a integração funcione com base nos parâmetros especificados na definição do canal.FALSE
suspende a integração para manutenção. Qualquer integração entre o Snowflake e um serviço de terceiro não funciona.
EXTERNAL_OAUTH_TYPE = { OKTA | AZURE | PING_FEDERATE | CUSTOM }
Especifica o servidor de autorização OAuth 2.0 a ser Okta, Microsoft Azure AD, Ping Identity PingFederate ou um servidor de autorização personalizado OAuth 2.0.
EXTERNAL_OAUTH_ISSUER = 'string_literal'
Especifica o URL para definir o servidor de autorização OAuth 2.0.
EXTERNAL_OAUTH_TOKEN_USER_MAPPING_CLAIM = { 'string_literal' | ('string_literal' [ , 'string_literal' , ... ] ) }
Especifica a declaração de token de acesso ou declarações que podem ser usadas para mapear o token de acesso para um registro de usuário.
O tipo de dados da declaração deve ser uma cadeia de caracteres ou uma lista de cadeias de caracteres.
EXTERNAL_OAUTH_SNOWFLAKE_USER_MAPPING_ATTRIBUTE = { 'LOGIN_NAME' | 'EMAIL_ADDRESS' }
Indica qual atributo de registro de usuário Snowflake deve ser usado para mapear o token de acesso a um registro de usuário.
Parâmetros opcionais¶
EXTERNAL_OAUTH_JWS_KEYS_URL = { 'string_literal' | ('string_literal' [ , 'string_literal' , ... ] ) }
Especifica o URL ou uma lista de URLs a partir do qual deve-se baixar chaves ou certificados públicos para validar um token de acesso do OAuth externo.
Se você definir o parâmetro
EXTERNAL_OAUTH_TYPE
comoAZURE
, poderá especificar um máximo de três URLs. Por exemplo, para especificar dois URLs, use a seguinte sintaxe:EXTERNAL_OAUTH_JWS_KEYS_URL = ('https://example.ca', 'https://example.co.uk')
Se você definir o parâmetro
EXTERNAL_OAUTH_TYPE
comoOKTA
,PING_FEDERATE
ouCUSTOM
, poderá especificar apenas um URL. Por exemplo:EXTERNAL_OAUTH_JWS_KEYS_URL = 'https://example.ca'
EXTERNAL_OAUTH_RSA_PUBLIC_KEY = public_key1
Especifica uma chave pública RSA com codificação de Base64, sem os cabeçalhos
-----BEGIN PUBLIC KEY-----
e-----END PUBLIC KEY-----
.EXTERNAL_OAUTH_RSA_PUBLIC_KEY_2 = public_key2
Especifica uma segunda chave pública RSA, sem os cabeçalhos
-----BEGIN PUBLIC KEY-----
e-----END PUBLIC KEY-----
. Utilizado para rotação de chaves.EXTERNAL_OAUTH_BLOCKED_ROLES_LIST = ( 'role_name' [ , 'role_name' , ... ] )
Especifica a lista de funções que um cliente não pode definir como uma função primária. Uma função nesta lista não pode ser usada ao criar uma sessão do Snowflake baseada no token de acesso do servidor de autorização do OAuth externo.
Por padrão, esta lista inclui as funções ACCOUNTADMIN, ORGADMIN e SECURITYADMIN. Para remover estas funções privilegiadas da lista, use o comando ALTER ACCOUNT para definir o parâmetro de conta EXTERNAL_OAUTH_ADD_PRIVILEGED_ROLES_TO_BLOCKED_LIST como
FALSE
.EXTERNAL_OAUTH_ALLOWED_ROLES_LIST = ( 'role_name' [ , 'role_name' , ... ] )
Especifica a lista de funções que o cliente pode definir como a função primária.
Uma função nesta lista não ser usada ao criar uma sessão do Snowflake baseada no token de acesso do servidor de autorização do OAuth externo.
Cuidado
Este parâmetro oferece suporte às funções do sistema ACCOUNTADMIN, ORGADMIN e SECURITYADMIN.
Tenha cuidado ao criar uma sessão de Snowflake com estas funções altamente privilegiadas definidas como a função primária.
EXTERNAL_OAUTH_AUDIENCE_LIST = { 'string_literal' | ('string_literal' [ , 'string_literal' , ... ] ) }
Especifica valores adicionais para a validação do token de acesso ao público além de usar o URL da conta Snowflake do cliente (ou seja,
<identificador_conta>.snowflakecomputing.com
). Para obter mais informações, consulte Identificadores de conta.Para obter mais detalhes sobre este parâmetro ao usar o Power BI SSO, consulte as integração de segurança do Power BI SSO.
Atualmente, múltiplos URLs de audiência podem ser especificados para clientes personalizados do OAuth externo somente. Cada URL deve ser delimitado por aspas simples, com uma vírgula separando cada URL. Por exemplo:
EXTERNAL_OAUTH_AUDIENCE_LIST = ('https://example.com/api/v2/', 'https://example.com')
EXTERNAL_OAUTH_ANY_ROLE_MODE = { DISABLE | ENABLE | ENABLE_FOR_PRIVILEGE }
Especifica se o cliente ou usuário de OAuth pode usar uma função que não esteja definida no token de acesso do OAuth. Observe que, com uma integração do Power BI com o Snowflake, o usuário do PowerBI não pode mudar de função mesmo quando este parâmetro está habilitado.
DISABLE
não permite que o cliente OAuth ou usuário troque de funções (ou seja,USE ROLE role;
). Padrão.ENABLE
permite que o cliente OAuth ou usuário troque de função.ENABLE_FOR_PRIVILEGE
permite que o cliente OAuth ou usuário troque de função somente para um cliente ou usuário com o privilégioUSE_ANY_ROLE
. Este privilégio pode ser concedido e revogado para uma ou mais funções disponíveis para o usuário. Por exemplo:GRANT USE_ANY_ROLE ON INTEGRATION external_oauth_1 TO role1;
REVOKE USE_ANY_ROLE ON INTEGRATION external_oauth_1 FROM role1;
Observe que o valor pode ser opcionalmente delimitado por aspas simples (por exemplo,
DISABLE
ou'DISABLE'
).EXTERNAL_OAUTH_SCOPE_DELIMITER = 'string_literal'
Especifica o delimitador de escopo no token de autorização, substituindo o delimitador padrão
','
. O delimitador pode ser qualquer caractere individual, como vírgula (','
) ou espaço (' '
).Você só pode usar essa propriedade se definir o parâmetro
EXTERNAL_OAUTH_TYPE
comoCUSTOM
.EXTERNAL_OAUTH_SCOPE_MAPPING_ATTRIBUTE = 'string_literal'
Especifica a declaração de token de acesso para mapear o token de acesso a uma função de conta.
Você só pode definir este parâmetro como
scp
ouscope
.Você só pode usar este parâmetro se definir o parâmetro
EXTERNAL_OAUTH_TYPE
comoCUSTOM
.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 do Microsoft Azure AD¶
O exemplo seguinte cria uma integração de segurança de OAuth externo para um servidor de autorização Microsoft Azure AD OAuth 2.0.
CREATE SECURITY INTEGRATION external_oauth_azure_1 TYPE = external_oauth ENABLED = true EXTERNAL_OAUTH_TYPE = azure EXTERNAL_OAUTH_ISSUER = '<AZURE_AD_ISSUER>' EXTERNAL_OAUTH_JWS_KEYS_URL = '<AZURE_AD_JWS_KEY_ENDPOINT>' EXTERNAL_OAUTH_TOKEN_USER_MAPPING_CLAIM = 'upn' EXTERNAL_OAUTH_SNOWFLAKE_USER_MAPPING_ATTRIBUTE = 'login_name';
Ver as configurações de integração usando DESCRIBE INTEGRATION:
DESC SECURITY INTEGRATION external_oauth_azure_1;
Exemplo do Okta¶
O exemplo seguinte cria uma integração de segurança de OAuth externo para um servidor de autorização Okta OAuth 2.0.
CREATE SECURITY INTEGRATION external_oauth_okta_1 TYPE = external_oauth ENABLED = true EXTERNAL_OAUTH_TYPE = okta EXTERNAL_OAUTH_ISSUER = '<OKTA_ISSUER>' EXTERNAL_OAUTH_JWS_KEYS_URL = '<OKTA_JWS_KEY_ENDPOINT>' EXTERNAL_OAUTH_TOKEN_USER_MAPPING_CLAIM = 'sub' EXTERNAL_OAUTH_SNOWFLAKE_USER_MAPPING_ATTRIBUTE = 'login_name';
Ver as configurações de integração usando DESCRIBE INTEGRATION:
DESC SECURITY INTEGRATION external_oauth_okta_1;
Exemplos do Microsoft Power BI SSO¶
Para exemplos, consulte: