Workload Identity Federation

Dieses Dokument richtet sich an die folgenden Zielgruppen:

  • Entwickler von internen Clouddiensten.

  • Administratoren, die Integrationen mit internen und externen Diensten verwalten.

  • Entwickler von mehrinstanzenfähigen SaaS-Anwendungen, die OpenID Connect (OIDC) Federation ID-Token für einzelne Workloads ausgeben möchten, die auf ihrer Plattform ausgeführt werden, sodass sich jeder Kunden-Workload bei Snowflake als dedizierter Benutzer authentifizieren kann.

Workload Identity Federation ist eine Methode der Dienst-zu-Dienst-Authentifizierung, mit der sich Workloads, wie Anwendungen, Dienste oder Container, bei Snowflake über das native Identitätssystem ihres Cloudanbieters authentifizieren können, z. B. AWS Identity and Access Management (AWS IAM)-Rollen, Microsoft Entra ID- und Google Cloud-Dienstkonten, um eine Berechtigung zu erhalten, die Snowflake verwenden und validieren kann.

Durch Workload Identity Federation müssen keine langlebigen Anmeldeinformationen wie Kennwörter, API-Schlüssel, Schlüsselpaare und programmgesteuerte Zugriffstoken für die Authentifizierung bei Snowflake verwaltet und gespeichert werden. Workload Identity Federation reduziert auch die Komplexität, die mit dem Abrufen von Anmeldeinformationen verbunden ist, wo andere Methoden, wie z. B. Externe OAuth mehr Aufwand beim Einrichten erfordern können. Anwendungen, Dienste und Container, die Snowflake Connectors verwenden, erhalten automatisch kurzlebige Anmeldeinformationen vom Identitätsanbieter ihrer Plattform (IdP) durch die nativen Mechanismen der jeweiligen Plattform.

Vorteile

In diesem Abschnitt wird beschrieben, warum Sie möglicherweise die Workload Identity Federation für die Authentifizierung verwenden möchten:

  • Kosteneffizient: Das Verwenden vorhandener IdPs zur Verwaltung von Dienstidentitäten reduziert den Bedarf an zusätzlichen Tools oder Lizenzen, was kostengünstig sein kann.

  • Interoperabilität: Gängige Cloudanbieter-Dienste, wie beispielsweise AWS IAM, Entra ID und Google Cloud, unterstützen und fördern die Workload Identity Federation als Authentifizierungsmethode für externe Workloads.

  • Praktische Prüfung und Überwachung:

    • Administratoren können bestehende Cloudanbieter-Dienste nutzen, wie z. B. AWS CloudTrail und Azure Monitor, um Aktivitäten zu protokollieren und zu überwachen.

    • Snowflake-Administratoren können die Ansichten LOGIN_HISTORY und CREDENTIALS im ACCOUNT_USAGE-Schema zur Überwachung und Prüfung von Diensten abfragen, die die Workload Identity Federation verwenden.

Workflow für die Implementierung der Workload Identity Federation

Sie können die Workload Identity Federation verwenden, um eine Vielzahl von Workloads mit verschiedenen IdPs zu authentifizieren, aber der grundlegende Workflow, wie in den folgenden Schritten gezeigt, bleibt gleich:

  1. Konfigurieren Sie als Workload-Administrator Ihren Dienst so, dass er einen nativen Identitätsanbieter verwendet, damit der Anbieter eine Bescheinigung der Identität Ihres Workloads ausstellen kann. Diese Berechtigung ist oft, aber nicht immer, ein JSON Web Token (JWT).

  2. Erstellen Sie als Snowflake-Administrator einen Snowflake-Dienstbenutzer für Ihren Workload. Sie setzen die Eigenschaften dieses Benutzers auf die Werte, die Sie in der vom Anbieter gesendeten Berechtigung finden. Eine Benutzereigenschaft kann zum Beispiel den Namen einer IAM-Rolle oder die Aussteller-URL des Anbieters angeben.

  3. Als Workload-Entwickler können Sie Ihren Workload so konfigurieren, dass er einen Snowflake-Treiber verwendet. Die Treiber senden die Bescheinigung zur Überprüfung an Snowflake.

End-to-End-Beispiele dieses Workflows für verschiedene Typen von Workloads und IdPs finden Sie unter Erste Schritte.

Anforderungen an die Zugriffssteuerung

