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.
Ein Workspace Secret Scope ist eine benannte Sammlung von Secrets in einem Workspace. Berechtigungen für den Geheimnisbereich steuern, wer die darin enthaltenen Geheimnisse lesen, schreiben und verwalten kann. Berechtigungen gelten für den gesamten Scope, nicht für einzelne Geheimnisse, sodass ein Nutzer, der ein Secret in einem Scope lesen kann, alle lesen kann. Um Workspace-Secret-Scopes mit Unity-Catalog-Geheimnissen zu vergleichen, siehe Auswählen, wo ein Geheimnis gespeichert werden soll.
Um einen Workspace Secret Scope zu verwenden:
- Erstellen Sie einen geheimen Bereich.
- Füge dem Bereich Secrets hinzu.
- Erteile Berechtigungen für den Scope.
- Verweise in deinem Code oder in einer Spark-Konfigurationseigenschaft oder Umgebungsvariable auf die Secrets. Weitere Informationen finden Sie unter Verwenden eines Geheimnisses in einer Spark-Konfigurationseigenschaft oder -Umgebungsvariable.
Warning
Workspace-Administratoren, Secret-Ersteller und Nutzer, denen die Berechtigung erteilt wurde, können auf Azure Databricks-Secrets zugreifen und diese lesen. Obwohl Azure Databricks versucht, geheime Werte in Notebook-Ausgaben zu schwärzen, ist es nicht möglich, diese Benutzer vollständig daran zu hindern, geheime Inhalte einzusehen. Weisen Sie geheime Zugriffsberechtigungen immer sorgfältig zu, um vertrauliche Informationen zu schützen.
Verwalten von geheimen Bereichen
Azure Databricks empfiehlt, geheime Scopes auf Rollen oder Anwendungen statt auf Einzelpersonen auszurichten.
Es gibt zwei Arten von geheimen Bereichen:
- Azure Key Vault-gesichert: Sie können mithilfe von Geheimnisbereichen mit Azure Key Vault-Unterstützung auf Geheimnisse verweisen, die in Azure Key Vault gespeichert sind. Ein von Azure Key Vault unterstützter Secret Scope ist eine schreibgeschützte Schnittstelle zum Key Vault. Du verwaltest seine Secrets in Azure.
- Databricks-gesichert: Ein von Databricks unterstützter Geheimnisbereich wird in einer verschlüsselten Datenbank gespeichert, die sich im Besitz von Azure Databricks befindet.
Important
Azure Key Vault-gestützte Secret-Scopes unterstützen nur das Vault-Zugriffsrichtlinien-Berechtigungsmodell, nicht die rollenbasierte Zugriffssteuerung in Azure (RBAC). Neue Azure-Schlüsseltresore verwenden standardmäßig Azure RBAC. Wenn Ihr Key Vault Azure RBAC verwendet, stellen Sie das Berechtigungsmodell auf Vault Access Policy um, bevor Sie einen von Azure Key Vault unterstützten Geheimnisbereich erstellen.
Nachdem Sie einen geheimen Bereich erstellt haben, können Sie Benutzern Berechtigungen zum Lesen, Schreiben und Verwalten geheimer Bereiche zuweisen.
Erstellen eines von Azure Key Vault unterstützten Geheimnisbereichs
Erstelle einen von Azure Key Vault unterstützten Geheimbereich im Azure-Portal und in der Azure Databricks Workspace UI. Du kannst auch die Databricks-CLI verwenden.
Requirements
- Sie müssen über eine Azure Key Vault-Instanz verfügen. Wenn Sie nicht über eine Schlüsseltresorinstanz verfügen, befolgen Sie die Anweisungen unter Erstellen eines Key Vault mithilfe des Azure-Portals.
- Sie müssen über die Rolle "Key Vault Contributor", "Contributor" oder "Owner" in der Azure Key Vault-Instanz verfügen, die Sie verwenden möchten, um den Secret Scope zu unterstützen.
Notiz
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 Key Vault gewährt wurde.
Wenn der Key Vault in einem anderen Mandanten als der Azure Databricks-Arbeitsbereich existiert, muss der Microsoft Entra ID-Nutzer, der den Geheimbereich erstellt, die Berechtigung haben, Dienstprinzipale im Mandanten des Key Vault zu erstellen. 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 im Azure-Portal an, finden und wählen Sie die Azure Key Vault-Instanz aus.
Klicken Sie unter "Einstellungen" auf die Registerkarte " Access-Konfiguration ".
Legen Sie das Berechtigungsmodell auf die Vault-Zugriffsrichtlinie fest. Neue Key Vaults verwenden standardmäßig Azure role-based access control, was von Azure Key Vault-gestützten Secret Scopes nicht unterstützt wird.
Notiz
Das Erstellen eines Azure Key Vault-gesicherten geheimen Bereichs gewährt die Berechtigung "Abrufen und Auflisten" der Anwendungs-ID für den Azure Databricks-Dienst mithilfe von Vault-Zugriffsrichtlinien.
Wählen Sie unter Einstellungen die Option Netzwerk aus.
In Firewalls und virtuelle Netzwerke setzen Sie Zugriff erlauben von: auf Öffentlichen Zugriff von bestimmten virtuellen Netzwerken und IP-Adressen erlauben.
Aktivieren Sie unter Ausnahme die Option Zulassen, dass vertrauenswürdige Microsoft-Dienste diese Firewall umgehen.
Notiz
Sie können auch "Zugriff zulassen von" festlegen: um den öffentlichen Zugriff von allen Netzwerken aus zuzulassen.
Erstellen eines von Azure Key Vault unterstützten Geheimnisbereichs
Wechseln Sie zu
https://<databricks-instance>#secrets/createScope. Ersetzen Sie<databricks-instance>durch die workspace-URL Ihrer Azure Databricks-Bereitstellung. Bei dieser URL wird die Groß-/Kleinschreibung beachtet. Zum Beispiel musscreateScopeinSmit einem Großbuchstabenscopegeschrieben werden.
Geben Sie den Namen des geheimen Bereichs ein. Namen von Geheimnisbereichen sind nicht case-sensitiv.
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 (zum Beispiel
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/databricksKVDiese Eigenschaften sind auf der Registerkarte "Einstellungen > " eines Azure Key Vault in Ihrem Azure-Portal verfügbar.
Klicke auf Erstellen.
Verwenden Sie den Befehl Databricks CLI
databricks secrets list-scopes, um zu überprüfen, ob der Bereich erfolgreich erstellt wurde.
Erstellen eines von Databricks unterstützten Geheimnisbereichs
Erstellen Sie einen geheimen Scope mit der Databricks-CLI (Version 0.205 und höher) oder der Secrets-API.
Geheime Bereichsnamen:
- Muss innerhalb eines Arbeitsbereichs eindeutig sein.
- Muss aus alphanumerischen Zeichen, Bindestrichen, 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 Databricks-unterstützten geheimen Bereich erstellt haben, können Sie ihm Geheimnisse hinzufügen.
Geheimnisbereiche auflisten
Um die vorhandenen Bereiche in einem Arbeitsbereich mithilfe der CLI aufzulisten:
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 auch einen geheimen Bereich mithilfe der Geheimen API löschen.
Geheimnisse verwalten
Ein Geheimschlüssel ist ein Schlüssel-Wert-Paar, das vertrauliche Materialien mithilfe eines Schlüsselnamens speichert, der innerhalb eines geheimen Bereichs eindeutig ist.
Die Methode zur Erzeugung eines Geheimnisses hängt davon ab, ob Sie einen von Azure Key Vault oder Databricks unterstützten Geltungsbereich verwenden.
Ein Geheimnis in einem von Azure Key Vault-unterstützten Scope erstellen
Um einen geheimen Schlüssel in Azure Key Vault zu erstellen, verwenden Sie das Azure-Portal oder die Azure Set Secret REST-API.
Erstellen eines Geheimnisses in einem von Databricks unterstützten Bereich
Erstelle ein Geheimnis mit der Databricks-CLI (Version 0.205 und höher), dem Databricks-SDK für Python in einem Notebook oder der Secrets-API. Bei Namen von Geheimnissen wird die Groß- und Kleinschreibung nicht beachtet.
Databricks-CLI
Wenn Sie einen geheimen Schlüssel in einem Datenbricks-gesicherten Bereich erstellen, können Sie den geheimen Wert auf eine von drei Arten angeben:
- Gib den Wert als Zeichenkette mit dem
--string-valueFlag an. - Geben Sie das Geheimnis ein, wenn Sie interaktiv aufgefordert werden (einzeilige Geheimnisse).
- Übergeben Sie das Geheimnis über die Standardeingabe (mehrzeilige Geheimnisse).
Beispiele:
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. Beispiele:
(cat << EOF
this
is
a
multi
line
secret
EOF
) | databricks secrets put-secret <scope-name> <key-name>
Databricks-SDK für Python
from databricks.sdk import WorkspaceClient
w = WorkspaceClient()
w.secrets.put_secret("<secret_scope>","<key-name>",string_value ="<secret>")
Lesen eines Geheimnisses
Lesen Sie ein Geheimnis mit der Databricks-CLI (Version 0.205 und höher) oder in einem Notebook mit dem Secrets-Tool (dbutils.secrets).
Databricks-CLI
Um den Wert eines Geheimnisses mit der Databricks-CLI auszulesen, muss man den base64-codierten Wert dekodieren. Sie können jq verwenden, um den Wert zu extrahieren und base64 --decode zu dekodieren.
databricks secrets get-secret <scope-name> <key-name> | jq -r .value | base64 --decode
Geheimnishilfsprogramm (dbutils.secrets)
password = dbutils.secrets.get(scope = "<scope-name>", key = "<key-name>")
Geheimnisse auflisten
Um Geheimnisse in einem bestimmten Bereich aufzulisten
databricks secrets list-secrets <scope-name>
Die Antwort zeigt Metadaten zu den Geheimnissen, wie zum Beispiel deren Schlüsselnamen. Um diese Metadaten in einem Notizbuch oder Job aufzulisten, verwenden Sie das Secrets-Tool (dbutils.secrets). Beispiele:
dbutils.secrets.list('my-scope')
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 Geheime API verwenden.
Verwenden Sie die Azure SetSecret-REST-API oder die Azure-Portal-BEnutzeroberfläche , um einen geheimen Schlüssel aus einem bereich zu löschen, der von Azure Key Vault unterstützt wird.
Verwalten von Berechtigungen für den geheimen Bereich
Standardmäßig hat der Benutzer, der einen geheimen Scope erstellt, die MANAGE-Berechtigung dafür, die Geheimnisse im Scope zu lesen, Geheimnisse darin zu schreiben und dessen Berechtigungen zu verwalten.
Notiz
Geheime Zugriffssteuerungslisten (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.
Verwalten Sie Geheimnisbereichsberechtigungen mit der Databricks-CLI (Version 0.205 und höher) oder der Secrets-API. Für geheime Berechtigungsebenen siehe Secret ACLs.
Erteilen von Benutzerberechtigungen für einen geheimen Bereich
Notiz
Berechtigungen für einen Secret Scope zu erteilen erfordert den Premium-Plan.
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".
Zum Beispiel, um einer Gruppe wie datascience zu erlauben, die Geheimnisse in einem Scope zu lesen, gewährt ihr READ:
databricks secrets put-acl <scope-name> <group> READ
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 Schwärzung
Das Speichern von Zugangsdaten als Azure Databricks-Secrets hilft, sie beim Ausführen von Notebooks und Jobs zu schützen. Allerdings kann man immer noch versehentlich ein Geheimnis in die Standardausgabe ausgeben oder den Wert während der Variablenzuweisung anzeigen.
Um dies zu verhindern, versucht Azure Databricks, geheime Werte zu schwärzen, die mit dbutils.secrets.get() gelesen und in einer Spark-Konfigurationseigenschaft referenziert werden. Wenn angezeigt, werden die geheimen Werte 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.
Warning
Die Schwärzung gilt nur für geheime Werte in Buchstabenform. Die Funktion zur Geheimnisbearbeitung verhindert daher unbeabsichtigte und willkürliche Transformationen eines Geheimnisliterals. Um Secrets zu verwalten, verwenden Sie Zugriffskontrolllisten, um die Berechtigungen zum Ausführen von Befehlen zu begrenzen. Dadurch wird der nicht autorisierte Zugriff auf freigegebene Notizbuchkontexte verhindert.
Secret-Schwärzung in SQL
Azure Databricks versucht, alle SQL Data Query Language (DQL)-Befehle, die die geheime Funktion aufrufen, zu schwärzen, einschließlich referenzierter Ansichten und benutzerdefinierter Funktionen. Wenn die secret Funktion verwendet wird, wird die Ausgabe nach Möglichkeit durch [REDACTED] ersetzt. Wie das Redigieren von Notizbüchern gilt dies nur für Literalwerte, nicht für transformierte oder indirekt referenzierte Geheimnisse.
Für SQL-Befehle der Data Manipulation Language (DML) erlaubt Azure Databricks das Abrufen von Secrets, wenn das Secret als sicher eingestuft wird. Zum Beispiel ist ein Geheimnis sicher, wenn es in eine kryptografische Funktion wie sha() oder aes_encrypt() eingebettet ist, die verhindert, dass Rohwerte unverschlüsselt gespeichert werden.
Geheime Überprüfung in SQL
Azure Databricks wendet auch die Validierung an, um SQL-DML-Befehle zu blockieren, die dazu führen können, dass unverschlüsselte geheime Schlüssel in Tabellen gespeichert werden. Die Abfrageanalyse versucht, diese Szenarien zu identifizieren und zu verhindern, was dazu beiträgt, versehentliche Speicherung vertraulicher Informationen in Nur-Text zu vermeiden.
Zusätzliche Ressourcen
| Resource | Description |
|---|---|
| Verwaltung von Geheimnissen | Vergleichen Sie Workspace-Secret-Scopes mit Unity Catalog Secrets und sehen Sie, wo Sie jedes verwenden können. |
| Verwenden Sie ein Secret in einer Spark-Konfigurationseigenschaft oder Umgebungsvariable | Auf Geheimnisse in Spark-Konfigurationseigenschaften und Umgebungsvariablen verweisen. |