Freigeben über


Erstellen von verwaltetem Speicher in Unity Catalog mithilfe eines Dienstprinzipals (Legacy)

Wichtig

Diese Dokumentation wurde eingestellt und wird unter Umständen nicht aktualisiert. Die in diesem Inhalt erwähnten Produkte, Dienste oder Technologien werden nicht mehr unterstützt. Die aktuelle Administratordokumentation finden Sie unter Verwalten Ihres Azure Databricks-Kontos.

In diesem Artikel wird eine Legacymethode zum Erstellen externer Speicherorte und verwalteter Speicher mithilfe eines Dienstprinzipals beschrieben. Für Databricks wird dringend empfohlen, statt Dienstprinzipalen eine von Azure verwaltete Identität zu verwenden, die Zugriff auf den Speichercontainer gewährt. Weitere Informationen finden Sie unter Verwenden von durch Azure verwaltete Identitäten in Unity Catalog für den Zugriff auf den Speicher.

Wenn Sie jedoch weiterhin einen Dienstprinzipal verwenden möchten oder über verwalteten Unity Catalog-Speicher oder externe Speicherorte verfügen, die einen Dienstprinzipal verwenden und den Prozess verstehen möchten, finden Sie die Anweisungen in diesem Archivartikel.

Erstellen eines Metastores, auf den mithilfe eines Dienstprinzipals zugegriffen wird (Legacy)

So erstellen Sie einen Unity-Katalog-Metastore, auf den von einem Dienstprinzipal zugegriffen wird:

  1. Erstellen Sie ein Speicherkonto für Azure Data Lake Storage Gen2.

    Ein Speichercontainer in diesem Konto speichert alle verwalteten Tabellen des Metastores, mit Ausnahme der Tabellen, die sich in einem Katalog oder Schema mit eigenem verwalteten Speicherort befinden.

    Lesen Sie die Informationen unter Erstellen eines Speicherkontos für die Verwendung mit Azure Data Lake Storage Gen2. Es muss sich um ein Azure Data Lake Storage Gen2-Konto mit Premium-Leistung in derselben Region wie Ihre Azure Databricks-Arbeitsbereiche handeln.

  2. Erstellen eines Containers im neuen Speicherkonto.

    Notieren Sie sich den ADLSv2-URI für den Container im folgenden Format:

    abfss://<container-name>@<storage-account-name>.dfs.core.windows.net/<metastore-name>
    

    Ersetzen Sie in den folgenden Schritten <storage-container> durch diese URI.

  3. Erstellen Sie in Microsoft Entra ID einen Dienstprinzipal, und weisen Sie ihm Berechtigungen für das Speicherkonto zu. Befolgen Sie dazu die Anweisungen unter Zugriff auf Speicher mit Microsoft Entra ID (früher Azure Active Directory) und einem Dienstprinzipal.

    Unity Catalog verwendet diesen Dienstprinzipal für den Zugriff auf die Container im Speicherkonto im Namen von Unity Catalog-Benutzern. Generieren Sie einen geheimen Clientschlüssel für den Dienstprinzipal. Weitere Informationen finden Sie unter Microsoft Entra ID-Dienstprinzipalauthentifizierung. Notieren Sie sich den geheimen Clientschlüssel für den Dienstprinzipal, die Clientanwendungs-ID und die ID des Verzeichnisses, in dem Sie diesen Dienstprinzipal erstellt haben. Ersetzen Sie <client-secret>, <client-application-id> und <directory-id> in den folgenden Schritten durch diese Werte.

  4. Notieren Sie sich diese Eigenschaften, die Sie beim Erstellen eines Metastores verwenden:

    • <aad-application-id>
    • die Region des Speicherkontos
    • <storage-container>
    • <client-secret>, <client-application-id> und <directory-id> des Dienstprinzipals
  5. Sie können keinen Metastore erstellen, auf den mithilfe eines Dienstprinzipals in der Kontokonsolen-Benutzeroberfläche zugegriffen wird. Verwenden Sie stattdessen die Kontometastores-API. Zum Beispiel:

    curl -n -X POST --header 'Content-Type: application/json' https://<account-domain>/api/2.0/accounts/<account-id>/metastores
    --data '{
       "metastore_info": {
          "name": "<metastore-name>",
          "storage_root": "<storage-container>",
          "region": "<region>"
          "storage_root_credential_id"
       }
    }'
    

    Weitere Informationen zum Authentifizieren bei APIs auf Kontoebene finden Sie unter MS Entra-Dienstprinzipalauthentifizierung.

    Der oder die Benutzer*in, der bzw. die einen Metastore erstellt, ist dessen Besitzer*in. Databricks empfiehlt, den Besitz des Metastores an eine Gruppe zu übertragen. Zuweisen eines Metastore-Administrators.

  6. Notieren Sie sich die Metastore-ID. Dabei handelt es sich bei den Eigenschaften des Metastores um den Teil der URL nach /data und vor /configuration.

  7. Nun ist der Metastore erstellt, doch Unity Catalog kann noch keine Daten darin schreiben. Schließen Sie die Einrichtung des Metastores mit den folgenden Schritten ab:

    1. Melden Sie sich in einem separaten Browser bei einem Arbeitsbereich an, der dem Metastore als Arbeitsbereichsadministrator zugewiesen ist.

    2. Notieren Sie sich die Arbeitsbereichs-URL. Dabei handelt es sich um den ersten Teil der URL, nach https:// bis einschließlich azuredatabricks.net.

    3. Generieren Sie ein persönliches Zugriffstoken. Weitere Informationen finden Sie in der Tokenverwaltungs-API.

    4. Fügen Sie das persönliche Zugriffstoken der .netrc-Datei in Ihrem Basisverzeichnis hinzu. Dies erhöht die Sicherheit, da das persönliche Zugriffstoken auf diese Weise nicht im Befehlsverlauf Ihrer Shell angezeigt wird. Weitere Informationen finden Sie in der Tokenverwaltungs-API.

    5. Führen Sie den folgenden cURL-Befehl aus, um die Anmeldeinformationen des Stammspeichers für den Metastore zu erstellen. Ersetzen Sie folgende Platzhalterwerte:

      • <workspace-url>: URL des Arbeitsbereichs, in dem das persönliche Zugriffstoken generiert wurde.
      • <credential-name>: Name für die Anmeldeinformationen des Speichers.
      • <directory-id>: Verzeichnis-ID für den von Ihnen erstellten Dienstprinzipal.
      • <application-id>: Anwendungs-ID für den von Ihnen erstellten Dienstprinzipal.
      • <client-secret>: Wert des geheimen Clientschlüssels, den Sie für den Dienstprinzipal generiert haben (nicht die geheime Client-ID).
      curl -n -X POST --header 'Content-Type: application/json' https://<workspace-url>/api/2.0/unity-catalog/storage-credentials --data "{
         \"name\": \"<credential-name>\",
         \"azure_service_principal\": {
         \"directory_id\": \"<directory-id>\",
         \"application_id\": \"<application-id>\",
         \"client_secret\": \"<client-secret>\"
         }
      }"
      

      Notieren Sie sich die Anmeldeinformations-ID des Speichers. Dabei handelt es sich um den Wert von id aus der Antwort des cURL-Befehls.

  8. Führen Sie den folgenden cURL-Befehl aus, um den Metastore mit den neuen Anmeldeinformationen des Stammspeichers zu aktualisieren. Ersetzen Sie folgende Platzhalterwerte:

    • <workspace-url>: URL des Arbeitsbereichs, in dem das persönliche Zugriffstoken generiert wurde.
    • <metastore-id>: Die Metastore-ID.
    • <storage-credential-id>: Die Anmeldeinformations-ID des Speichers aus dem vorherigen Befehl.
    curl -n -X PATCH --header 'Content-Type: application/json' https://<workspace-url>/api/2.0/unity-catalog/metastores/<metastore-id> --data
    "{\"storage_root_credential_id\": \"<storage-credential-id>\"}"
    