Für die Konfiguration der Workload Identity Federation für einen Snowflake-Dienstbenutzer, d. h. ein Benutzer mit der TYPE-Eigenschaft eingestellt auf SERVICE, müssen Sie Ihren aktivierten Rollen eine der folgenden Berechtigungen erteilen:

  • OWNERSHIP für den Dienstbenutzer.

  • MODIFY PROGRAMMATIC AUTHENTICATION METHODS für den Dienstbenutzer.

Unterstützte Snowflake-Treiber

Ein Workload verwendet einen Snowflake-Treiber, um eine Bescheinigung zu senden, wenn er sich mit Snowflake verbindet. Die folgenden Treiber unterstützen die Workload Identity Federation:

Treiber

Mindestversion

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

Verstärkung der Sicherheitsfunktionen

Sie können eine Authentifizierungsrichtlinie verwenden, um zu steuern, welche Snowflake-Dienstbenutzer sich mit der Workload Identity Federation authentifizieren können. Sie können die Authentifizierungsrichtlinie auch so erstellen und festlegen, dass sich ein Workload nur authentifizieren kann, wenn dabei ein bestimmter Identitätsanbieter oder ein Konto bei diesem Anbieter verwendet wird.

Die folgende Authentifizierungsrichtlinie ermöglicht beispielsweise einem Workload sich nur zu authentifizieren, wenn dieser Microsoft Entra ID als Anbieter verwendet und der Aussteller der Bescheinigung ein Microsoft Entra ID-Mandant mit Mandanten-ID https://login.microsoftonline.com/9ebd1ec9-9a78-4429-8f53-5cf870a812d1/v2.0 ist:

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

Weitere Informationen zum WORKLOAD_IDENTITY_POLICY-Parameter finden Sie unter CREATE AUTHENTICATION POLICY.

Weitere Informationen zum Einstellen einer Authentifizierungsrichtlinie, sodass sie erzwungen wird, finden Sie unter Festlegen einer Authentifizierungsrichtlinie für ein Konto oder einen Benutzer.

Erste Schritte

Authentifizierung bei Snowflake mit AWS IAM-Rollen und einem Snowflake Python-Treiber

AWS konfigurieren

Um Ihren AWS-Dienst für die Verwendung von AWS IAM als Identitätsanbieter zu konfigurieren, fügen Sie eine IAM-Rolle hinzu. Weitere Informationen dazu finden Sie in der AWS-Dokumentation, die Ihrem Workload entspricht.

Snowflake konfigurieren

Um Snowflake zu konfigurieren, erstellen Sie einen Snowflake-Dienstbenutzer, d. h. einen Benutzer vom Typ SERVICE, der zur Authentifizierung bei Snowflake die Workload Identity Federation verwendet.

Bevor Sie beginnen

Um Snowflake erfolgreich zu konfigurieren, müssen Sie den Amazon Resource Identifier (ARN) haben, der den AWS-Benutzer oder die Rolle, die mit der Instanz verbunden ist, die sich bei Snowflake authentifiziert, eindeutig identifiziert. Führen Sie die folgenden Schritte aus, um die ARN einer IAM-Rolle zu erhalten:

  1. Melden Sie sich bei der AWS-Konsole an, und navigieren Sie dann zum IAM-Dashboard.

  2. Wählen Sie im linken Navigationsbereich Roles aus.

  3. Wählen Sie den Namen der Rolle aus, die Sie mit Ihrer AWS-Instanz verknüpft haben.

  4. Im Summary-Abschnitt finden Sie die ARN. Wählen Sie dann das Copy-Symbol aus.

Snowflake akzeptiert die folgenden Formen von IAM-Bezeichnern:

  • 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

So erstellen Sie einen Dienstbenutzer für Ihren Workload:

  1. Melden Sie sich bei Snowsight an.

  2. Wählen Sie Projects » Worksheets aus, um die Liste der Arbeitsblätter zu öffnen.

  3. Zum Öffnen eines neuen SQL-Arbeitsblatts wählen Sie + aus.

  4. Um einen Dienstbenutzer zu erstellen, der zur Authentifizierung bei Snowflake die Workload Identity Federation verwendet, führen Sie eine CREATE USER-Anweisung im Arbeitsblatt aus:

    CREATE USER <username>
      WORKLOAD_IDENTITY = (
        TYPE = AWS
        ARN = '<amazon_resource_identifier>'
      )
      TYPE = SERVICE
      DEFAULT_ROLE = PUBLIC;
    
    Copy

    Wobei ARN der Wert ist, den Sie vor Beginn dieser Schritte erhalten haben.

