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 nur Lesezugriff.
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 Sie die 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 CREDENTIAL
-Berechtigung für den Unity Catalog-Metastore, der an den Arbeitsbereich angefügt ist. Kontoadministratoren und Metastoreadministratoren verfügen standardmäßig über diese Berechtigung.
In Ihrem AWS-Konto:
Ein S3-Bucket, der die folgenden Anforderungen erfüllt:
- Der Bucketname darf keine Punktnotation enthalten (z. B
incorrect.bucket.name.notation
. ). Weitere Anleitungen zur Benennung von Buckets finden Sie in den Benennungsregeln für AWS-Buckets. - Der Bucket darf keine S3-Zugriffssteuerungsliste zugewiesen bekommen.
- Der Bucketname darf keine Punktnotation enthalten (z. B
Die Möglichkeit zum Erstellen von IAM-Rollen.
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 im gleichen Konto wie der S3-Bucket definiert werden.
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 daher existieren, bevor Sie die Selbstannahmeanweisung hinzufügen. Informationen zu selbst übernehmenden Rollen finden Sie in diesem Amazon-Blogartikel.
Von Bedeutung
Databricks blockiert neue und vorhandene Speicheranmeldeinformationen basierend auf IAM-Rollen, die nicht selbst angenommen werden. Ausführliche Informationen finden Sie unter Richtlinie zur Durchsetzung selbstübernehmender Rollen.
Zum Erstellen der Richtlinie müssen Sie eine externe Platzhalter-ID 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
Principal
Abschnitt angegeben. Es handelt sich um einen statischen Wert, der auf eine rolle verweist, die von Databricks erstellt wurde.Die Richtlinie legt
0000
als Platzhalter für die externe ID fest. 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. Später werden Sie zurückkehren, um dies hinzuzufü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, haben Sie eingeschränkten Zugriff auf kritische Features, 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-*"] } ] }
Fügen Sie die IAM-Richtlinien an die IAM-Rolle hinzu.
Im Tab „Berechtigung“ der Rolle, hängen Sie die gerade erstellten IAM-Richtlinien an.
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 über die
CREATE STORAGE CREDENTIAL
Berechtigung verfügen. Die Rollen für Metastore-Administrator*in und Kontoadministrator*in umfassen diese Berechtigungen.Klicken Sie auf
Katalog.
Klicken Sie auf der Seite "Schnellzugriff" auf die Schaltfläche "Externe Daten>", wechseln Sie zur Registerkarte "Anmeldeinformationen", und wählen Sie "Anmeldeinformationen erstellen" aus.
Wählen Sie den Anmeldetyp Credential TypeAWS IAM-Rolle aus.
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 von 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. Siehe (Optional) Zuweisen der Speicheranmeldeinformationen zu bestimmten Arbeitsbereichen.
Sie können auch Speicheranmeldeinformationen mithilfe des Databricks Terraform-Anbieters und databricks_storage_credential erstellen.
Schritt 3: Aktualisieren der Vertrauensrichtlinie der IAM-Rolle
Ändern Sie in AWS die Vertrauensstellungsrichtlinie, um die externe ID Ihrer Speicheranmeldeinformationen hinzuzufügen und sie selbst voraussetzende machen.
Kehren Sie zu Ihrer gespeicherten IAM-Rolle zurück, und wechseln Sie zur Registerkarte " Vertrauensstellungen" .
Bearbeiten Sie die Vertrauensrichtlinie wie folgt:
Fügen Sie der Anweisung "Allow" 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>"
Aktualisieren Sie in der
"sts:AssumeRole"
-Anweisung die Platzhalter-ID auf die externe ID Ihrer Speicheranmeldedaten, die Sie im vorherigen Schritt kopiert haben."sts:ExternalId": "<STORAGE-CREDENTIAL-EXTERNAL-ID>"
Ihre Richtlinie sollte nun wie folgt aussehen, wobei der Ersetzungstext aktualisiert wurde, um die externe ID, Konto-ID und IAM-Rollenwerte Ihrer Speicheranmeldeinformationen zu verwenden:
{ "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 der Seite "Schnellzugriff " auf die Schaltfläche "Externe Daten > ", und wechseln Sie zur Registerkarte " Anmeldeinformationen ".
Alternativ können Sie auf das
oben im Katalogfenster klicken und „Anmeldeinformationen“ auswä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.
Richtlinien für selbstübernommene Rollenübernahme
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 angenommen werden. Ausführliche Informationen finden Sie in diesem Communityblogbeitrag.
Am 20. Januar 2025 begann Databricks die Nutzung vorhandener Speicheranmeldeinformationen mit nicht selbst angenommenen IAM-Rollen zu blockieren. Dieses Verbot kann Arbeitslasten und Aufträge beeinträchtigen oder brechen, die mit nicht selbst verifizierten 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 Self Assume Role Überprüfung fehlschlägt, überprüfen Sie Schritt 3: Aktualisieren Sie die Richtlinie der Vertrauensstellung der IAM-Rolle und konfigurieren Sie die Richtlinie der Vertrauensstellung 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.
Notizbuch zur Anmeldeinformationenprüfung mit Selbstübernahme von Speicheranmeldeinformationen
(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 finden Sie unter (Optional) Zuweisen von Speicheranmeldeinformationen zu bestimmten Arbeitsbereichen.
Einschränkungen
Plattformübergreifender Zugriff von Azure Databricks auf AWS S3-Buckets wird in Arbeitsbereichen, die serverloses Ausgangssteuerelement verwenden, nicht unterstützt.
Nächste Schritte
Anzeigen, Aktualisieren, Löschen und anderen Benutzern die Erlaubnis zur Nutzung von Speicherberechtigungen erteilen. Siehe Verwalten von Speicheranmeldeinformationen.
Definieren Sie externe Speicherorte mithilfe von Speicheranmeldeinformationen. Weitere Informationen finden Sie unter Erstellen eines externen Speicherorts zum Verbinden des Cloudspeichers mit Azure Databricks.