Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Artikel wird beschrieben, wie Sie Speicheranmeldeinformationen im Unity-Katalog erstellen, um eine Verbindung mit AWS S3 herzustellen. Die Unterstützung für S3 in Azure Databricks ist schreibgeschützt.
Eine Speicherzugangsberechtigung enthält eine langfristige Cloud-Berechtigung mit Zugriff auf Cloud-Speicher. Sie verweisen auf eine Speicheranmeldeinformation und den Cloudspeicherpfad, wenn Sie externe Speicherorte im Unity-Katalog erstellen, um den Zugriff auf externen Speicher zu steuern.
Weitere Informationen zu Speicheranmeldeinformationen und externen Speicherorten finden Sie unter Herstellen einer Verbindung mit Cloudobjektspeicher mithilfe des Unity-Katalogs.
Informationen zu anderen von Unity Catalog unterstützten Cloudspeicheroptionen finden Sie unter Cloudspeicheroptionen, die von Unity Catalog unterstützt werden.
Hinweis
Gebühren für die cloudübergreifende Datenübertragung können anfallen. Wenn Sie serverlose Berechnung verwenden, werden Sie gemäß der Databricks-Datenübertragungs- und Konnektivitätsrichtlinie in Rechnung gestellt.
Erstellen der Speicheranmeldeinformationen
Um eine Speicheranmeldeinformation für den Zugriff auf einen S3-Bucket zu erstellen, erstellen Sie eine AWS-IAM-Rolle, die den Zugriff auf den S3-Bucketpfad autorisiert und diese IAM-Rolle in der Definition der Speicheranmeldeinformationen referenziert.
Anforderungen
In Azure Databricks:
- Azure Databricks-Arbeitsbereich, der für Unity Catalog aktiviert ist.
-
CREATE STORAGE CREDENTIALBerechtigung auf dem Unity-Katalog-Metadatenspeicher, der dem Arbeitsbereich angeschlossen ist. Kontoadministratoren und Metastoreadministratoren verfügen standardmäßig über diese Berechtigung.
In Ihrem AWS-Konto:
Ein S3-Bucket, der die folgenden Anforderungen erfüllt:
- Verwenden Sie keine Punktnotation (z. B.
incorrect.bucket.name.notation) in S3-Bucketnamen. Obwohl AWS Punkte in Bucketnamen zulässt, unterstützt Azure Databricks keine S3-Buckets mit Punktnotation. Buckets mit Punkten können Kompatibilitätsprobleme mit Features wie Delta Sharing aufgrund von SSL-Zertifikatsüberprüfungsfehlern verursachen. Weitere Informationen finden Sie in den bewährten Methoden für die Benennung von AWS-Buckets. - Der Bucket kann keine S3-Zugriffssteuerungsliste angeschlossen haben.
- Verwenden Sie keine Punktnotation (z. B.
Die Möglichkeit, IAM-Rollen zu erstellen.
Schritt 1: Erstellen einer IAM-Rolle
Erstellen Sie in AWS eine IAM-Rolle, die Zugriff auf den S3-Bucket bietet, auf den Ihre Benutzer zugreifen sollen. Diese IAM-Rolle muss in demselben Konto wie der S3-Bucket definiert sein.
Tipp
Wenn Sie bereits eine IAM-Rolle erstellt haben, die diesen Zugriff bietet, können Sie diesen Schritt überspringen und direkt zu Schritt 2 gehen: Geben Sie Azure Databricks die DETAILS der IAM-Rolle.
Erstellen Sie eine IAM-Rolle, die den Zugriff auf den S3-Bucket ermöglicht.
Die Rollenerstellung ist ein zweistufiger Prozess. In diesem Schritt erstellen Sie die Rolle, indem Sie eine temporäre Richtlinie für Vertrauensverhältnisse und eine Platzhalter-Externe-ID hinzufügen, die Sie nach dem Erstellen der Speicheranmeldeinformationen in Azure Databricks ändern.
Sie müssen die Vertrauensrichtlinie ändern, nachdem Sie die Rolle erstellt haben, da Ihre Rolle selbst vorausgesetzt werden muss (d. a. sie muss so konfiguriert werden, dass sie sich selbst vertraut). Die Rolle muss also vorhanden sein, bevor Sie die Selbstverpflichtungserklärung hinzufügen. Informationen zu selbst übernehmenden Rollen finden Sie in diesem Amazon-Blogartikel.
Von Bedeutung
Databricks sperrt neue und bestehende Speicheranmeldeinformationen auf der Grundlage von IAM-Rollen, die sich nicht selbst übernehmen. Weitere Informationen finden Sie unter Richtlinie zur Durchsetzung einer selbständigen Rolle.
Um die Richtlinie zu erstellen, müssen Sie eine externe ID als Platzhalter verwenden.
Erstellen Sie die IAM-Rolle mit einer benutzerdefinierten Vertrauensrichtlinie.
Fügen Sie im Feld "Benutzerdefinierte Vertrauensrichtlinie " den folgenden RICHTLINIEN-JSON-Code ein.
Diese Richtlinie richtet eine kontoübergreifende Vertrauensstellung ein, damit Unity Catalog die Rolle für den Zugriff auf die Daten im Bucket im Auftrag von Databricks-Benutzern übernehmen kann. Dies wird vom ARN im
PrincipalAbschnitt angegeben. Es handelt sich um einen statischen Wert, der auf eine rolle verweist, die von Databricks erstellt wurde.Die Richtlinie setzt die externe ID auf
0000als Platzhalter. In einem späteren Schritt aktualisieren Sie dies zur externen ID Ihrer Speicherberechtigung.{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": ["arn:aws:iam::414351767826:role/unity-catalog-prod-UCAzureMainRole-1AJ6UQSSB8F0Q"] }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "sts:ExternalId": "0000" } } } ] }Überspringen Sie die Konfiguration der Berechtigungsrichtlinie. Sie werden dies in einem späteren Schritt hinzufügen.
Speichern Sie die IAM-Rolle.
Erstellen Sie die folgende IAM-Richtlinie im selben Konto wie der S3-Bucket, und ersetzen Sie die folgenden Werte:
-
<BUCKET>: Der Name des S3-Buckets. -
<KMS-KEY>:Wahlfrei. Wenn die Verschlüsselung aktiviert ist, geben Sie den Namen des KMS-Schlüssels an, der den S3-Bucketinhalt verschlüsselt. Wenn die Verschlüsselung deaktiviert ist, entfernen Sie den gesamten KMS-Abschnitt der IAM-Richtlinie. -
<AWS-ACCOUNT-ID>: Die Konto-ID Ihres AWS-Kontos (nicht Ihr Databricks-Konto). -
<AWS-IAM-ROLE-NAME>: Der Name der AWS-IAM-Rolle, die Sie im vorherigen Schritt erstellt haben.
Diese IAM-Richtlinie gewährt Lese- und Schreibzugriff. Sie können auch eine Richtlinie erstellen, die nur Lesezugriff gewährt. Dies kann jedoch unnötig sein, da Sie die Speicheranmeldeinformationen als schreibgeschützt markieren können und alle gewährten Schreibzugriffe durch diese IAM-Rolle ignoriert werden.
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "s3:GetObject", "s3:PutObject", "s3:DeleteObject", "s3:ListBucket", "s3:GetBucketLocation", "s3:ListBucketMultipartUploads", "s3:ListMultipartUploadParts", "s3:AbortMultipartUpload" ], "Resource": ["arn:aws:s3:::<BUCKET>/*", "arn:aws:s3:::<BUCKET>"], "Effect": "Allow" }, { "Action": ["kms:Decrypt", "kms:Encrypt", "kms:GenerateDataKey*"], "Resource": ["arn:aws:kms:<KMS-KEY>"], "Effect": "Allow" }, { "Action": ["sts:AssumeRole"], "Resource": ["arn:aws:iam::<AWS-ACCOUNT-ID>:role/<AWS-IAM-ROLE-NAME>"], "Effect": "Allow" } ] }Hinweis
Wenn Sie eine restriktivere IAM-Richtlinie für Den Unity-Katalog benötigen, wenden Sie sich an Ihr Azure Databricks-Kontoteam, um Unterstützung zu erhalten.
-
Erstellen Sie eine IAM-Richtlinie für Dateivorgänge im selben Konto wie der S3-Bucket.
Hinweis
Dieser Schritt ist optional, wird aber dringend empfohlen. Wenn Sie Azure Databricks keinen Zugriff gewähren, um Dateiereignisse in Ihrem Namen zu konfigurieren, müssen Sie Dateiereignisse für jeden Speicherort manuell konfigurieren. Wenn Sie dies nicht tun, werden Sie nur eingeschränkten Zugriff auf kritische Features haben, die Databricks möglicherweise in Zukunft veröffentlicht. Weitere Informationen zu Dateiereignissen finden Sie unter (Empfohlen) Aktivieren von Dateiereignissen für einen externen Speicherort.
Die IAM-Richtlinie gewährt Azure Databricks die Berechtigung, die Ereignisbenachrichtigungskonfiguration Ihres Buckets zu aktualisieren, ein SNS-Thema zu erstellen, eine SQS-Warteschlange zu erstellen und die SQS-Warteschlange zum SNS-Thema zu abonnieren. Dies sind erforderliche Ressourcen für Features, die Dateiereignisse verwenden. Ersetzen Sie
<BUCKET>durch den Namen des S3-Buckets.{ "Version": "2012-10-17", "Statement": [ { "Sid": "ManagedFileEventsSetupStatement", "Effect": "Allow", "Action": [ "s3:GetBucketNotification", "s3:PutBucketNotification", "sns:ListSubscriptionsByTopic", "sns:GetTopicAttributes", "sns:SetTopicAttributes", "sns:CreateTopic", "sns:TagResource", "sns:Publish", "sns:Subscribe", "sqs:CreateQueue", "sqs:DeleteMessage", "sqs:ReceiveMessage", "sqs:SendMessage", "sqs:GetQueueUrl", "sqs:GetQueueAttributes", "sqs:SetQueueAttributes", "sqs:TagQueue", "sqs:ChangeMessageVisibility", "sqs:PurgeQueue" ], "Resource": ["arn:aws:s3:::<BUCKET>", "arn:aws:sqs:*:*:csms-*", "arn:aws:sns:*:*:csms-*"] }, { "Sid": "ManagedFileEventsListStatement", "Effect": "Allow", "Action": ["sqs:ListQueues", "sqs:ListQueueTags", "sns:ListTopics"], "Resource": ["arn:aws:sqs:*:*:csms-*", "arn:aws:sns:*:*:csms-*"] }, { "Sid": "ManagedFileEventsTeardownStatement", "Effect": "Allow", "Action": ["sns:Unsubscribe", "sns:DeleteTopic", "sqs:DeleteQueue"], "Resource": ["arn:aws:sqs:*:*:csms-*", "arn:aws:sns:*:*:csms-*"] } ] }Ordnen Sie die IAM-Richtlinien der IAM-Rolle zu.
Fügen Sie auf der Registerkarte Berechtigungen der Rolle die soeben erstellten IAM-Richtlinien hinzu.
Schritt 2: Geben Sie Azure Databricks die Details der IAM-Rolle
Melden Sie sich in Azure Databricks bei einem Arbeitsbereich an, der mit dem Unity Catalog-Metaspeicher verknüpft ist.
Sie müssen die Berechtigung
CREATE STORAGE CREDENTIALhaben. Die Rollen für Metastore-Administrator*in und Kontoadministrator*in umfassen diese Berechtigungen.Klicken Sie auf
Katalog.
Klicken Sie auf die Schaltfläche "Externe Daten > ", wechseln Sie zur Registerkarte " Anmeldeinformationen ", und wählen Sie " Anmeldeinformationen erstellen" aus.
Wählen Sie einen Berechtigungstyp der AWS IAM-Rolle.
Geben Sie einen Namen für die Anmeldeinformationen ein, den IAM-Role-ARN, der den Unity Catalog dazu autorisiert, auf den Speicherort in Ihrem Cloud-Tenant zuzugreifen, sowie einen optionalen Kommentar.
(Optional) Wenn Sie möchten, dass Benutzer schreibgeschützten Zugriff auf die externen Speicherorte haben, die diese Speicheranmeldeinformationen verwenden, wählen Sie unter Erweiterte Optionen die Option Schreibgeschützt aus. Weitere Informationen finden Sie unter Markieren von Speicheranmeldeinformationen als schreibgeschützt.
Hinweis
Da Azure Databricks nur schreibgeschützten Zugriff auf S3-Buckets mit Speicheranmeldeinformationen bietet, muss diese Option nicht festgelegt werden.
Klicken Sie auf "Erstellen".
Kopieren Sie im Dialogfeld Erstellte Speicheranmeldeinformationen die Externe ID.
Klicken Sie auf "Fertig".
(Optional) Binden Sie die Speicheranmeldeinformationen an bestimmte Arbeitsbereiche.
Standardmäßig kann jeder privilegierte Benutzer die Speicheranmeldeinformationen in jedem Arbeitsbereich verwenden, der an den Metastore angefügt ist. Wenn Sie den Zugriff nur aus bestimmten Arbeitsbereichen zulassen möchten, wechseln Sie zur Registerkarte Arbeitsbereiche, und weisen Sie Arbeitsbereiche zu. Weitere Informationen finden Sie unter (Optional) Zuweisung der Speicherberechtigung zu bestimmten Arbeitsbereichen.
Sie können auch Speicheranmeldeinformationen mithilfe des Databricks Terraform-Anbieters und databricks_storage_credential erstellen.
Schritt 3: Aktualisierung der Richtlinie für die Vertrauensbeziehung zwischen IAM-Rollen
Ändern Sie in AWS die Richtlinie für die Vertrauensbeziehung, um die externe ID Ihrer Speicheranmeldeinformationen hinzuzufügen, und machen Sie sie zur Selbstanforderung.
Kehren Sie zu Ihrer gespeicherten IAM-Rolle zurück, und wechseln Sie zur Registerkarte " Vertrauensstellungen" .
Bearbeiten Sie die Richtlinie für die Vertrauensrichtlinie wie folgt:
Fügen Sie der Anweisung „Zulassen“ den folgenden ARN hinzu. Ersetzen Sie
<YOUR-AWS-ACCOUNT-ID>und<THIS-ROLE-NAME>mit Ihrer tatsächlichen Konto-ID und Ihren IAM-Rollenwerten."arn:aws:iam::<YOUR-AWS-ACCOUNT-ID>:role/<THIS-ROLE-NAME>"In der Anweisung
"sts:AssumeRole"aktualisieren Sie die externe ID des Platzhalters auf die externe ID Ihrer Speicheranmeldung, die Sie im vorherigen Schritt kopiert haben."sts:ExternalId": "<STORAGE-CREDENTIAL-EXTERNAL-ID>"Ihre Richtlinie sollte nun wie folgt aussehen, wobei der Ersetzungstext so aktualisiert wurde, dass er die externe ID, die Konto-ID und die IAM-Rollenwerte Ihrer Speicherberechtigung verwendet:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::414351767826:role/unity-catalog-prod-UCAzureMainRole-1AJ6UQSSB8F0Q", "arn:aws:iam::<YOUR-AWS-ACCOUNT-ID>:role/<THIS-ROLE-NAME>" ] }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "sts:ExternalId": "<STORAGE-CREDENTIAL-EXTERNAL-ID>" } } } ] }
Schritt 4: Überprüfen der Speicheranmeldeinformationen
Nachdem Sie in Schritt 3 die Änderungen an der IAM-Vertrauensrichtlinie vorgenommen haben: Aktualisieren Sie die IAM-Vertrauensrichtlinie, vergewissern Sie sich, dass Ihre IAM-Rolle ordnungsgemäß für die Verwendung als Speicherzugriffsdaten konfiguriert ist.
Hinweis
Um die Konfiguration zu überprüfen, müssen Sie der Besitzer der Speicheranmeldeinformationen, ein Metastore-Administrator sein oder über CREATE EXTERNAL LOCATION Berechtigungen für die Speicheranmeldeinformationen verfügen.
Melden Sie sich in Azure Databricks bei einem Arbeitsbereich an, der mit dem Metastore verknüpft ist.
Klicken Sie auf
Katalog.
Klicken Sie auf die Schaltfläche "Externe Daten > ", und wechseln Sie zur Registerkarte " Anmeldeinformationen ".
Alternativ können Sie auch auf das
-Zahnradsymbol oben im Katalogfenster klicken und Credentials wählen.
Wählen Sie die Speicheranmeldeinformationen aus, die Sie überprüfen möchten.
Klicken Sie auf
.Wenn eine der Prüfungen fehlschlägt, kehren Sie zu Schritt 3 zurück: Aktualisieren Sie die RICHTLINIE für die Vertrauensstellung von IAM-Rollen , und überprüfen Sie die Vertrauensrichtlinie der IAM-Rolle, um sie richtig zu konfigurieren.
Wenn die Speicheranmeldeinformationen überprüft werden, können Sie sie verwenden, um einen externen Speicherort zu erstellen.
Richtlinie zur Durchsetzung einer selbständigen Rolle
Am 30. Juni 2023 hat AWS seine IAM-Rollenvertrauensrichtlinie aktualisiert, um zu verlangen, dass IAM-Rollen für STS:AssumeRole-Aufrufe explizit selbst vertrauen. Daher erfordert Databricks, dass AWS IAM-Rollen für Speicheranmeldeinformationen selbständig sind. Ausführliche Informationen finden Sie in diesem Communityblogbeitrag.
Ab dem 20. Januar 2025 hat Databricks damit begonnen, die Verwendung bestehender Speicheranmeldedaten mit nicht selbstverwaltenden IAM-Rollen zu blockieren. Dieses Verbot kann Workloads und Aufträge unterbrechen, die mit nicht selbsterklärenden Anmeldeinformationen ausgeführt werden.
Um zu überprüfen, ob eine AWS IAM-Rolle für Speicheranmeldeinformationen selbst angenommen wird, befolgen Sie die Anweisungen in Schritt 4: Überprüfen der Speicheranmeldeinformationen. Wenn die Überprüfung von Self Assume Role fehlschlägt, kehren Sie zu Schritt 3 zurück: Aktualisieren Sie die Richtlinie für die Vertrauensbeziehung der IAM-Rolle und konfigurieren Sie die Vertrauensrichtlinie der IAM-Rolle neu, um sich selbst zu vertrauen.
Wenn Sie mehrere Speicherberechtigungen in einem Metaspeicher haben, die Sie überprüfen möchten, verwenden Sie das folgende Notebook, um die Selbstannahmefähigkeiten aller Speicherberechtigungen in Ihrem Metastore zu prüfen.
Notebook zur Überprüfung von Berechtigungsnachweisen für selbständige Speicherung
(Optional) Weisen Sie die Speicheranmeldeinformationen bestimmten Arbeitsbereichen zu
Standardmäßig kann auf Anmeldeinformationen aus allen Arbeitsbereichen im Metastore zugegriffen werden. Dies bedeutet: Wenn Benutzer*innen eine Berechtigung (z. B. CREATE EXTERNAL LOCATION) für diese Speicheranmeldeinformationen gewährt wurde, können sie diese Berechtigung von jedem Arbeitsbereich ausüben, der dem Metastore zugeordnet ist. Wenn Sie Arbeitsbereiche verwenden, um den Benutzerdatenzugriff zu isolieren, sollten Sie den Zugriff auf Speicheranmeldeinformationen nur aus bestimmten Arbeitsbereichen zulassen. Diese Funktion wird als Arbeitsbereichsbindung oder Speicheranmeldeinformationsisolation bezeichnet. Anweisungen hierzu finden Sie unter (Optional) Zuweisen einer Speicherberechtigung zu bestimmten Arbeitsbereichen.
Einschränkungen
- In Arbeitsbereichen, die serverlose Egress-Kontrolle verwenden, muss der plattformübergreifende Zugriff auf AWS S3-Buckets mithilfe der Netzwerkrichtlinien-API konfiguriert werden.
Nächste Schritte
Anzeigen, Aktualisieren, Löschen und anderen Benutzern die Erlaubnis zur Nutzung von Speicherberechtigungen erteilen. Siehe Verwalten von Speicheranmeldeinformationen.
Definition von externen Speicherorten mit Hilfe einer Speicheranmeldung. Weitere Informationen finden Sie unter Erstellen eines externen Speicherorts zum Verbinden des Cloudspeichers mit Azure Databricks.