Workload für die Verwendung eines Snowflake-Treibers konfigurieren

Bemerkung

Sie können Ihren Workload so konfigurieren, dass er jeden Snowflake-Treiber verwendet, der die Workload Identity Federation unterstützt. Die vollständige Liste finden Sie unter Unterstützte Snowflake-Treiber.

Wenn Ihr Workload einen Python-Treiber benötigt, führen Sie die folgenden Schritte aus:

  1. Installieren Sie den Snowflake Connector für Python.

  2. Fügen Sie Ihrem Python-Anwendungscode den folgenden Quellcode hinzu:

    import os
    import snowflake.connector
    
    
    conn = snowflake.connector.connect(
      account='<snowflake_account>',
      authenticator='WORKLOAD_IDENTITY',
      workload_identity_provider='AWS'
    )
    
    Copy
  3. Führen Sie Ihre Python-Anwendung aus. Diese authentifiziert sich bei Snowflake unter Verwendung der Workload Identity Federation.

Authentifizierung bei Snowflake mit Microsoft Entra ID und einem Snowflake Python-Treiber

Führen Sie die Schritte in den einzelnen unten aufgeführten Abschnitten aus, damit die Workload Identity Federation verwendet wird, um sich bei Snowflake mithilfe der Microsoft Entra ID zu authentifizieren:

Microsoft Entra ID konfigurieren

Ein Microsoft Entra ID-Mandantenadministrator muss die folgenden Schritte ausführen, um die Verwendung der Snowflake-Workload-Identität zu ermöglichen. Diese Schritte müssen nur einmal pro Microsoft Entra ID-Mandant ausgeführt werden:

  1. Melden Sie sich beim Microsoft Azure-Portal an.

  2. Stellen Sie sicher, dass Sie über Admin-Berechtigungen für Azure-Mandanten verfügen.

  3. Stimmen Sie der Installation der mehrinstanzenfähigen Snowflake EntraID-App zu, indem Sie die Zustimmungs-URI aufrufen.

    Die mehrinstanzenfähige Snowflake EntraID-App ist vom Herausgeber verifiziert und repräsentiert Snowflake als Ressource. Die App wird als Zielgruppe für das Zugriffstoken verwendet, wenn Sie sich bei Snowflake authentifizieren. Diese App benötigt nur grundlegende Berechtigungen und ist nicht berechtigungsabhängig.

  4. Wählen Sie Accept aus, um der Snowflake EntraID-App Berechtigungen zu erteilen.

Microsoft Azure konfigurieren

Führen Sie die folgenden Schritte aus, um Ihren Microsoft Azure-Dienst für die Verwendung der Workload Identity Federation zu konfigurieren:

  1. Melden Sie sich beim Microsoft Azure-Portal an.

  2. Wählen Sie Ihren Workload aus, z. B. eine virtuelle Maschine oder einen App-Dienst.

  3. Navigieren Sie in der Seitenleiste zu Security » Identity.

  4. Aktivieren Sie eine verwaltete Identität für eine Azure VM oder eine Azure-Funktion.

  5. Speichern Sie die Object (Principal) ID für einen späteren Schritt.

Snowflake konfigurieren

Um Snowflake zu konfigurieren, erstellen Sie einen Snowflake-Dienstbenutzer, d. h. einen Benutzer vom Typ SERVICE, der zur Authentifizierung bei Snowflake die Workload Identity Federation verwendet.

Bevor Sie beginnen

Um Snowflake erfolgreich zu konfigurieren, benötigen Sie die folgenden Informationen:

  • Die Objekt-ID (Prinzipal-ID) mit Unterscheidung von Groß-/Kleinschreibung der verwalteten Identität, die Sie im vorherigen Schritt aktiviert haben. Sie können das Azure-Portal verwenden, um diesen Bezeichner von der Identity-Seite für Ihr Azure VM oder -Funktion zu kopieren.

  • Ihre Microsoft Entra-Mandanten-ID. Sie verwenden diesen Wert, um die URL für die Autorisierung zu erstellen.

    • Um die Mandanten-ID mithilfe der Microsoft Entra Console zu erhalten, siehe So finden Sie Ihre Microsoft Entra-Mandanten-ID.

    • Damit Sie die Mandanten-ID durch Verwendung von PowerShell erhalten, führen Sie die folgenden Befehle aus:

      Connect-AzAccount
      Get-AzTenant
      
      Copy