Sie können nun Arbeitsbereiche zum Metastore hinzufügen.

Erstellen von Speicheranmeldeinformationen, die einen Dienstprinzipal (Legacy) verwenden

Nur Azure Databricks-Kontoadministrator*innen können Speicheranmeldeinformationen mithilfe eines Dienstprinzipals erstellen. Die Administrator*innen, die die Speicheranmeldeinformationen für den Dienstprinzipal erstellt haben, können die Eigentümerschaft an andere Benutzer*innen oder Gruppen zuweisen, um die Berechtigungen zu verwalten.

Erstellen Sie zunächst einen Dienstprinzipal, und gewähren Sie diesem Zugriff auf Ihr Speicherkonto. Informationen dazu finden Sie unter Zugriff auf Speicher mit Microsoft Entra ID (früher Azure Active Directory) und einem Dienstprinzipal.

Sie können die Speicheranmeldeinformationen eines Dienstprinzipals nicht mithilfe des Katalog-Explorers hinzufügen. Verwenden Sie stattdessen die API für Speicheranmeldeinformationen. Beispiel:

curl -X POST -n \
https://<databricks-instance>/api/2.1/unity-catalog/storage-credentials \
-d '{
   "name": "<storage-credential-name>",
   "read_only": true,
   "azure_service_principal": {
      "directory_id": "<directory-id>",
      "application_id": "<application-id>",
      "client_secret": "<client-secret>"
   },
   "skip_validation": "false"
   }'

Sie können auch Speicheranmeldeinformationen mithilfe des Databricks Terraform-Anbieters und databricks_storage_credential erstellen.