Verwaltung von Geheimnissen
Für den Zugriff auf Daten ist es manchmal erforderlich, dass Sie sich über JDBC bei externen Datenquellen authentifizieren. Anstatt Ihre Anmeldeinformationen direkt in ein Notizbuch einzugeben, können Sie Azure Databricks-Schlüssel verwenden, um Ihre Anmeldeinformationen zu speichern und in Notizbüchern und Aufträgen darauf zu verweisen. Dieser Artikel enthält eine Übersicht über Azure Databricks-Geheimnisse.
Übersicht über geheime Schlüssel
So konfigurieren und verwenden Sie geheime Schlüssel:
- Erstellen Sie einen Geheimnisbereich. Ein Geheimnisbereich ist eine Sammlung von Geheimnissen, die durch einen Namen identifiziert werden.
- Hinzufügen von Geheimnissen zum Bereich
- Weisen Sie Berechtigungen für den geheimen Bereich zu.
- Greifen Sie mithilfe von Databricks Utilities auf geheime Schlüssel zu, siehe Secrets-Hilfsprogramm (dbutils.secrets).
Ein End-to-End-Beispiel für die Verwendung geheimer Schlüssel in Ihren Workflows finden Sie im Lernprogramm: Erstellen und Verwenden eines Geheimschlüssels für Databricks. Informationen zum Verwenden eines geheimen Schlüssels in einer Spark-Konfigurationseigenschaft oder Umgebungsvariablen finden Sie unter Verwenden eines geheimen Schlüssels in einer Spark-Konfigurationseigenschaft oder Umgebungsvariable.
Warnung
Administratoren, Geheimnisersteller und Benutzer, denen die entsprechende Berechtigung erteilt wurde, können Azure Databricks-Geheimnisse lesen. Während Databricks versucht, geheime Werte zu redact, die in Notizbüchern angezeigt werden können, ist es nicht möglich, solche Benutzer daran zu hindern, geheime Schlüssel zu lesen. Siehe "Geheime Redaction".
Verwalten von geheimen Bereichen
Ein Geheimnisbereich ist eine Sammlung von Geheimnissen, die durch einen Namen identifiziert werden. Databricks empfiehlt, Geheimnisbereiche an Rollen oder Anwendungen statt an Einzelpersonen auszurichten.
Es gibt zwei Arten von geheimen Bereichen:
- Azure Key Vault-gesichert: Sie können geheime Schlüssel referenzieren, die in einem Azure Key Vault gespeichert sind, mithilfe von Azure Key Vault gesicherten geheimen Bereichen. Der geheime Azure Key Vault-Bereich ist eine schreibgeschützte Schnittstelle zum Key Vault. Sie müssen geheime Schlüssel in Azure Key Vault-gesicherten geheimen Bereichen in Azure verwalten.
- Databricks-gesichert: Ein von Databricks gesicherter geheimer Bereich wird in einer verschlüsselten Datenbank gespeichert, die von Azure Databricks verwaltet wird.
Nachdem Sie einen geheimen Bereich erstellt haben, können Sie Benutzern Berechtigungen zuweisen, um Benutzern Zugriff auf Lese-, Schreib- und Verwaltungsbereiche zu gewähren.
Erstellen eines von Azure Key Vault unterstützten Geheimnisbereichs
In diesem Abschnitt wird beschrieben, wie Sie einen geheimen Azure Key Vault-gesicherten Bereich mithilfe des Azure-Portals und der Benutzeroberfläche des Azure Databricks-Arbeitsbereichs erstellen. Sie können einen von Azure Key Vault unterstützten Geheimnisbereich auch über die Databricks-CLI erstellen.
Anforderungen
- Sie müssen über eine Azure Key Vault-Instanz verfügen. Wenn Sie nicht über eine Key Vault-Instanz verfügen, befolgen Sie die Anweisungen unter Festlegen eines Geheimnisses und Abrufen des Geheimnisses aus Azure Key Vault mithilfe des Azure-Portals.
- Sie müssen über die Rolle "Key Vault-Mitwirkender", "Mitwirkender" oder "Besitzer" in der Azure Key Vault-Instanz verfügen, die Sie verwenden möchten, um den geheimen Bereich zu sichern.
Hinweis
Zum Erstellen eines von Azure Key Vault unterstützten Geheimnisbereichs ist die Rolle „Mitwirkender“ oder „Besitzer“ in der Azure Key Vault-Instanz erforderlich, auch wenn dem Azure Databricks-Dienst zuvor der Zugriff auf den Schlüsseltresor gewährt wurde.
Wenn der Schlüsseltresor in einem anderen Mandanten als dem Azure Databricks-Arbeitsbereich vorhanden ist, muss der Azure AD-Benutzer, der den Geheimnisbereich erstellt, über die Berechtigung zum Erstellen von Dienstprinzipalen im Mandanten des Schlüsseltresors verfügen. Andernfalls tritt der folgende Fehler auf:
Unable to grant read/list permission to Databricks service principal to KeyVault 'https://xxxxx.vault.azure.net/': Status code 403, {"odata.error":{"code":"Authorization_RequestDenied","message":{"lang":"en","value":"Insufficient privileges to complete the operation."},"requestId":"XXXXX","date":"YYYY-MM-DDTHH:MM:SS"}}
Konfigurieren Ihrer Azure Key Vault-Instanz für Azure Databricks
Melden Sie sich beim Azure-Portal an, suchen Sie die Azure-Schlüsseltresorinstanz, und wählen Sie sie aus.
Klicken Sie unter "Einstellungen" auf die Registerkarte "Access-Konfiguration ".
Legen Sie das Berechtigungsmodell auf Tresorzugriffsrichtlinie fest.
Hinweis
Das Erstellen einer von Azure Key Vault unterstützten Geheimnisbereichsrolle gewährt die Berechtigungen Abrufen (Get) und Auflisten (List) der Anwendungs-ID für den Azure Databricks-Dienst mithilfe von Schlüsseltresor-Zugriffsrichtlinien. Das rollenbasierte Zugriffssteuerungsberechtigungsmodell in Azure wird mit Azure Databricks nicht unterstützt.
Wählen Sie unter Einstellungen die Option Netzwerk aus.
Legen Sie unter Firewalls und virtuelle Netzwerke die Option Zugriff zulassen von: fest, um den öffentlichen Zugriff von bestimmten virtuellen Netzwerken und IP-Adressen zuzulassen.
Wählen Sie unter Ausnahme die Option Vertrauenswürdigen Microsoft-Diensten die Umgehung dieser Firewall erlauben aus.
Hinweis
Sie können auch für Zugriff erlauben von: die Option Öffentlichen Zugriff aus allen Netzwerken zulassen auswählen.
Erstellen eines von Azure Key Vault unterstützten Geheimnisbereichs
Wechseln Sie zu
https://<databricks-instance>#secrets/createScope
. Ersetzen Sie<databricks-instance>
durch die Arbeitsbereichs-URL Ihrer Azure Databricks-Bereitstellung. Bei dieser URL wird die Groß-/Kleinschreibung beachtet. Beispielsweisescope
muss increateScope
Großbuchstaben )S
verwendet werden.Geben Sie den Namen des Geheimnisbereichs ein. Bei Namen von Geheimnisbereichen wird Groß- und Kleinschreibung beachtet.
Wählen Sie unter "Prinzipal verwalten" "Creator" oder "Alle Arbeitsbereichsbenutzer" aus, um anzugeben, welche Benutzer über die BERECHTIGUNG MANAGE für den geheimen Bereich verfügen.
Mit der BERECHTIGUNG MANAGE können Benutzer Berechtigungen für den Bereich lesen, schreiben und erteilen. Ihr Konto muss über den Premium-Plan verfügen, um Creator auszuwählen.
Geben Sie den DNS-Namen (z. B.
https://databrickskv.vault.azure.net/
) und die Ressourcen-ID ein, z. B.:/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcegroups/databricks-rg/providers/Microsoft.KeyVault/vaults/databricksKV
Diese Eigenschaften sind auf der Registerkarte Einstellungen > Eigenschaften einer Azure Key Vault-Instanz in Ihrem Azure-Portal verfügbar.
Klicken Sie auf Erstellen.
Verwenden Sie den Databricks-CLI-Befehl
databricks secrets list-scopes
, um zu überprüfen, ob der Bereich erfolgreich erstellt wurde.
Erstellen eines von Databricks unterstützten Geheimnisbereichs
In diesem Abschnitt wird beschrieben, wie Sie einen geheimen Bereich mit der Was ist die Databricks CLI? (Version 0.205 und höher) erstellen. Sie können auch die Geheimnisse-API verwenden.
Geheime Bereichsnamen:
- Muss innerhalb eines Arbeitsbereichs eindeutig sein.
- Muss aus alphanumerischen Zeichen, Gedankenstrichen, Unterstrichen
@
und Punkten bestehen und darf 128 Zeichen nicht überschreiten. - Die Groß-/Kleinschreibung wird nicht beachtet.
Geheime Bereichsnamen werden als nicht vertraulich betrachtet und sind von allen Benutzern im Arbeitsbereich lesbar.
So erstellen Sie einen Bereich mithilfe der Databricks-Befehlszeilenschnittstelle:
databricks secrets create-scope <scope-name>
Standardmäßig werden Bereiche mit der MANAGE-Berechtigung für den Benutzer erstellt, der den Bereich erstellt hat. Nachdem Sie einen datenbricks-gesicherten geheimen Bereich erstellt haben, können Sie geheime Schlüssel hinzufügen.
Auflisten von Geheimnisbereichen
So listen Sie die vorhandenen Bereiche in einem Arbeitsbereich mithilfe der CLI auf:
databricks secrets list-scopes
Sie können auch geheime Bereiche mithilfe der Geheimen API auflisten.
Löschen eines Geheimnisbereichs
Beim Löschen eines Geheimnisbereichs werden alle Geheimnisse und ACLs gelöscht, die auf den Bereich angewendet werden. Führen Sie Folgendes aus, um einen Bereich mithilfe der CLI zu löschen:
databricks secrets delete-scope <scope-name>
Sie können Geheimbereiche auch mithilfe der Geheimnis-API löschen.
Verwalten von geheimen Schlüsseln
Ein Geheimschlüssel ist ein Schlüssel-Wert-Paar, das vertrauliche Materialien mithilfe eines Schlüsselnamens speichert, der innerhalb eines geheimen Bereichs eindeutig ist.
In diesem Abschnitt wird beschrieben, wie Sie einen geheimen Bereich mit der Was ist die Databricks CLI? (Version 0.205 und höher) erstellen. Sie können auch die Geheimnisse-API verwenden. Bei Namen von Geheimnissen wird Groß- und Kleinschreibung beachtet.
Erstellen eines geheimen Schlüssels
Die Methode zum Erstellen eines Geheimnisses hängt davon ab, ob Sie einen durch Azure Key Vault oder Databricks unterstützten Bereich verwenden.
Erstellen eines Geheimnisses in einem von Azure Key Vault unterstützten Bereich
Zum Erstellen eines geheimen Schlüssels in Azure Key Vault verwenden Sie die rest-API Azure-Portal oder azure Set Secret REST API. Ein Beispiel finden Sie unter Schritt 4: Hinzufügen des geheimen Clientschlüssels zu Azure Key Vault.
Erstellen eines Geheimnisses in einem von Databricks unterstützten Bereich
In diesem Abschnitt wird beschrieben, wie Sie mithilfe der "What is the Databricks CLI" (Version 0.205 und höher) einen geheimen Schlüssel erstellen. Sie können auch die Geheimnisse-API verwenden. Bei Namen von Geheimnissen wird Groß- und Kleinschreibung beachtet.
Wenn Sie einen geheimen Schlüssel in einem Datenbricks-gesicherten Bereich erstellen, können Sie den geheimen Wert auf eine von drei Arten angeben:
- Geben Sie den Wert als Zeichenfolge mit dem Flag "-string-value" an.
- Geben Sie den geheimen Schlüssel ein, wenn Sie interaktiv aufgefordert werden (einzeilige geheime Schlüssel).
- Übergeben Sie den geheimen Schlüssel mithilfe der Standardeingabe (mehrzeilige geheime Schlüssel).
Zum Beispiel:
databricks secrets put-secret --json '{
"scope": "<scope-name>",
"key": "<key-name>",
"string_value": "<secret>"
}'
Wenn Sie ein mehrzeiliges Geheimnis erstellen, können Sie das Geheimnis mithilfe von Standardeingaben übergeben. Zum Beispiel:
(cat << EOF
this
is
a
multi
line
secret
EOF
) | databricks secrets put-secret <secret_scope> <secret_key>
Auflisten geheimer Schlüssel
So listen Sie Geheimnisse in einem bestimmten Bereich auf
databricks secrets list-secrets <scope-name>
Die Antwort zeigt Metadateninformationen zu den Geheimnissen an, z. B. die Schlüsselnamen der Geheimnisse. Mit dem Hilfsprogramm für Geheimnisse (dbutils.secrets) können Sie diese Metadaten in einem Notebook oder Auftrag auflisten. Beispiel:
dbutils.secrets.list('my-scope')
Lesen eines Geheimnisses
Sie erstellen Geheimnisse mithilfe der REST-API oder CLI, müssen aber in einem Notebook oder Auftrag das Hilfsprogramm für Geheimnisse (dbutils.secrets) verwenden, um ein Geheimnis zu lesen.
Löschen eines Geheimnisses
So löschen Sie ein Geheimnis aus einem Bereich mit der Databricks CLI:
databricks secrets delete-secret <scope-name> <key-name>
Sie können auch die Geheimnisse-API verwenden.
Um ein Geheimnis aus einem von Azure Key Vault unterstützten Bereich zu löschen, verwenden Sie die Azure-REST-API SetSecret oder die Benutzeroberfläche des Azure-Portals.
Verwalten von Berechtigungen für den geheimen Bereich
Standardmäßig wird dem Benutzer, der die geheimen Bereiche erstellt, die BERECHTIGUNG MANAGE gewährt. Dadurch kann der Bereichsersteller geheime Schlüssel im Bereich lesen, geheime Schlüssel in den Bereich schreiben und Berechtigungen für den Bereich verwalten.
Hinweis
Geheime ACLs befinden sich auf der Bereichsebene. Wenn Sie Azure Key Vault-gestützte Bereiche verwenden, haben Benutzer, denen Zugriff auf den Bereich gewährt wird, Zugriff auf alle Geheimnisse im Azure-Key Vault. Verwenden Sie separate Azure Key Vault-Instanzen, um den Zugriff einzuschränken.
In diesem Abschnitt wird beschrieben, wie Sie die Zugriffssteuerung für Geheimnisse mithilfe der Databricks-CLI (ab Version 0.205) verwalten. Sie können auch die Geheimnisse-API verwenden. Weitere Informationen zu Berechtigungsstufen für Geheimnisse finden Sie unter Zugriffssteuerungslisten für Geheimnisse.
Erteilen von Benutzerberechtigungen für einen geheimen Bereich
So erteilen Sie einem Benutzer Berechtigungen für einen geheimen Bereich mithilfe der Databricks CLI:
databricks secrets put-acl <scope-name> <principal> <permission>
Wenn Sie eine PUT-Anforderung für einen Prinzipal stellen, der bereits eine geltende Berechtigung hat, wird die vorhandene Berechtigungsebene überschrieben.
Das Feld principal
gibt einen vorhandenen Azure Databricks-Prinzipal an. Ein/e Benutzer*in wird mit seiner E-Mail-Adresse, ein Dienstprinzipal mit seinem applicationId
-Wert und eine Gruppe mit ihrem Gruppennamen angegeben. Weitere Informationen finden Sie unter Prinzipal.
Berechtigungen für den geheimen Bereich anzeigen
So zeigen Sie alle Berechtigungen für den geheimen Bereich für einen bestimmten geheimen Bereich an:
databricks secrets list-acls <scope-name>
So rufen Sie die Berechtigungen für den geheimen Bereich ab, die auf einen Prinzipal für einen bestimmten geheimen Bereich angewendet werden:
databricks secrets get-acl <scope-name> <principal>
Wenn keine ACL für den angegebenen Prinzipal und bereich vorhanden ist, schlägt diese Anforderung fehl.
Löschen einer Berechtigung für einen geheimen Bereich
So löschen Sie eine Berechtigung für einen geheimen Bereich, die auf einen Prinzipal für einen bestimmten geheimen Bereich angewendet wurde:
databricks secrets delete-acl <scope-name> <principal>
Geheime Redaction
Das Speichern von Anmeldeinformationen als Azure Databricks-Geheimnisse erleichtert den Schutz Ihrer Anmeldeinformationen beim Ausführen von Notebooks und Aufträgen. Ein Geheimnis kann jedoch ganz leicht versehentlich über Standardausgabepuffer ausgegeben werden, oder der Wert kann während der Variablenzuweisung angezeigt werden.
Um dies zu verhindern, bearbeitet Azure Databricks alle Geheimniswerte, die mit dbutils.secrets.get()
gelesen werden. Wenn die Geheimniswerte in der Notebookzellenausgabe angezeigt werden, werden sie durch [REDACTED]
ersetzt.
Wenn Sie beispielsweise eine Variable auf den Geheimniswert dbutils.secrets.get()
festlegen und diese Variable dann ausgeben, wird sie durch [REDACTED]
ersetzt.
Warnung
Die Geheimnisbearbeitung für die Notebookzellenausgabe gilt nur für Literale. Die Funktion zur Geheimnisbearbeitung verhindert daher unbeabsichtigte und willkürliche Transformationen eines Geheimnisliterals. Um die ordnungsgemäße Kontrolle der geheimen Schlüssel sicherzustellen, sollten Sie Zugriffssteuerungslisten verwenden, um Berechtigungen zum Ausführen von Befehlen einzuschränken. Dadurch wird der nicht autorisierte Zugriff auf freigegebene Notizbuchkontexte verhindert.