So erstellen Sie einen Dienstbenutzer für Ihren Workload:

  1. Melden Sie sich bei Snowsight an.

  2. Wählen Sie Projects » Worksheets aus, um die Liste der Arbeitsblätter zu öffnen.

  3. Zum Öffnen eines neuen SQL-Arbeitsblatts wählen Sie + aus.

  4. Um einen Dienstbenutzer zu erstellen, der zur Authentifizierung bei Snowflake die Workload Identity Federation verwendet, führen Sie eine CREATE USER-Anweisung im Arbeitsblatt aus:

    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

    Wobei ISSUER und SUBJECT die Werte sind, die Sie vor Beginn dieser Schritte erhalten haben.

Workload für die Verwendung eines Snowflake-Treibers konfigurieren

Bemerkung

Sie können Ihren Workload so konfigurieren, dass er jeden Snowflake-Treiber verwendet, der die Workload Identity Federation unterstützt. Die vollständige Liste finden Sie unter Unterstützte Snowflake-Treiber.

Wenn Ihr Workload einen Python-Treiber benötigt, führen Sie die folgenden Schritte aus:

  1. Installieren Sie den Snowflake Connector für Python.

  2. Fügen Sie Ihrem Python-Anwendungscode den folgenden Quellcode hinzu:

    import snowflake.connector
    
    conn = snowflake.connector.connect(
      account='<snowflake_account>',
      authenticator='WORKLOAD_IDENTITY',
      workload_identity_provider='AZURE'
    )
    
    Copy
  3. Führen Sie Ihre Python-Anwendung aus. Diese authentifiziert sich bei Snowflake unter Verwendung der Workload Identity Federation.

Bemerkung

Als Workload-Entwickler müssen Sie möglicherweise eine Umgebungsvariable festlegen, die sich auf die verwaltete Identität bezieht, die Ihr Workload-Administrator aktiviert hat. Wenn Ihr Administrator eine vom Benutzer zugewiesene verwaltete Identität anstelle einer vom System zugewiesenen verwalteten Identität aktiviert hat, müssen Sie die MANAGED_IDENTITY_CLIENT_ID-Umgebungsvariable für die Client-ID der verwalteten Identität festlegen, die Sie für die Authentifizierung bei Snowflake verwenden möchten.

Authentifizierung bei Snowflake mit Google Cloud und einem Snowflake Python-Treiber

Google Cloud konfigurieren

Um Ihren Dienst für die Verwendung von Google Cloud als Identitätsanbieter zu konfigurieren, verbinden Sie ein Dienstkonto mit GCE oder Ihrer Cloud Run-Instanz.

Snowflake konfigurieren

Um Snowflake zu konfigurieren, erstellen Sie einen Snowflake-Dienstbenutzer, d. h. einen Benutzer vom Typ SERVICE, der zur Authentifizierung bei Snowflake die Workload Identity Federation verwendet.

Bevor Sie beginnen

Um Snowflake erfolgreich zu konfigurieren, müssen Sie den Wert der uniqueId-Eigenschaft des Dienstkontos kennen. Um diese eindeutige ID zu erhalten, verwenden Sie die Google Cloud CLI, um den folgenden Befehl auszuführen:

gcloud iam service-accounts describe "<SERVICE_ACCOUNT_EMAIL_ADDRESS>" --format="value(uniqueId)"
Copy

So erstellen Sie einen Dienstbenutzer für Ihren Workload:

  1. Melden Sie sich bei Snowsight an.

  2. Wählen Sie Projects » Worksheets aus, um die Liste der Arbeitsblätter zu öffnen.

  3. Zum Öffnen eines neuen SQL-Arbeitsblatts wählen Sie + aus.

  4. Um einen Dienstbenutzer zu erstellen, der zur Authentifizierung bei Snowflake die Workload Identity Federation verwendet, führen Sie eine CREATE USER-Anweisung im Arbeitsblatt aus:

    CREATE USER <username>
      WORKLOAD_IDENTITY = (
        TYPE = GCP
        SUBJECT = '<unique_id_of_service_account>'
      )
      TYPE = SERVICE
      DEFAULT_ROLE = PUBLIC;
    
    Copy

    Wobei SUBJECT der Wert ist, den Sie vor Beginn dieser Schritte erhalten haben.

Workload für die Verwendung eines Snowflake-Treibers konfigurieren

Bemerkung

