Autenticação de API externa e segredos

Este tópico fornece conceitos sobre autenticação de API externa e segredos.

Neste tópico:

Visão geral

A autenticação de API externa fornece um caminho para autenticar um serviço que está hospedado fora do Snowflake. A solicitação da API de acesso ao serviço requer que a solicitação da API seja autenticada. Snowflake oferece suporte aos seguintes métodos de autenticação ao usar a autenticação de API externa:

  • Autenticação básica.

  • OAuth com fluxo de concessão de código.

  • OAuth com fluxo de credenciais de clientes.

Snowflake oferece suporte à autenticação básica (ou seja, nome de usuário e senha) no cabeçalho da solicitação da API, conforme especificado em RFC 7617, onde as credenciais de autenticação são codificadas usando Base64. Da mesma forma, Snowflake oferece suporte a OAuth 2.0, como especificado em RFC 6749. No Snowflake, as credenciais de autenticação são armazenadas e acessadas com segurança a partir de um objeto chamado segredo. O segredo é usado com um conector para acessar o serviço fora do Snowflake, como o conector do Snowflake para ServiceNow. Uma integração de segurança para autenticação da API externa permite que o Snowflake se conecte ao serviço hospedado fora do Snowflake ao usar os fluxos de OAuth.

Um segredo é um objeto em nível de esquema que armazena informações sensíveis, limita o acesso às informações sensíveis usando RBAC e é criptografado usando a hierarquia de criptografia de chaves do Snowflake. As informações presentes no objeto do segredo são criptografadas usando uma chave especial de nível de conta chamada de chave principal do *cofre*. Além disso, Chaves gerenciadas pelo cliente são usados na criação da chave principal do cofre, se sua conta Snowflake estiver habilitada para usar este recurso. Uma vez criado um segredo, somente componentes dedicados ao Snowflake, como integrações e funções externas, podem ler as informações sensíveis.

Por exemplo, uma função externa precisa acessar e ler o segredo para passar as credenciais de autenticação em um cabeçalho de autorização da API para fazer uma solicitação de API ao serviço fora do Snowflake. A ligação do segredo à função externa ocorre durante o processo de instalação do conector. No entanto, se um usuário executar uma operação DESCRIBE SECRET no segredo, o valor da senha armazenada no segredo nunca será exposto.

Snowflake fornece gerenciamento centralizado e controle de acesso das credenciais utilizadas para autenticação da API no segredo. Você pode implementar a separação de funções (isto é, SoD) para a gestão do segredo e das funções associadas à gestão do conector. O conector só precisa usar o nome do segredo, e os usuários aos quais foram concedidas as funções de conector não precisam visualizar as informações sensíveis armazenadas no segredo.

Gerenciamento de segredos

Snowflake fornece os seguintes comandos para gerenciar o objeto do segredo:

O Snowflake oferece suporte aos seguintes privilégios para determinar se os usuários podem criar, definir e possuir segredos.

Observe que operar em qualquer objeto de um esquema também requer o privilégio USAGE no banco de dados e esquema principais.

Privilégio

Uso

CREATE

Permite criar um novo segredo em um esquema.

USAGE

Permite o uso de um segredo.

OWNERSHIP

Transfere a propriedade da segredo, o que garante o controle total sobre o segredo. Necessário para alterar a maioria das propriedades de um segredo.

A seguinte tabela resume a relação entre as operações do comando do segredo e seus privilégios necessários.

Operação

Privilégio

CREATE SECRET

Uma função com o privilégio USAGE no banco de dados principal e esquema com o privilégio CREATE SECRET no mesmo esquema.

ALTER SECRET

Uma função com o privilégio OWNERSHIP no segredo.

DROP SECRET

Uma função com o privilégio OWNERSHIP no segredo.

DESCRIBE SECRET

Uma função com o privilégio USAGE no segredo.

SHOW SECRETS

Uma função com o privilégio USAGE no segredo.

USE SECRET

Uma função com o privilégio USAGE no segredo.

Este privilégio é necessário para a função que cria a função externa e chama a função externa em tempo de execução da consulta, se o segredo for usado com uma função externa.

Como usar autenticação e segredos da API externa

Para exemplos representativos, consulte:

Além disso, você pode replicar segredos usando a replicação de conta. Para obter mais detalhes, consulte Replicação e segredos.