Federação de identidades de carga de trabalho¶
Este documento é destinado aos seguintes públicos:
Desenvolvedores de serviços de nuvem internos.
Administradores que gerenciam integrações com serviços internos e externos.
Desenvolvedores de aplicativos SaaS multilocatários que desejam emitir tokens de ID de Federação OpenID Connect (OIDC) para cargas de trabalho individuais em execução em sua plataforma, para que cada carga de trabalho do cliente possa se autenticar no Snowflake como um usuário dedicado.
A federação de identidade de carga de trabalho é um método de autenticação serviço a serviço que permite que cargas de trabalho, como aplicativos, serviços ou contêineres, se autentiquem no Snowflake usando o sistema de identidade nativo do provedor de nuvem, como funções AWS Identity and Access Management (AWS IAM), Microsoft Entra ID e contas de serviço Google Cloud, para obter um atestado que o Snowflake pode usar e validar.
A federação de identidade de carga de trabalho elimina a necessidade de gerenciar e armazenar credenciais de longa duração, como senhas, chaves API, pares de chaves e tokens de acesso programático para autenticação no Snowflake. A federação de identidade de carga de trabalho também reduz a complexidade envolvida na obtenção de credenciais, enquanto outros métodos, como OAuth externo, podem exigir mais esforço para serem configurados. Aplicativos, serviços e contêineres que utilizam conectores Snowflake obtêm automaticamente credenciais de curta duração do provedor de identidade (IdP) de sua plataforma por meio dos mecanismos nativos de cada plataforma.
Benefícios¶
Esta seção descreve por que você pode querer usar a federação de identidade de carga de trabalho para autenticação:
Custo-benefício: Usar IdPs existentes para gerenciar identidades de serviço reduz a necessidade de ferramentas ou licenças adicionais, o que pode ser econômico.
Interoperabilidade: Serviços populares de provedores de nuvem, como AWS IAM, Entra ID e Google Cloud, oferecem suporte e incentivam a federação de identidade de carga de trabalho como um método de autenticação para cargas de trabalho externas.
Auditoria e monitoramento convenientes:
Os administradores podem usar serviços de provedores de nuvem existentes, como o AWS CloudTrail e o Azure Monitor, para registrar e monitorar atividades.
Os administradores do Snowflake podem consultar as exibições LOGIN_HISTORY e CREDENTIALS no esquema ACCOUNT_USAGE para monitorar e auditar serviços que usam a federação de identidades de carga de trabalho.
Fluxo de trabalho para implementar a federação de identidades de carga de trabalho¶
Você pode usar a federação de identidades de carga de trabalho para autenticar uma variedade de cargas de trabalho usando diferentes IdPs, mas o fluxo de trabalho básico, conforme mostrado nas etapas a seguir, permanece o mesmo:
Como administrador de carga de trabalho, configure seu serviço para usar um provedor de identidade nativo para que o provedor possa emitir um atestado da identidade da sua carga de trabalho. Esse atestado geralmente é, mas nem sempre, um token da Web JSON (JWT).
Como administrador do Snowflake, crie um usuário de serviço Snowflake para sua carga de trabalho. Você define as propriedades desse usuário com os valores encontrados no atestado enviado pelo provedor. Por exemplo, uma propriedade de usuário pode especificar o nome de uma função IAM ou o URL do emissor do provedor.
Como desenvolvedor de carga de trabalho, configure sua carga de trabalho para usar um driver Snowflake. Os drivers enviam o atestado ao Snowflake para verificação.
Para ver exemplos completos desse fluxo de trabalho para diferentes tipos de cargas de trabalho e IdPs, consulte Introdução.
Requisitos de controle de acesso¶
Para configurar a federação de identidade da carga de trabalho para um usuário do serviço Snowflake (ou seja, um usuário com a propriedade TYPE definida como SERVICE
), você deve conceder às suas funções ativadas um dos seguintes privilégios:
OWNERSHIP no usuário do serviço.
MODIFY PROGRAMMATIC AUTHENTICATION METHODS no usuário do serviço.
Drivers Snowflake compatíveis¶
Uma carga de trabalho usa um driver Snowflake para enviar um atestado ao se conectar ao Snowflake. Os seguintes drivers oferecem suporte à federação de identidades de carga de trabalho:
Driver |
Versão mínima |
---|---|
v1.16.0 |
|
v3.26.0 |
|
v4.8.0 |
|
v2.2.0 |
|
v3.11.0 |
|
v3.17.0 |
Fortalecimento de sua postura de segurança¶
Você pode usar uma política de autenticação para controlar quais usuários do serviço Snowflake podem se autenticar com a federação de identidades de carga de trabalho. Você também pode criar e definir a política de autenticação para que uma carga de trabalho possa se autenticar somente se usar um provedor de identidade especificado ou uma conta dentro desse provedor.
Por exemplo, a seguinte política de autenticação permite que uma carga de trabalho seja autenticada somente se usar Microsoft Entra ID como seu provedor e o emissor do atestado for um locatário Microsoft Entra ID com o ID de locatário https://login.microsoftonline.com/9ebd1ec9-9a78-4429-8f53-5cf870a812d1/v2.0
:
CREATE AUTHENTICATION POLICY workload_policy WORKLOAD_IDENTITY_POLICY=( ALLOWED_PROVIDERS = (AZURE) ALLOWED_AZURE_ISSUERS = ( 'https://login.microsoftonline.com/9ebd1ec9-9a78-4429-8f53-5cf870a812d1/v2.0') );
Para obter mais informações sobre o parâmetro WORKLOAD_IDENTITY_POLICY
, consulte CREATE AUTHENTICATION POLICY.
Para obter mais informações sobre como definir uma política de autenticação para que ela seja aplicada, consulte Configuração de uma política de autenticação em uma conta ou usuário.
Introdução¶
Autenticar no Snowflake usando funções do AWS IAM e um driver Python do Snowflake¶
Configuração de AWS¶
Para configurar seu serviço AWS para usar o AWS IAM como seu provedor de identidade, anexe uma função do IAM. Para obter mais informações, consulte a documentação da AWS correspondente à sua carga de trabalho.
Para o Amazon EC2, consulte Anexar uma função do IAM a uma instância.
Para o AWS Lambda, consulte Definição de permissões de função do Lambda com uma função de execução.
Configurar o Snowflake¶
Para configurar o Snowflake, crie um usuário de serviço do Snowflake (ou seja, um usuário do tipo SERVICE
) que use a federação de identidades da carga de trabalho para se autenticar com o Snowflake.
Antes de começar
Para configurar o Snowflake com sucesso, você precisa ter o identificador de recurso da Amazon (ARN) que identifica exclusivamente a função ou o usuário AWS associado à instância que está sendo autenticada no Snowflake. Para obter o ARN de uma função do IAM, conclua as seguintes etapas:
Faça login no Console da AWS e navegue até o Painel do IAM.
Na navegação à esquerda, selecione Roles.
Selecione o nome da função que você anexou à sua instância da AWS.
Na seção Summary, localize o ARN e selecione o ícone Copy.
O Snowflake aceita os seguintes formatos de identificadores do IAM:
arn:aws:iam::account:user/user_name_with_path
arn:aws:iam::account:role/role_name_with_path
arn:aws:sts::account:assumed_role/role_name/role_session_name
Para criar um usuário de serviço para sua carga de trabalho:
Faça login no Snowsight.
Para abrir a lista de planilhas, selecione Projects » Worksheets.
Para abrir uma nova planilha SQL, selecione +.
Para criar um usuário de serviço que use a federação de identidades da carga de trabalho para autenticação com o Snowflake, execute uma instrução CREATE USER na planilha:
CREATE USER <username> WORKLOAD_IDENTITY = ( TYPE = AWS ARN = '<amazon_resource_identifier>' ) TYPE = SERVICE DEFAULT_ROLE = PUBLIC;
Em que
ARN
é o valor obtido antes de iniciar essas etapas.
Configurar sua carga de trabalho para usar um driver Snowflake¶
Nota
Você pode configurar sua carga de trabalho para usar qualquer driver Snowflake compatível com a federação de identidades de carga de trabalho. Para a lista completa, consulte Drivers Snowflake compatíveis.
Se sua carga de trabalho precisar de um driver Python, conclua as seguintes etapas:
No código do aplicativo Python, adicione o seguinte código-fonte:
import os import snowflake.connector conn = snowflake.connector.connect( account='<snowflake_account>', authenticator='WORKLOAD_IDENTITY', workload_identity_provider='AWS' )
Execute o aplicativo Python. Ele se autentica no Snowflake usando federação de identidades de carga de trabalho.
Autenticar no Snowflake usando o Microsoft Entra ID e um driver Python do Snowflake¶
Conclua as etapas em cada seção listada abaixo para usar a federação de identidade de carga de trabalho para autenticar no Snowflake a partir do Microsoft Entra ID:
Configuração de Microsoft Entra ID¶
Um administrador de locatário do Microsoft Entra ID deve concluir as etapas a seguir para permitir o uso da identidade de carga de trabalho do Snowflake. Essas etapas precisam ser executadas apenas uma vez por locatário do Microsoft Entra ID:
Efetue login no portal do Microsoft Azure.
Certifique-se de ter privilégios de administrador de locatário do Azure.
Conceda permissão para instalar o aplicativo Snowflake EntraID multilocatário acessando o URI de consentimento.
O aplicativo Snowflake EntraID multilocatário é verificado pelo editor e representa o Snowflake como um recurso. O aplicativo é usado como o destinatário do token de acesso durante a autenticação no Snowflake. Esse aplicativo requer apenas permissões básicas e não tem privilégios.
Selecione Accept para conceder permissões ao aplicativo Snowflake EntraID.
Configuração de Microsoft Azure¶
Conclua as etapas a seguir para configurar seu serviço do Microsoft Azure para usar a federação de identidade de carga de trabalho:
Efetue login no portal do Microsoft Azure.
Selecione sua carga de trabalho, como uma máquina virtual ou um serviço de aplicativo.
Na barra lateral, navegue até Security » Identity.
Habilite uma identidade gerenciada para uma VM do Azure ou uma função do Azure.
Salve o Object (Principal) ID para uma etapa posterior.
Configurar o Snowflake¶
Para configurar o Snowflake, crie um usuário de serviço do Snowflake (ou seja, um usuário do tipo SERVICE
) que use a federação de identidades da carga de trabalho para se autenticar com o Snowflake.
Antes de começar
Para configurar o Snowflake com sucesso, você precisa das seguintes informações:
O ID do objeto (ID principal) com distinção entre maiúsculas e minúsculas da identidade gerenciada que você habilitou na etapa anterior. É possível usar o Portal do Azure para copiar esse identificador da página Identity da sua VM ou função do Azure.
Seu locatário do Microsoft Entra ID. Use esse valor para construir o URL de autoridade.
Para obter o ID do locatário usando o console do Microsoft Entra, consulte Como encontrar seu locatário do Microsoft Entra ID.
Para obter o ID do locatário usando o PowerShell, execute os seguintes comandos:
Connect-AzAccount Get-AzTenant
Para criar um usuário de serviço para sua carga de trabalho:
Faça login no Snowsight.
Para abrir a lista de planilhas, selecione Projects » Worksheets.
Para abrir uma nova planilha SQL, selecione +.
Para criar um usuário de serviço que use a federação de identidades da carga de trabalho para autenticação com o Snowflake, execute uma instrução CREATE USER na planilha:
CREATE USER <username> WORKLOAD_IDENTITY = ( TYPE = AZURE ISSUER = 'https://login.microsoftonline.com/<tenant_id>/v2.0' SUBJECT = '<managed_identity_object_id>' ) TYPE = SERVICE DEFAULT_ROLE = PUBLIC;
Em que
ISSUER
eSUBJECT
são os valores obtidos antes de iniciar essas etapas.
Configurar sua carga de trabalho para usar um driver Snowflake¶
Nota
Você pode configurar sua carga de trabalho para usar qualquer driver Snowflake compatível com a federação de identidades de carga de trabalho. Para a lista completa, consulte Drivers Snowflake compatíveis.
Se sua carga de trabalho precisar de um driver Python, conclua as seguintes etapas:
No código do aplicativo Python, adicione o seguinte código-fonte:
import snowflake.connector conn = snowflake.connector.connect( account='<snowflake_account>', authenticator='WORKLOAD_IDENTITY', workload_identity_provider='AZURE' )
Execute o aplicativo Python. Ele se autentica no Snowflake usando federação de identidades de carga de trabalho.
Nota
Como desenvolvedor da carga de trabalho, talvez seja necessário definir uma variável de ambiente relacionada à identidade gerenciada que o administrador da carga de trabalho habilitou. Se o administrador habilitou uma identidade gerenciada atribuída pelo usuário em vez de uma atribuída pelo sistema, você deverá definir a variável de ambiente MANAGED_IDENTITY_CLIENT_ID para o ID do cliente da identidade gerenciada que deseja usar para autenticação no Snowflake.
Autenticar no Snowflake usando o Google Cloud e um driver Python do Snowflake¶
Configuração de Google Cloud¶
Para configurar seu serviço para usar o Google Cloud como seu provedor de identidade, anexe uma conta de serviço à sua instância do GCE ou do Cloud Run.
Configurar o Snowflake¶
Para configurar o Snowflake, crie um usuário de serviço do Snowflake (ou seja, um usuário do tipo SERVICE
) que use a federação de identidades da carga de trabalho para se autenticar com o Snowflake.
Antes de começar
Para configurar o Snowflake com sucesso, você precisa ter o valor da propriedade uniqueId
da conta de serviço. Para obter esse ID exclusivo, use o Google Cloud CLI para executar o seguinte comando:
gcloud iam service-accounts describe "<SERVICE_ACCOUNT_EMAIL_ADDRESS>" --format="value(uniqueId)"
Para criar um usuário de serviço para sua carga de trabalho:
Faça login no Snowsight.
Para abrir a lista de planilhas, selecione Projects » Worksheets.
Para abrir uma nova planilha SQL, selecione +.
Para criar um usuário de serviço que use a federação de identidades da carga de trabalho para autenticação com o Snowflake, execute uma instrução CREATE USER na planilha:
CREATE USER <username> WORKLOAD_IDENTITY = ( TYPE = GCP SUBJECT = '<unique_id_of_service_account>' ) TYPE = SERVICE DEFAULT_ROLE = PUBLIC;
Em que
SUBJECT
é o valor obtido antes de iniciar essas etapas.
Configurar sua carga de trabalho para usar um driver Snowflake¶
Nota
Você pode configurar sua carga de trabalho para usar qualquer driver Snowflake compatível com a federação de identidades de carga de trabalho. Para a lista completa, consulte Drivers Snowflake compatíveis.
Se sua carga de trabalho precisar de um driver Python, conclua as seguintes etapas:
No código do aplicativo Python, adicione o seguinte código-fonte:
import snowflake.connector conn = snowflake.connector.connect( account='<snowflake_account>', authenticator='WORKLOAD_IDENTITY', workload_identity_provider='GCP' )
Execute o aplicativo Python. Ele se autentica no Snowflake usando federação de identidades de carga de trabalho.
Autenticar no Snowflake usando o emissor do OpenID Connect (OIDC) do Elastic Kubernetes Service (EKS)¶
Conclua as etapas em cada seção listada abaixo para usar a federação de identidade de carga de trabalho para autenticar no Snowflake a partir do Elastic Kubernetes Service (EKS):
Configuração de EKS¶
Configure o EKS para emitir tokens de ID compatíveis com o Snowflake.
Configure o YAML de implantação do pod para incluir um volume de token ServiceAccount projetado.
Configure os tokens de ID para conter uma declaração de público com
snowflakecomputing.com
.A seguir, um exemplo de configuração de YAML com o público adequado:
kind: Pod metadata: name: nginx spec: containers: - image: nginx name: nginx volumeMounts: - mountPath: /var/run/secrets/tokens name: snowflake-token serviceAccountName: build-robot volumes: - name: snowflake-token projected: sources: - serviceAccountToken: path: snowflake-token expirationSeconds: 7200 audience: snowflakecomputing.com
Configurar o Snowflake¶
Para configurar o Snowflake, crie um usuário de serviço do Snowflake (ou seja, um usuário do tipo SERVICE
) que use a federação de identidades da carga de trabalho para se autenticar com o Snowflake.
Antes de começar
Para configurar o Snowflake com sucesso, você precisa das seguintes informações:
O URL do emissor do provedor OIDC que está gerando o token de ID para a conta de serviço do Kubernetes. Para obter o URL desse emissor, você pode executar uma das seguintes tarefas:
Navegue até a guia Overview do seu cluster e copie o valor no campo OpenID Connect provider URL.
Execute o seguinte comando com acesso ao ponto de extremidade do servidor de API:
aws eks describe-cluster --name <cluster_name> --query "cluster.identity.oidc.issuer" --output text
O namespace e o nome da conta de serviço do Kubernetes. Use essas informações para construir o assunto do token de ID emitido pelo provedor OIDC.
Para criar um usuário de serviço para sua carga de trabalho:
Faça login no Snowsight.
Para abrir a lista de planilhas, selecione Projects » Worksheets.
Para abrir uma nova planilha SQL, selecione +.
Para criar um usuário de serviço que use a federação de identidades da carga de trabalho para autenticação com o Snowflake, execute uma instrução CREATE USER na planilha:
CREATE USER my_eks_service WORKLOAD_IDENTITY = ( TYPE = OIDC ISSUER = 'https://oidc.eks.<region>.amazonaws.com/id/<issuer_id>' SUBJECT = 'system:serviceaccount:<service_account_namespace>:<service_account_name>' ) TYPE = SERVICE;
Em que
ISSUER
eSUBJECT
são os valores obtidos antes de iniciar essas etapas.
Configurar sua carga de trabalho para usar um driver Snowflake¶
Nota
Você pode configurar sua carga de trabalho para usar qualquer driver Snowflake compatível com a federação de identidades de carga de trabalho. Para a lista completa, consulte Drivers Snowflake compatíveis.
Se sua carga de trabalho precisar de um driver Python, conclua as seguintes etapas:
No código do aplicativo Python, adicione o seguinte código-fonte:
conn = snowflake.connector.connect( account='<snowflake_account>', authenticator='WORKLOAD_IDENTITY', workload_identity_provider='OIDC', token_file_path='<service_account_token_path>' )
Em que
service_account_token_path
é o token criado na etapa Configuração de EKS. Com base no exemplo do YAML dessa etapa, o caminho do token seria/var/run/secrets/tokens/snowflake-token
.Execute o aplicativo Python. Ele se autentica no Snowflake usando federação de identidades de carga de trabalho.
Autenticar no Snowflake usando um emissor do OpenID Connect (OIDC) do Azure Kubernetes Service (AKS)¶
Conclua as etapas em cada seção listada abaixo para usar a federação de identidade de carga de trabalho para autenticar no Snowflake a partir do Azure Kubernetes Service (AKS):
Configuração de AKS¶
Configure o AKS para emitir tokens de ID compatíveis com o Snowflake:
Configure o AKS para emitir tokens de ID compatíveis com o Snowflake.
Configure o YAML de implantação do pod para incluir um volume de token ServiceAccount projetado.
Configure os tokens de ID para conter uma declaração de público com
snowflakecomputing.com
.A seguir, um exemplo de configuração de YAML com o público adequado:
kind: Pod metadata: name: nginx spec: containers: - image: nginx name: nginx volumeMounts: - mountPath: /var/run/secrets/tokens name: snowflake-token serviceAccountName: build-robot volumes: - name: snowflake-token projected: sources: - serviceAccountToken: path: snowflake-token expirationSeconds: 7200 audience: snowflakecomputing.com
Configurar o Snowflake¶
Para configurar o Snowflake, crie um usuário de serviço do Snowflake (ou seja, um usuário do tipo SERVICE
) que use a federação de identidades da carga de trabalho para se autenticar com o Snowflake.
Antes de começar
Para configurar o Snowflake com sucesso, você precisa das seguintes informações:
O URL do emissor do provedor OIDC que está gerando o token de ID para a conta de serviço do Kubernetes. Para obter o URL desse emissor, consulte a documentação da Microsoft
O namespace e o nome da conta de serviço do Kubernetes. Use essas informações para construir o assunto do token de ID emitido pelo provedor OIDC.
Para criar um usuário de serviço para sua carga de trabalho:
Faça login no Snowsight.
Para abrir a lista de planilhas, selecione Projects » Worksheets.
Para abrir uma nova planilha SQL, selecione +.
Para criar um usuário de serviço que use a federação de identidades da carga de trabalho para autenticação com o Snowflake, execute uma instrução CREATE USER na planilha:
CREATE USER my_aks_service WORKLOAD_IDENTITY = ( TYPE = OIDC ISSUER = 'https://<region>.oic.prod-aks.azure.com/<tenant_id>/<uuid>/' SUBJECT = 'system:serviceaccount:<service_account_namespace>:<service_account_name>' ) TYPE = SERVICE;
Em que
ISSUER
eSUBJECT
são os valores obtidos antes de iniciar essas etapas.
Configurar sua carga de trabalho para usar um driver Snowflake¶
Nota
Você pode configurar sua carga de trabalho para usar qualquer driver Snowflake compatível com a federação de identidades de carga de trabalho. Para a lista completa, consulte Drivers Snowflake compatíveis.
Se sua carga de trabalho precisar de um driver Python, conclua as seguintes etapas:
No código do aplicativo Python, adicione o seguinte código-fonte:
conn = snowflake.connector.connect( account='<snowflake_account>', authenticator='WORKLOAD_IDENTITY', workload_identity_provider='OIDC', token_file_path='<service_account_token_path>' )
Em que
service_account_token_path
é o token criado na etapa Configuração de AKS. Com base no exemplo do YAML dessa etapa, o caminho do token seria/var/run/secrets/tokens/snowflake-token
.Execute o aplicativo Python. Ele se autentica no Snowflake usando federação de identidades de carga de trabalho.
Autenticar no Snowflake usando um emissor do OpenID Connect (OIDC) do Google Kubernetes Engine (GKE)¶
Conclua as etapas em cada seção listada abaixo para usar a federação de identidade de carga de trabalho para autenticar no Snowflake a partir do Google Kubernetes Engine (GKE):
Configuração de GKE¶
Configure o GKE para emitir tokens de ID compatíveis com o Snowflake.
Configure o YAML de implantação do pod para incluir um volume de token ServiceAccount projetado.
Configure os tokens de ID para conter uma declaração de público com
snowflakecomputing.com
.A seguir, um exemplo de configuração de YAML com o público adequado:
kind: Pod metadata: name: nginx spec: containers: - image: nginx name: nginx volumeMounts: - mountPath: /var/run/secrets/tokens name: snowflake-token serviceAccountName: build-robot volumes: - name: snowflake-token projected: sources: - serviceAccountToken: path: snowflake-token expirationSeconds: 7200 audience: snowflakecomputing.com
Configurar o Snowflake¶
Para configurar o Snowflake, crie um usuário de serviço do Snowflake (ou seja, um usuário do tipo SERVICE
) que use a federação de identidades da carga de trabalho para se autenticar com o Snowflake.
Antes de começar
Para configurar o Snowflake com sucesso, você precisa das seguintes informações:
O ID do projeto do Google Cloud, a região do cluster e o nome do cluster. Use essas informações para construir o emissor do OIDC.
O namespace e o nome da conta de serviço do Kubernetes. Use essas informações para construir o assunto do token de ID emitido pelo provedor OIDC.
Para criar um usuário de serviço para sua carga de trabalho:
Faça login no Snowsight.
Para abrir a lista de planilhas, selecione Projects » Worksheets.
Para abrir uma nova planilha SQL, selecione +.
Para criar um usuário de serviço que use a federação de identidades da carga de trabalho para autenticação com o Snowflake, execute uma instrução CREATE USER na planilha:
CREATE USER my_gke_service WORKLOAD_IDENTITY = ( TYPE = OIDC ISSUER = 'https://container.googleapis.com/v1/projects/<project_id>/locations/<region>/clusters/<cluster_name>' SUBJECT = 'system:serviceaccount:<service_account_namespace>:<service_account_name>' ) TYPE = SERVICE;
Em que
ISSUER
eSUBJECT
são os valores obtidos antes de iniciar essas etapas.
Configurar sua carga de trabalho para usar um driver Snowflake¶
Nota
Você pode configurar sua carga de trabalho para usar qualquer driver Snowflake compatível com a federação de identidades de carga de trabalho. Para a lista completa, consulte Drivers Snowflake compatíveis.
Se sua carga de trabalho precisar de um driver Python, conclua as seguintes etapas:
No código do aplicativo Python, adicione o seguinte código-fonte:
conn = snowflake.connector.connect( account='<snowflake_account>', authenticator='WORKLOAD_IDENTITY', workload_identity_provider='OIDC', token_file_path='<service_account_token_path>' )
Em que
service_account_token_path
é o token criado na etapa Configuração de GKE. Com base no exemplo do YAML dessa etapa, o caminho do token seria/var/run/secrets/tokens/snowflake-token
.Execute o aplicativo Python. Ele se autentica no Snowflake usando federação de identidades de carga de trabalho.
Autenticar no Snowflake usando um provedor OpenID Connect (OIDC) personalizado¶
Conclua as etapas em cada seção listada abaixo para usar a federação de identidade de carga de trabalho para autenticar no Snowflake a partir de um provedor OIDC personalizado:
Configurar seu provedor OIDC¶
Certifique-se de que seu provedor OIDC seja compatível com a configuração do OpenID, conforme especificado na especificação do Discovery. Tanto a configuração quanto o ponto de extremidade
jwks_uri
da configuração devem ser acessíveis publicamente.Configure seu provedor OpenID para emitir tokens de ID com uma declaração de público definida como
snowflakecomputing.com
ou uma lista personalizada não vazia. Se você definir uma lista personalizada não vazia, precisará especificá-la ao criar um usuário de serviço no Snowflake.
Configurar o Snowflake¶
Para configurar o Snowflake, crie um usuário de serviço do Snowflake (ou seja, um usuário do tipo SERVICE
) que use a federação de identidades da carga de trabalho para se autenticar com o Snowflake.
Antes de começar
Para configurar o Snowflake com sucesso, você precisa das seguintes informações:
O URL do emissor do seu provedor OIDC.
A declaração de assunto associada à sua carga de trabalho.
Você pode obter ambos os valores analisando as declarações iss
e sub
de um token de ID emitido para sua carga de trabalho. Por exemplo, se você tiver acesso a um ambiente semelhante ao Unix com jq
, cat
e echo
, poderá salvar seu token de ID em um arquivo e executar os comandos a seguir.
ID_TOKEN_PATH=<id_token_path>
JWS_PAYLOAD=$(cat $ID_TOKEN_PATH | jq -R 'split(".") | .[1] | gsub("-";"+") | gsub("_";"/") | @base64d | fromjson')
echo "ISSUER = '$(echo $JWS_PAYLOAD | jq -r .iss)'"
echo "SUBJECT = '$(echo $JWS_PAYLOAD | jq -r .sub)'"
Para saber como obter um token de ID, consulte a documentação do seu provedor OIDC.
Para criar um usuário de serviço para sua carga de trabalho:
Faça login no Snowsight.
Para abrir a lista de planilhas, selecione Projects » Worksheets.
Para abrir uma nova planilha SQL, selecione +.
Para criar um usuário de serviço que use a federação de identidades da carga de trabalho para autenticação com o Snowflake, execute uma instrução CREATE USER na planilha:
CREATE USER my_custom_service WORKLOAD_IDENTITY = ( TYPE = OIDC ISSUER = '<issuer>' SUBJECT = '<subject>' OIDC_AUDIENCE_LIST = ('<custom_audience>') ) TYPE = SERVICE;
Onde:
ISSUER
eSUBJECT
são os valores que você obteve antes de iniciar estas etapas.OIDC_AUDIENCE_LIST
é um superconjunto não vazio da declaração de público do token de ID definida em Configurar seu provedor OIDC. Você não precisa especificarOIDC_AUDIENCE_LIST
se a declaração de público do token de ID forsnowflakecomputing.com
.
Configurar sua carga de trabalho para usar um driver Snowflake¶
Nota
Você pode configurar sua carga de trabalho para usar qualquer driver Snowflake compatível com a federação de identidades de carga de trabalho. Para a lista completa, consulte Drivers Snowflake compatíveis.
Se sua carga de trabalho precisar de um driver Python, conclua as seguintes etapas:
No código do aplicativo Python, adicione o seguinte código-fonte:
conn = snowflake.connector.connect( account='<snowflake_account>', authenticator='WORKLOAD_IDENTITY', workload_identity_provider='OIDC', token='<id_token>' )
Em que
id_token
é um token de ID não expirado recebido do seu provedor OIDC para sua carga de trabalho. Para saber como obter esse token, consulte a documentação do seu provedor OIDC.Execute o aplicativo Python. Ele se autentica no Snowflake usando federação de identidades de carga de trabalho.
Limitações e considerações¶
As cargas de trabalho do Azure não podem ser localizadas em nuvens soberanas do Azure, como Azure China e Azure US Gov. Essa limitação não está relacionada à região Snowflake da sua conta.