Sie können Ihren Workload so konfigurieren, dass er jeden Snowflake-Treiber verwendet, der die Workload Identity Federation unterstützt. Die vollständige Liste finden Sie unter Unterstützte Snowflake-Treiber.

Wenn Ihr Workload einen Python-Treiber benötigt, führen Sie die folgenden Schritte aus:

  1. Installieren Sie den Snowflake Connector für Python.

  2. Fügen Sie Ihrem Python-Anwendungscode den folgenden Quellcode hinzu:

    import snowflake.connector
    
    conn = snowflake.connector.connect(
      account='<snowflake_account>',
      authenticator='WORKLOAD_IDENTITY',
      workload_identity_provider='GCP'
    )
    
    Copy
  3. Führen Sie Ihre Python-Anwendung aus. Diese authentifiziert sich bei Snowflake unter Verwendung der Workload Identity Federation.

Authentifizierung bei Snowflake mit OpenID Connect (OIDC)-Aussteller von Elastic Kubernetes Service (EKS)

Führen Sie die Schritte in den einzelnen unten aufgeführten Abschnitten aus, damit die Workload Identity Federation verwendet wird, um sich bei Snowflake mithilfe der Elastic Kubernetes Service (EKS) zu authentifizieren:

EKS konfigurieren

  1. Konfigurieren Sie EKS, um ID-Token auszugeben, die mit Snowflake kompatibel sind.

    1. Konfigurieren Sie Ihre Pod-Bereitstellung YAML, um ein projiziertes ServiceAccount-Token-Volumen einzufügen.

    2. Konfigurieren Sie die ID-Token, damit ein Zielgruppenanspruch (Audience Claim) mit snowflakecomputing.com enthalten ist.

      Das folgende Beispiel zeigt eine YAML-Konfiguration mit der richtigen Zielgruppe:

      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

Snowflake konfigurieren

Um Snowflake zu konfigurieren, erstellen Sie einen Snowflake-Dienstbenutzer, d. h. einen Benutzer vom Typ SERVICE, der zur Authentifizierung bei Snowflake die Workload Identity Federation verwendet.

Bevor Sie beginnen

Um Snowflake erfolgreich zu konfigurieren, benötigen Sie die folgenden Informationen:

  • Die Aussteller-URL des OIDC-Anbieters, der das ID-Token für das Kubernetes-Dienstkonto generiert. Um diese Aussteller-URL zu erhalten, können Sie eine der folgenden Aufgaben ausführen:

    • Navigieren Sie zur Overview-Registerkarte Ihres Clusters, und kopieren Sie den Wert in das Feld OpenID Connect provider URL.

    • Führen Sie den folgenden Befehl mit Zugriff auf den API-Serverendpunkt aus:

      aws eks describe-cluster --name <cluster_name> --query "cluster.identity.oidc.issuer" --output text
      
      Copy
  • Der Namespace und der Name des Kubernetes-Dienstkontos. Sie verwenden diese Informationen, um das Subjekt des ID-Tokens zu erstellen, das vom OIDC-Anbieter ausgegeben wird.

So erstellen Sie einen Dienstbenutzer für Ihren Workload:

  1. Melden Sie sich bei Snowsight an.

  2. Wählen Sie Projects » Worksheets aus, um die Liste der Arbeitsblätter zu öffnen.

  3. Zum Öffnen eines neuen SQL-Arbeitsblatts wählen Sie + aus.

  4. Um einen Dienstbenutzer zu erstellen, der zur Authentifizierung bei Snowflake die Workload Identity Federation verwendet, führen Sie eine CREATE USER-Anweisung im Arbeitsblatt aus:

    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

    Wobei ISSUER und SUBJECT die Werte sind, die Sie vor Beginn dieser Schritte erhalten haben.

Workload für die Verwendung eines Snowflake-Treibers konfigurieren

Bemerkung

Sie können Ihren Workload so konfigurieren, dass er jeden Snowflake-Treiber verwendet, der die Workload Identity Federation unterstützt. Die vollständige Liste finden Sie unter Unterstützte Snowflake-Treiber.

