Autenticando o Snowflake REST APIs com Snowflake¶
Este tópico descreve como autenticar no servidor ao usar o Snowflake REST APIs.
Ao enviar uma solicitação, a solicitação deve incluir informações de autenticação usando um dos seguintes:
Como usar a autenticação por par de chaves¶
Ao usar a autenticação de par de chaves, você precisa concluir as seguintes tarefas:
Configuração de autenticação de par de chaves¶
Para usar a autenticação por par de chaves, siga esses passos:
Configuração de autenticação de par de chaves.
Como parte desse processo, você deve:
Gerar um par de chaves público-privado. A chave privada gerada deve estar em um arquivo (por exemplo, chamado
rsa_key.p8
).Atribua a chave pública a seu usuário do Snowflake. Depois de atribuir a chave ao usuário, execute o comando DESCRIBE USER. Na saída, a propriedade
RSA_PUBLIC_KEY_FP
deve ser definida como a impressão digital da chave pública atribuída ao usuário.
Para obter instruções sobre como gerar o par de chaves e atribuir uma chave a um usuário, consulte Autenticação de pares de chaves e rotação de pares de chaves.
Use o SnowSQL para verificar se você pode usar a chave privada gerada para conectar ao Snowflake:
$ snowsql -a <account_identifier> -u <user> --private-key-path <path>/rsa_key.p8
Se você tiver gerado uma chave privada criptografada, o SnowSQL solicitará a senha que você criou quando gerou a chave.
Como gerar um token JWT¶
Para gerar um token JWT no código do aplicativo, siga estas etapas:
Gere a impressão digital (um hash SHA-256) da chave pública para o usuário. Prefixe a impressão digital com
SHA256:
.Por exemplo:
SHA256:hash
Você também pode executar o comando SQL DESCRIBE USER para obter o valor da propriedade RSA_PUBLIC_KEY_FP.
Gere um web token JSON (JWT) com os seguintes campos na carga útil:
Campo
Descrição
Exemplo
iss
Emissor do JWT. Defina-o com o seguinte valor:
account_identifier.user.SHA256:public_key_fingerprint
onde:
account_identifier
é seu identificador da conta Snowflake.Se você estiver usando o localizador de contas, exclua qualquer informação de região do localizador de contas.
user
é seu nome de usuário Snowflake.SHA256:public_key_fingerprint
é a impressão digital que você gerou na etapa anterior.
Nota
Os valores
account_identifier
euser
devem usar todos os caracteres maiúsculos.MYORGANIZATION-MYACCOUNT.MYUSER.SHA256:public_key_fingerprint
sub
Assunto do JWT. Defina-o com o seguinte valor:
account_identifier.user
MYORGANIZATION-MYACCOUNT.MYUSER
iat
Tempo de emissão do JWT em UTC. Defina o valor como o valor de tempo atual como segundos ou milissegundos.
1615370644
(segundos) .1615370644000
(milissegundos)exp
Tempo de expiração do JWT em UTC. Você pode especificar o valor como segundos ou milissegundos.
Nota
Nota: o JWT é válido por, no máximo, uma hora após a emissão do token, mesmo se você especificar um tempo de vencimento mais longo.
1615374184
(segundos) .1615374184000
(milissegundos)Em cada solicitação de API que você enviar, defina os seguintes cabeçalhos:
Authorization: Bearer JWT
onde
JWT
é o token que você gerou.X-Snowflake-Authorization-Token-Type: KEYPAIR_JWT
Uso de OAuth¶
Para usar o OAuth, siga estes passos:
Configure o OAuth para a autenticação.
Consulte Introdução ao OAuth para obter detalhes sobre como configurar o OAuth e obter um token OAuth.
Use o SnowSQL para verificar se você pode usar um token OAuth gerado para se conectar ao Snowflake:
Para sistemas Linux e MacOS
$ snowsql -a <account_identifier> -u <user> --authenticator=oauth --token=<oauth_token>
Para sistemas Windows
$ snowsql -a <account_identifier> -u <user> --authenticator=oauth --token="<oauth_token>"
Em cada solicitação de API que você enviar, defina os seguintes cabeçalhos:
Authorization: Bearer oauth_token
onde
oauth_token
é o token OAuth gerado.X-Snowflake-Authorization-Token-Type: OAUTH