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:
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).
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.
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 |
---|---|
v1.16.0 |
|
v3.26.0 |
|
v4.8.0 |
|
v2.2.0 |
|
v3.11.0 |
|
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') );
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.
Für Amazon EC2 siehe Eine IAM-Rolle für eine Instanz hinzufügen.
Für AWS Lambda siehe Lambda-Funktionsberechtigungen mit einer Ausführungsrolle definieren.
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:
Melden Sie sich bei der AWS-Konsole an, und navigieren Sie dann zum IAM-Dashboard.
Wählen Sie im linken Navigationsbereich Roles aus.
Wählen Sie den Namen der Rolle aus, die Sie mit Ihrer AWS-Instanz verknüpft haben.
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:
Melden Sie sich bei Snowsight an.
Wählen Sie Projects » Worksheets aus, um die Liste der Arbeitsblätter zu öffnen.
Zum Öffnen eines neuen SQL-Arbeitsblatts wählen Sie + aus.
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;
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:
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' )
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:
Melden Sie sich beim Microsoft Azure-Portal an.
Stellen Sie sicher, dass Sie über Admin-Berechtigungen für Azure-Mandanten verfügen.
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.
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:
Melden Sie sich beim Microsoft Azure-Portal an.
Wählen Sie Ihren Workload aus, z. B. eine virtuelle Maschine oder einen App-Dienst.
Navigieren Sie in der Seitenleiste zu Security » Identity.
Aktivieren Sie eine verwaltete Identität für eine Azure VM oder eine Azure-Funktion.
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
So erstellen Sie einen Dienstbenutzer für Ihren Workload:
Melden Sie sich bei Snowsight an.
Wählen Sie Projects » Worksheets aus, um die Liste der Arbeitsblätter zu öffnen.
Zum Öffnen eines neuen SQL-Arbeitsblatts wählen Sie + aus.
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;
Wobei
ISSUER
undSUBJECT
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:
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' )
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)"
So erstellen Sie einen Dienstbenutzer für Ihren Workload:
Melden Sie sich bei Snowsight an.
Wählen Sie Projects » Worksheets aus, um die Liste der Arbeitsblätter zu öffnen.
Zum Öffnen eines neuen SQL-Arbeitsblatts wählen Sie + aus.
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;
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:
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' )
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¶
Konfigurieren Sie EKS, um ID-Token auszugeben, die mit Snowflake kompatibel sind.
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
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
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:
Melden Sie sich bei Snowsight an.
Wählen Sie Projects » Worksheets aus, um die Liste der Arbeitsblätter zu öffnen.
Zum Öffnen eines neuen SQL-Arbeitsblatts wählen Sie + aus.
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;
Wobei
ISSUER
undSUBJECT
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:
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>' )
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
.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:
Konfigurieren Sie AKS, um ID-Token auszugeben, die mit Snowflake kompatibel sind.
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
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:
Melden Sie sich bei Snowsight an.
Wählen Sie Projects » Worksheets aus, um die Liste der Arbeitsblätter zu öffnen.
Zum Öffnen eines neuen SQL-Arbeitsblatts wählen Sie + aus.
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;
Wobei
ISSUER
undSUBJECT
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:
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>' )
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
.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¶
Konfigurieren Sie GKE, um ID-Token auszugeben, die mit Snowflake kompatibel sind.
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
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:
Melden Sie sich bei Snowsight an.
Wählen Sie Projects » Worksheets aus, um die Liste der Arbeitsblätter zu öffnen.
Zum Öffnen eines neuen SQL-Arbeitsblatts wählen Sie + aus.
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;
Wobei
ISSUER
undSUBJECT
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:
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>' )
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
.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¶
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.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)'"
Auf welche Weise Sie ein ID-Token erhalten, siehe die Dokumentation zu Ihrem OIDC-Anbieter.
So erstellen Sie einen Dienstbenutzer für Ihren Workload:
Melden Sie sich bei Snowsight an.
Wählen Sie Projects » Worksheets aus, um die Liste der Arbeitsblätter zu öffnen.
Zum Öffnen eines neuen SQL-Arbeitsblatts wählen Sie + aus.
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;
Wobei:
ISSUER
undSUBJECT
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üssenOIDC_AUDIENCE_LIST
nicht angeben, wenn der Zielgruppenanspruch des ID-Tokenssnowflakecomputing.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:
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>' )
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.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.