Wenn Ihr Workload einen Python-Treiber benötigt, führen Sie die folgenden Schritte aus:

  1. Installieren Sie den Snowflake Connector für Python.

  2. Fügen Sie Ihrem Python-Anwendungscode den folgenden Quellcode hinzu:

    conn = snowflake.connector.connect(
      account='<snowflake_account>',
      authenticator='WORKLOAD_IDENTITY',
      workload_identity_provider='OIDC',
      token_file_path='<service_account_token_path>'
    )
    
    Copy

    Wobei service_account_token_path derjenige ist, den Sie im Schritt EKS konfigurieren erstellt haben. Basierend auf dem YAML-Beispiel in diesem Schritt wäre der Token-Pfad /var/run/secrets/tokens/snowflake-token.

  3. Führen Sie Ihre Python-Anwendung aus. Diese authentifiziert sich bei Snowflake unter Verwendung der Workload Identity Federation.

Authentifizierung bei Snowflake mit einem OpenID Connect (OIDC)-Aussteller von Azure Kubernetes Service (AKS)

Führen Sie die Schritte in den einzelnen unten aufgeführten Abschnitten aus, damit die Workload Identity Federation verwendet wird, um sich bei Snowflake mithilfe der Azure Kubernetes Service (AKS) zu authentifizieren:

AKS konfigurieren

Konfigurieren Sie AKS, um ID-Token auszugeben, die mit Snowflake kompatibel sind:

  1. Aktivieren Sie den OIDC-Aussteller auf Ihrem AKS-Cluster.

  2. Konfigurieren Sie AKS, um ID-Token auszugeben, die mit Snowflake kompatibel sind.

    1. Konfigurieren Sie Ihre Pod-Bereitstellung YAML, um ein projiziertes ServiceAccount-Token-Volumen einzufügen.

    2. Konfigurieren Sie die ID-Token, damit ein Zielgruppenanspruch (Audience Claim) mit snowflakecomputing.com enthalten ist.

      Das folgende Beispiel zeigt eine YAML-Konfiguration mit der richtigen Zielgruppe:

      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

Snowflake konfigurieren

Um Snowflake zu konfigurieren, erstellen Sie einen Snowflake-Dienstbenutzer, d. h. einen Benutzer vom Typ SERVICE, der zur Authentifizierung bei Snowflake die Workload Identity Federation verwendet.

Bevor Sie beginnen

Um Snowflake erfolgreich zu konfigurieren, benötigen Sie die folgenden Informationen:

  • Die Aussteller-URL des OIDC-Anbieters, der das ID-Token für das Kubernetes-Dienstkonto generiert. Um diese Aussteller-URL zu erhalten, siehe die Microsoft -Dokumentation

  • Der Namespace und der Name des Kubernetes-Dienstkontos. Sie verwenden diese Informationen, um das Subjekt des ID-Tokens zu erstellen, das vom OIDC-Anbieter ausgegeben wird.

So erstellen Sie einen Dienstbenutzer für Ihren Workload:

  1. Melden Sie sich bei Snowsight an.

  2. Wählen Sie Projects » Worksheets aus, um die Liste der Arbeitsblätter zu öffnen.

  3. Zum Öffnen eines neuen SQL-Arbeitsblatts wählen Sie + aus.

  4. Um einen Dienstbenutzer zu erstellen, der zur Authentifizierung bei Snowflake die Workload Identity Federation verwendet, führen Sie eine CREATE USER-Anweisung im Arbeitsblatt aus:

    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

    Wobei ISSUER und SUBJECT die Werte sind, die Sie vor Beginn dieser Schritte erhalten haben.

Workload für die Verwendung eines Snowflake-Treibers konfigurieren

Bemerkung

Sie können Ihren Workload so konfigurieren, dass er jeden Snowflake-Treiber verwendet, der die Workload Identity Federation unterstützt. Die vollständige Liste finden Sie unter Unterstützte Snowflake-Treiber.

Wenn Ihr Workload einen Python-Treiber benötigt, führen Sie die folgenden Schritte aus:

  1. Installieren Sie den Snowflake Connector für Python.

  2. Fügen Sie Ihrem Python-Anwendungscode den folgenden Quellcode hinzu:

    conn = snowflake.connector.connect(
      account='<snowflake_account>',
      authenticator='WORKLOAD_IDENTITY',
      workload_identity_provider='OIDC',
      token_file_path='<service_account_token_path>'
    )
    
    Copy

    Wobei service_account_token_path derjenige ist, den Sie im Schritt AKS konfigurieren erstellt haben. Basierend auf dem YAML-Beispiel in diesem Schritt wäre der Token-Pfad /var/run/secrets/tokens/snowflake-token.

  3. Führen Sie Ihre Python-Anwendung aus. Diese authentifiziert sich bei Snowflake unter Verwendung der Workload Identity Federation.

