lynx   »   [go: up one dir, main page]

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:

  1. 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).

  2. 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.

  3. 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

Go

v1.16.0

JDBC

v3.26.0

.NET

v4.8.0

Node.js

v2.2.0

ODBC

v3.11.0

Python

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')
  );
Copy

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.

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:

  1. Faça login no Console da AWS e navegue até o Painel do IAM.

  2. Na navegação à esquerda, selecione Roles.

  3. Selecione o nome da função que você anexou à sua instância da AWS.

  4. 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:

  1. Faça login no Snowsight.

  2. Para abrir a lista de planilhas, selecione Projects » Worksheets.

  3. Para abrir uma nova planilha SQL, selecione +.

  4. 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;
    
    Copy

    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:

  1. Instale o conector Snowflake para Python.

  2. 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'
    )
    
    Copy
  3. 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:

  1. Efetue login no portal do Microsoft Azure.

  2. Certifique-se de ter privilégios de administrador de locatário do Azure.

  3. 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.

  4. 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:

  1. Efetue login no portal do Microsoft Azure.

  2. Selecione sua carga de trabalho, como uma máquina virtual ou um serviço de aplicativo.

  3. Na barra lateral, navegue até Security » Identity.

  4. Habilite uma identidade gerenciada para uma VM do Azure ou uma função do Azure.

  5. 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 criar um usuário de serviço para sua carga de trabalho:

  1. Faça login no Snowsight.

  2. Para abrir a lista de planilhas, selecione Projects » Worksheets.

  3. Para abrir uma nova planilha SQL, selecione +.

  4. 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;
    
    Copy

    Em que ISSUER e SUBJECT 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:

  1. Instale o conector Snowflake para Python.

  2. 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'
    )
    
    Copy
  3. 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)"
Copy

Para criar um usuário de serviço para sua carga de trabalho:

  1. Faça login no Snowsight.

  2. Para abrir a lista de planilhas, selecione Projects » Worksheets.

  3. Para abrir uma nova planilha SQL, selecione +.

  4. 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;
    
    Copy

    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:

  1. Instale o conector Snowflake para Python.

  2. 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'
    )
    
    Copy
  3. 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

  1. Configure o EKS para emitir tokens de ID compatíveis com o Snowflake.

    1. Configure o YAML de implantação do pod para incluir um volume de token ServiceAccount projetado.

    2. 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
      
      Copy

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
      
      Copy
  • 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:

  1. Faça login no Snowsight.

  2. Para abrir a lista de planilhas, selecione Projects » Worksheets.

  3. Para abrir uma nova planilha SQL, selecione +.

  4. 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;
    
    Copy

    Em que ISSUER e SUBJECT 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:

  1. Instale o conector Snowflake para Python.

  2. 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>'
    )
    
    Copy

    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.

  3. 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:

  1. Habilite o emissor do OIDC no seu cluster AKS.

  2. Configure o AKS para emitir tokens de ID compatíveis com o Snowflake.

    1. Configure o YAML de implantação do pod para incluir um volume de token ServiceAccount projetado.

    2. 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
      
      Copy

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:

  1. Faça login no Snowsight.

  2. Para abrir a lista de planilhas, selecione Projects » Worksheets.

  3. Para abrir uma nova planilha SQL, selecione +.

  4. 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;
    
    Copy

    Em que ISSUER e SUBJECT 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:

  1. Instale o conector Snowflake para Python.

  2. 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>'
    )
    
    Copy

    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.

  3. 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

  1. Configure o GKE para emitir tokens de ID compatíveis com o Snowflake.

    1. Configure o YAML de implantação do pod para incluir um volume de token ServiceAccount projetado.

    2. 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
      
      Copy

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:

  1. Faça login no Snowsight.

  2. Para abrir a lista de planilhas, selecione Projects » Worksheets.

  3. Para abrir uma nova planilha SQL, selecione +.

  4. 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;
    
    Copy

    Em que ISSUER e SUBJECT 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:

  1. Instale o conector Snowflake para Python.

  2. 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>'
    )
    
    Copy

    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.

  3. 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

  1. 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.

  2. 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)'"
Copy

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:

  1. Faça login no Snowsight.

  2. Para abrir a lista de planilhas, selecione Projects » Worksheets.

  3. Para abrir uma nova planilha SQL, selecione +.

  4. 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;
    
    Copy

    Onde:

    • ISSUER e SUBJECT 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 especificar OIDC_AUDIENCE_LIST se a declaração de público do token de ID for snowflakecomputing.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:

  1. Instale o conector Snowflake para Python.

  2. 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>'
    )
    
    Copy

    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.

  3. 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.

Лучший частный хостинг