Snowflake Data Clean Room: Externe Daten aus einem Amazon S3-Bucket¶
Daten, die in einem Snowflake Data Clean Room analysiert werden, können in Snowflake selbst oder extern in einem Speicher eines Cloudanbieters gespeichert sein oder beides. Ein Konnektor ermöglicht es den Teilnehmern, vom Reinraum aus auf externe Daten eines Cloudanbieters zuzugreifen.
Der Konnektor für externe Daten verwendet Snowflake-externe Tabellen, um Daten verfügbar zu machen. Seien Sie sich bewusst, dass das Verknüpfen von externen Tabellen in einem Reinraum ein erhöhtes Sicherheitsrisiko birgt. Daher muss der Anbieter die Verwendung externer Tabellen im Reinraum ausdrücklich zulassen, bevor Verbraucher einen Konnektor zur Aufnahme externer Daten verwenden können. Wenn der Anbieter den externen Konnektor verwendet, wird der Verbraucher gewarnt, dass externe Tabellen verwendet werden, damit er entscheiden kann, ob er den Reinraum installieren möchte.
Unter diesem Thema wird beschrieben, wie Sie einen Konnektor verwenden, damit Reinraum-Analysten auf externe Daten aus einem Amazon S3-Bucket zugreifen können.
Wichtig
Konnektoren von Drittanbietern werden nicht von Snowflake angeboten und können zusätzlichen Bedingungen unterliegen. Diese Integrationen werden Ihnen zur Verfügung gestellt, aber Sie sind für alle Inhalte verantwortlich, die an die Integrationen gesendet oder von ihnen empfangen werden.
Kunden sind dafür verantwortlich, alle erforderlichen Genehmigungen im Zusammenhang mit ihrer Nutzung von Snowflake Data Clean Rooms einzuholen. Bitte stellen Sie sicher, dass Sie die geltenden Gesetze und Vorschriften einhalten, wenn Sie Snowflake Data Clean Rooms verwenden, auch in Verbindung mit Konnektoren von Drittanbietern zu Aktivierungszwecken.
Voraussetzungen¶
So verwenden Sie den Konnektor für externe Daten:
Der Anbieter muss ausdrücklich die Verwendung von externen Tabellen im Reinraum erlauben.
Die Dateien müssen im Parquet-Format vorliegen.
Verbindung mit einem S3 Bucket¶
Der Prozess, der es Reinraum-Teilnehmern erlauft, auf Daten aus dem Amazon S3-Speicher zuzugreifen, besteht aus den folgenden Schritten:
Führen Sie unter AWS folgende Prozeduren durch:
Erstellen Sie eine IAM-Richtlinie mit spezifischen Berechtigungen.
Erstellen Sie eine IAM Rolle, die auf die neue Richtlinie IAM verweist.
Kopieren Sie die Bezeichner des S3-Buckets und der Rolle IAM.
In der Reinraumumgebung: Erstellen Sie den Konnektor.
In AWS: Aktualisieren Sie die IAM-Rolle mit den Bezeichnern des Dienstkontos aus der Reinraumumgebung.
In der Reinraumumgebung: Authentifizieren Sie den Konnektor mit AWS.
IAM-Richtlinie in AWS erstellen¶
Snowflake empfiehlt, eine eigene IAM Richtlinie für den Konnektor zu erstellen, die die notwendigen Berechtigungen für den Zugriff auf den S3-Bucket enthält. In einem weiteren Schritt fügen Sie diese Richtlinie zu einer IAM-Rolle hinzu, die die Identität des Konnektors repräsentiert.
Um diese Prozedur abzuschließen, müssen Sie die Region des Kontos kennen, das mit der Reinraumumgebung verbunden ist.
Um die Region des Kontos zu finden, das mit der Reinraumumgebung verbunden ist, melden Sie sich unter beim Reinraum an und wählen Sie Connectors » Cleanrooms » Snowflake.
So erstellen Sie eine IAM-Richtlinie, die Berechtigungen für den S3 Bucket enthält:
Melden Sie sich bei der klassischen Weboberfläche an.
Wählen Sie auf dem Console Home-Dashboard die Option Identity and Access Management (IAM) aus.
Wählen Sie im linken Navigationsbereich die Option Account settings aus.
Suchen Sie im Abschnitt Security Token Service (STS) die Region des Kontos, das mit der Reinraumumgebung verbunden ist, und schalten Sie es auf Active um.
Wählen Sie im linken Navigationsbereich die Option Policies aus.
Wählen Sie Create policy aus.
Wählen Sie im Abschnitt Policy editor die Option JSON aus.
Kopieren Sie den folgenden Richtlinientext, und fügen Sie ihn in den Richtlinieneditor ein und bearbeiten Sie dann den JSON-Code, um den Namen Ihres Buckets (
<Bucket>
) und das Präfix des Ordnerpfads (<prefix>
) einzufügen.{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": "arn:aws:s3:::<bucket>/<prefix>/*" }, { "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:GetBucketLocation" ], "Resource": "arn:aws:s3:::<bucket>", "Condition": { "StringLike": { "s3:prefix": [ "<prefix>/*" ] } } } ] }
Achten Sie darauf, dass Sie das
:::
-Format beibehalten. Wenn der URI Ihres S3-Buckets zum Beispiels3://sales/customers/
lautet, ist der Wert des FeldesResource
JSONarn:aws:s3:::sales/customers/*
.Wählen Sie Next aus.
Geben Sie einen Richtliniennamen ein (z. B.
snowflake_cleanroom_access
), und wählen Sie dann Create policy aus.
IAM-Rolle in AWS erstellen¶
Die Rolle AWS IAM stellt die Identität des Konnektors dar. Während des Erstellungsprozesses verknüpfen Sie die Rolle mit der neuen IAM-Richtlinie, die dem Konnektor die für den Zugriff auf den S3 Bucket erforderlichen Berechtigungen erteilt.
So erstellen Sie eine neue IAM-Rolle:
Wählen Sie auf dem Dashboard Console Home in AWS die Option Identity and Access Management (IAM).
Wählen Sie im linken Navigationsbereich die Option Roles aus.
Wählen Sie Create role aus.
Wählen Sie im Abschnitt Trusted entity type die Option AWS account aus.
Wählen Sie im Abschnitt An AWS account die Option Another AWS account aus.
Geben Sie in das Feld Account ID einen temporären Platzhalterwert ein, der 12 Ziffern enthält (zum Beispiel den Kontobezeichner des aktuellen AWS-Kontos). Sie werden diesen Wert später ersetzen.
Wählen Sie Require external id, und geben Sie dann einen temporären Platzhalterwert ein, z. B.
0000
. Sie werden diesen Wert später ersetzen.Wählen Sie Next aus.
Suchen Sie im Abschnitt Permissions policies die Richtlinie, die Sie in der vorherigen Prozedur erstellt haben, und aktivieren Sie das entsprechende Kontrollkästchen.
Wählen Sie Next aus.
Geben Sie einen Rollennamen ein (z B.
snowflake_cleanroom_connector
), und wählen Sie dann Create role aus.
Kopieren Sie die Bezeichner des S3-Buckets und der IAM-Rolle¶
Wenn Sie den Konnektor in der Reinraumumgebung erstellen, benötigen Sie die Bezeichner des S3-Buckets und der IAM-Rolle. Bevor Sie den Konnektor erstellen, folgen Sie diesen Schritten, um diese Bezeichner zu kopieren und zu speichern:
So kopieren Sie den Bezeichner der IAM-Rolle:
Wählen Sie auf dem Dashboard Console Home in AWS die Option Identity and Access Management (IAM).
Wählen Sie im linken Navigationsbereich die Option Roles aus.
Suchen Sie die Rolle, die Sie in der vorherigen Prozedur erstellt haben, und wählen Sie sie aus, um sie zu öffnen.
Suchen Sie im Bereich Summary die Seite ARN, und wählen Sie das Kopiersymbol aus. Speichern Sie diesen Bezeichner der Rolle für einen späteren Schritt.
So kopieren Sie den Bezeichner des S3-Buckets:
Wählen Sie auf dem Dashboard Console Home in AWS die Option S3.
Suchen Sie den Namen Ihres S3-Buckets, und wählen Sie ihn aus, um ihn zu öffnen. Der Bucket muss die Daten enthalten, die Sie in den Reinraum aufnehmen möchten.
Navigieren Sie zum Präfix des Buckets und wählen Sie dann Copy S3 URI aus. Speichern Sie diesen Bucket-Bezeichner für einen späteren Schritt.
Versuchen Sie nicht, die Schaltfläche im Objects-Bereich auszuwählen.
Erstellen Sie einen Konnektor und kopieren Sie die Details des Dienstkontos¶
Sie sind nun bereit, den Konnektor in der Reinraumumgebung zu erstellen. Nachdem Sie den Konnektor erstellt haben, kopieren Sie die Details seines Dienstkontos, damit es mit der IAM-Rolle in AWS verknüpft werden kann.
So erstellen Sie den Konnektor in Ihrer Reinraumumgebung:
Navigieren Sie zu der Anmeldeseite von Snowflake Data Clean Rooms.
Geben Sie Ihre E-Mail-Adresse ein, und wählen Sie Continue aus.
Geben Sie Ihr Kennwort ein.
Wenn Sie mit mehreren Reinraumumgebungen verbunden sind, wählen Sie das Snowflake-Konto aus, das Sie verwenden möchten.
Wählen Sie im linken Navigationsbereich Connectors, und erweitern Sie dann den Abschnitt Amazon Web Services.
Geben Sie in das Feld AWS Role ARN den Bezeichner der IAM-Rolle ein, den Sie von AWS kopiert haben, z. B.
arn:aws:iam::772412615275:role/mub00002_vhb71832_role
.Geben Sie in das Feld S3 Bucket URI den Bezeichner des S3-Buckets ein, den Sie von AWS kopiert haben, z. B.
s3://sales/customer_data/
.Wählen Sie Create aus.
Der Reinraum generiert ein Dienstkonto, das er für den Zugriff auf AWS verwendet.
Verwenden Sie das Kopiersymbol, um die Bezeichner Principal und External ID des Dienstkontos des Konnektors zu kopieren und für die nächste Prozedur zu speichern.
Aktualisieren Sie die IAM-Rolle mit den Details des Servicekontos¶
Jetzt können Sie die IAM-Rolle mit den Bezeichnern aktualisieren, die mit dem Dienstkonto des Konnektors verbunden sind. So aktualisieren Sie die IAM-Rolle:
Melden Sie sich bei der klassischen Weboberfläche an.
Wählen Sie auf dem Console Home-Dashboard die Option Identity and Access Management (IAM) aus.
Wählen Sie im linken Navigationsbereich die Option Roles aus.
Suchen Sie die Rolle, die Sie zuvor erstellt haben, und wählen Sie sie aus, um sie zu öffnen.
Wählen Sie die Registerkarte Trust relationships aus.
Wählen Sie Edit trust policy aus.
Ändern Sie den JSON-Code der Vertrauensrichtlinie so, dass die Bezeichner aus dem Dienstkonto des Konnektors enthalten sind. Sie haben diese Bezeichner bereits kopiert. Nehmen Sie folgende Änderungen am JSON-Code vor:
Ersetzen Sie den Wert des JSON-Feldes
AWS
durch den Principal-Wert, den Sie aus der Reinraumumgebung kopiert haben.Im folgenden Beispiel ist der Wert von Principal in der Reinraumumgebung
arn:aws:iam::115136555074:user/x4gy-s-p2345g38
.Ersetzen Sie den Wert des JSON-Feldes
sts:ExternalId
durch den External ID-Wert, den Sie aus der Reinraumumgebung kopiert haben.Im folgenden Beispiel ist der Wert von External ID in der Reinraumumgebung
UCA56729_SFCRole=4447_uht2344sdf3mrWLNRM0y3bE=
.{ "Version": "2012-10-17", "Statement": [ { "Sid": "Statement1", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::115136555074:user/x4gy-s-p2345g38" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "sts:ExternalId": "UCA56729_SFCRole=4447_uht2344sdf3mrWLNRM0y3bE=" } } } ] }
Wählen Sie Update policy aus.
Authentifizieren des Konnektors¶
Jetzt können Sie den Konnektor authentifizieren, um sicherzustellen, dass er auf den S3-Bucket zugreifen kann. So authentifizieren Sie den Konnektor:
Wenn Sie aus der Reinraumumgebung abgemeldet sind, siehe Bei der Web-App anmelden.
Wählen Sie in der Reinraumumgebung Connectors aus, und erweitern Sie den Abschnitt Amazon Web Services.
Wählen Sie den S3 Bucket aus, zu dem Sie eine Verbindung herstellen möchten, und wählen Sie dann Authenticate aus.
Zugriff auf externe Daten auf AWS entfernen¶
So entfernen Sie den Zugriff auf einen S3-Bucket aus einer Reinraumumgebung:
Navigieren Sie zu der Anmeldeseite von Snowflake Data Clean Rooms.
Geben Sie Ihre E-Mail-Adresse ein, und wählen Sie Continue aus.
Geben Sie Ihr Kennwort ein.
Wenn Sie mit mehreren Reinraumumgebungen verbunden sind, wählen Sie das Snowflake-Konto aus, das Sie verwenden möchten.
Wählen Sie im linken Navigationsbereich Connectors aus, und erweitern Sie den Amazon Web Services-Bereich.
Suchen Sie den S3 Bucket, der derzeit verbunden ist, und wählen Sie dann das Mülleimersymbol.