Authentifizierung bei Snowflake mit einem OpenID Connect (OIDC)-Aussteller von Google Kubernetes Engine (GKE)

Führen Sie die Schritte in den einzelnen unten aufgeführten Abschnitten aus, damit die Workload Identity Federation verwendet wird, um sich bei Snowflake mithilfe der Google Kubernetes Engine (GKE) zu authentifizieren:

GKE konfigurieren

  1. Konfigurieren Sie GKE, um ID-Token auszugeben, die mit Snowflake kompatibel sind.

    1. Konfigurieren Sie Ihre Pod-Bereitstellung YAML, um ein projiziertes ServiceAccount-Token-Volumen einzufügen.

    2. Konfigurieren Sie die ID-Token, damit ein Zielgruppenanspruch (Audience Claim) mit snowflakecomputing.com enthalten ist.

      Das folgende Beispiel zeigt eine YAML-Konfiguration mit der richtigen Zielgruppe:

      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

Snowflake konfigurieren

Um Snowflake zu konfigurieren, erstellen Sie einen Snowflake-Dienstbenutzer, d. h. einen Benutzer vom Typ SERVICE, der zur Authentifizierung bei Snowflake die Workload Identity Federation verwendet.

Bevor Sie beginnen

Um Snowflake erfolgreich zu konfigurieren, benötigen Sie die folgenden Informationen:

  • Die Google Cloud-Projekt-ID, die Region des Clusters und der Name des Clusters. Sie verwenden diese Informationen, um den OIDC-Aussteller zu erstellen.

  • Der Namespace und der Name des Kubernetes-Dienstkontos. Sie verwenden diese Informationen, um das Subjekt des ID-Tokens zu erstellen, das vom OIDC-Anbieter ausgegeben wird.

So erstellen Sie einen Dienstbenutzer für Ihren Workload:

  1. Melden Sie sich bei Snowsight an.

  2. Wählen Sie Projects » Worksheets aus, um die Liste der Arbeitsblätter zu öffnen.

  3. Zum Öffnen eines neuen SQL-Arbeitsblatts wählen Sie + aus.

  4. Um einen Dienstbenutzer zu erstellen, der zur Authentifizierung bei Snowflake die Workload Identity Federation verwendet, führen Sie eine CREATE USER-Anweisung im Arbeitsblatt aus:

    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

    Wobei ISSUER und SUBJECT die Werte sind, die Sie vor Beginn dieser Schritte erhalten haben.

Workload für die Verwendung eines Snowflake-Treibers konfigurieren

Bemerkung

Sie können Ihren Workload so konfigurieren, dass er jeden Snowflake-Treiber verwendet, der die Workload Identity Federation unterstützt. Die vollständige Liste finden Sie unter Unterstützte Snowflake-Treiber.

Wenn Ihr Workload einen Python-Treiber benötigt, führen Sie die folgenden Schritte aus:

  1. Installieren Sie den Snowflake Connector für Python.

  2. Fügen Sie Ihrem Python-Anwendungscode den folgenden Quellcode hinzu:

    conn = snowflake.connector.connect(
      account='<snowflake_account>',
      authenticator='WORKLOAD_IDENTITY',
      workload_identity_provider='OIDC',
      token_file_path='<service_account_token_path>'
    )
    
    Copy

    Wobei service_account_token_path derjenige ist, den Sie im Schritt GKE konfigurieren erstellt haben. Basierend auf dem YAML-Beispiel in diesem Schritt wäre der Token-Pfad /var/run/secrets/tokens/snowflake-token.

  3. Führen Sie Ihre Python-Anwendung aus. Diese authentifiziert sich bei Snowflake unter Verwendung der Workload Identity Federation.

Authentifizierung bei Snowflake mit einem benutzerdefinierten OpenID Connect (OIDC)-Anbieter

Führen Sie die Schritte in den einzelnen unten aufgeführten Abschnitten aus, damit die Workload Identity Federation verwendet wird, um sich bei Snowflake mithilfe eines benutzerdefinierten OIDC-Anbieters zu authentifizieren:

OIDC-Anbieter konfigurieren

  1. Stellen Sie sicher, dass Ihr OIDC-Anbieter die OpenID-Konfiguration, wie in der Erkennungsspezifikation angegeben, unterstützt. Sowohl die Konfiguration als auch der jwks_uri-Endpunkt der Konfiguration muss öffentlich zugänglich sein.

  2. Konfigurieren Sie Ihren OpenID-Anbieter, um ID-Token mit einem Zielgruppenanspruch auszugeben, der auf snowflakecomputing.com festgelegt ist oder eine nicht leere kundenspezifische Liste ist. Wenn Sie eine nicht leere kundenspezifische Liste definieren, müssen Sie diese angeben, wenn Sie einen Dienstbenutzer in Snowflake erstellen.

Snowflake konfigurieren

Um Snowflake zu konfigurieren, erstellen Sie einen Snowflake-Dienstbenutzer, d. h. einen Benutzer vom Typ SERVICE, der zur Authentifizierung bei Snowflake die Workload Identity Federation verwendet.

Bevor Sie beginnen

Um Snowflake erfolgreich zu konfigurieren, benötigen Sie die folgenden Informationen:

  • Die Aussteller-URL Ihres OIDC-Anbieters.

  • Der mit Ihrem Workload verbundene Subjektanspruch.

Sie können diese beiden Werte durch Analysieren (Parsen) der iss- und sub-Ansprüche aus einem ausgestellten ID-Token für Ihren Workload erhalten. Wenn Sie beispielsweise Zugriff auf eine Unix-ähnliche Umgebung mit jq, cat und echo haben, können Sie Ihr ID-Token in eine Datei speichern und die folgenden Befehle ausführen.

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

Auf welche Weise Sie ein ID-Token erhalten, siehe die Dokumentation zu Ihrem OIDC-Anbieter.

So erstellen Sie einen Dienstbenutzer für Ihren Workload:

  1. Melden Sie sich bei Snowsight an.

  2. Wählen Sie Projects » Worksheets aus, um die Liste der Arbeitsblätter zu öffnen.

  3. Zum Öffnen eines neuen SQL-Arbeitsblatts wählen Sie + aus.

  4. Um einen Dienstbenutzer zu erstellen, der zur Authentifizierung bei Snowflake die Workload Identity Federation verwendet, führen Sie eine CREATE USER-Anweisung im Arbeitsblatt aus:

    CREATE USER my_custom_service
      WORKLOAD_IDENTITY = (
        TYPE = OIDC
        ISSUER = '<issuer>'
        SUBJECT = '<subject>'
        OIDC_AUDIENCE_LIST = ('<custom_audience>')
      )
      TYPE = SERVICE;
    
    Copy

    Wobei:

    • ISSUER und SUBJECT sind die Werte, die Sie vor Beginn dieser Schritte erhalten haben.

    • OIDC_AUDIENCE_LIST ist eine nicht leere Obermenge des Zielgruppenanspruchs des ID-Tokens, der in OIDC-Anbieter konfigurieren festgelegt wurde. Sie müssen OIDC_AUDIENCE_LIST nicht angeben, wenn der Zielgruppenanspruch des ID-Tokens snowflakecomputing.com ist.

Workload für die Verwendung eines Snowflake-Treibers konfigurieren

Bemerkung

Sie können Ihren Workload so konfigurieren, dass er jeden Snowflake-Treiber verwendet, der die Workload Identity Federation unterstützt. Die vollständige Liste finden Sie unter Unterstützte Snowflake-Treiber.

Wenn Ihr Workload einen Python-Treiber benötigt, führen Sie die folgenden Schritte aus:

  1. Installieren Sie den Snowflake Connector für Python.

  2. Fügen Sie Ihrem Python-Anwendungscode den folgenden Quellcode hinzu:

    conn = snowflake.connector.connect(
      account='<snowflake_account>',
      authenticator='WORKLOAD_IDENTITY',
      workload_identity_provider='OIDC',
      token='<id_token>'
    )
    
    Copy

    Wobei id_token ein nicht abgelaufenes ID-Token ist, das Sie von Ihrem OIDC-Anbieter für Ihren Workload erhalten haben. Wie Sie dieses Token erhalten, erfahren Sie in der Dokumentation zu Ihrem OIDC-Anbieter.

  3. Führen Sie Ihre Python-Anwendung aus. Diese authentifiziert sich bei Snowflake unter Verwendung der Workload Identity Federation.

Einschränkungen und Hinweise

  • Azure-Workloads können sich nicht in souveränen Azure-Clouds befinden, wie z. B. Azure China und Azure US-Regierungsbehörden. Diese Beschränkung hat nichts mit der Snowflake-Region Ihres Kontos zu tun.