Geheimenbeheer
Als u gegevens wilt openen, is het soms vereist dat u zich via JDBC bij externe gegevensbronnen verifieert. In plaats van uw credentials rechtstreeks in een notebook in te voeren, kunt u Azure Databricks-geheimen gebruiken om uw credentials op te slaan en ernaar te verwijzen in notebooks en taken. Dit artikel bevat een overzicht van Azure Databricks-geheimen.
Overzicht van geheimen
Geheimen configureren en gebruiken:
- Maak een geheim bereik. Een geheim bereik is verzameling geheimen geïdentificeerd door een naam.
- Geheimen toevoegen aan het bereik
- Wijs machtigingen toe voor het geheime bereik.
- Toegang tot geheimen met databricks-hulpprogramma's, zie het hulpprogramma Geheimen (dbutils.secrets).
Zie zelfstudie: Een Databricks-geheim maken en gebruiken voor een end-to-end-voorbeeld van het gebruik van geheimen in uw werkstromen. Zie Een geheim gebruiken in een Spark-configuratie-eigenschap of omgevingsvariabele als u een geheim wilt gebruiken in een Spark-configuratie-eigenschap of omgevingsvariabele.
Waarschuwing
Beheerders, makers van geheimen en gebruikers die toestemming hebben verleend, kunnen Azure Databricks-geheimen lezen. Hoewel Databricks zijn best doet om het geheim values, dat in notebooks kan worden weergegeven, te redigeren, is het niet mogelijk te voorkomen dat gebruikers geheimen lezen. Zie Geheime redaction.
Geheime bereiken beheren
Een geheim bereik is verzameling geheimen geïdentificeerd door een naam. Databricks raadt aan geheime bereiken uit te lijnen op rollen of toepassingen in plaats van personen.
Er zijn twee typen geheimbereik:
- Door Azure Key Vault ondersteund: u kunt verwijzen naar geheimen die zijn opgeslagen in een Azure Key Vault met behulp van geheime bereiken met Azure Key Vault-ondersteuning. Geheim bereik met Azure Key Vault-ondersteuning is een alleen-lezen interface voor de Key Vault. U moet geheimen beheren in met Azure Key Vault ondersteunde geheime bereiken in Azure.
- Databricks ondersteund: een geheim bereik met Databricks-ondersteuning wordt opgeslagen in een versleutelde database die eigendom is van en wordt beheerd door Azure Databricks.
Nadat u een geheim scope hebt gemaakt, kunt u machtigingen toewijzen aan grant gebruikers om toegang te krijgen tot lees-, schrijf- en beheerbereiken.
Een geheim bereik met Azure Key Vault-ondersteuning maken
In deze sectie wordt beschreven hoe u een geheim bereik met Azure Key Vault-ondersteuning maakt met behulp van Azure Portal en de gebruikersinterface van de Azure Databricks-werkruimte. U kunt ook een geheim bereik met Azure Key Vault-ondersteuning maken met behulp van de Databricks CLI.
Vereisten
- U moet een Azure Key Vault-exemplaar hebben. Als u geen sleutelkluisexemplaren hebt, volgt u de instructies in Een sleutelkluis maken met behulp van Azure Portal.
- U moet de rol Key Vault-inzender, Inzender of Eigenaar hebben op het Azure Key Vault-exemplaar dat u wilt gebruiken om het geheime bereik te herstellen.
Notitie
Voor het maken van een geheim bereik met Azure Key Vault-ondersteuning is de rol Inzender of Eigenaar van het Azure Key Vault-exemplaar vereist, zelfs als de Azure Databricks-service eerder toegang heeft gekregen tot de sleutelkluis.
Als de sleutelkluis zich in een andere tenant bevindt dan de Azure Databricks-werkruimte, moet de Azure AD-gebruiker die het geheime bereik maakt, gemachtigd zijn om service-principals te maken in de tenant van de sleutelkluis. Anders treedt de volgende fout op:
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"}}
Uw Azure Key Vault-exemplaar configureren voor Azure Databricks
Meld u aan bij Azure Portal, zoek en select het Azure Key Vault-exemplaar.
Klik onder Instellingen op het tabblad Configuratie van Access.
Set machtigingsmodel voor kluistoegangsbeleid.
Notitie
Als u een door Azure Key Vault ondersteunde geheime bereikrol maakt, worden de Get en List machtigingen verleend aan de toepassings-id voor de Azure Databricks-service met behulp van toegangsbeleid voor key vault. Het machtigingsmodel voor op rollen gebaseerd toegangsbeheer van Azure wordt niet ondersteund met Azure Databricks.
Onder InstellingenselectNetwerken.
In Firewalls en virtuele netwerkensettoegang toestaan vanuit: tot openbare toegang toestaan vanuit specifieke virtuele netwerken en IP-adressen.
Schakel onder Uitzondering het selectievakje Vertrouwde Microsoft-services toestaan om deze firewall te omzeilen.
Notitie
U kunt ook settoegang toestaan vanaf: tot voor openbare toegang vanaf alle netwerken.
Een geheim bereik voor Azure Key Vault-back-ups maken (Engelstalig)
Ga naar
https://<databricks-instance>#secrets/createScope
. Vervang door<databricks-instance>
de werkruimte-URL van uw Azure Databricks-implementatie. Deze URL is hoofdlettergevoelig. In dat geval moet u bijvoorbeeldscope
createScope
een hoofdletterS
gebruiken).Voer de naam van het geheime bereik in. Namen van geheime bereiken zijn niet hoofdlettergevoelig.
In Beheer PrincipalselectCreator of Alle werkruimtegebruikers om aan te geven welke gebruikers de machtiging BEHEREN hebben voor het geheime bereik.
Met de machtiging BEHEREN kunnen gebruikers machtigingen voor het bereik lezen, schrijven en grant. Uw account moet het Premium-abonnement hebben om Creator te kiezen.
Voer de DNS-naam (bijvoorbeeld
https://databrickskv.vault.azure.net/
) en de resource-id in, bijvoorbeeld:/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcegroups/databricks-rg/providers/Microsoft.KeyVault/vaults/databricksKV
Deze eigenschappen zijn beschikbaar op het tabblad Instellingeneigenschappen > van een Azure Key Vault in Azure Portal.
Klik op Create.
Gebruik de Opdracht Databricks CLI
databricks secrets list-scopes
om te controleren of het bereik is gemaakt.
Een geheim bereik met Databricks-ondersteuning maken
In deze sectie wordt beschreven hoe u een geheim bereik maakt met behulp van de Databricks CLI? (versie 0.205 en hoger). U kunt ook de Geheimen-API gebruiken.
Namen van geheime bereiken:
- Moet uniek zijn binnen een werkruimte.
- Moet bestaan uit alfanumerieke tekens, streepjes, onderstrepingstekens
@
en punten en mag niet langer zijn dan 128 tekens. - Zijn niet hoofdlettergevoelig.
Namen van geheime bereiken worden beschouwd als niet-gevoelig en kunnen worden gelezen door alle gebruikers in de werkruimte.
Een bereik maken met behulp van de Databricks CLI:
databricks secrets create-scope <scope-name>
Standaard worden bereiken gemaakt met de machtiging BEHEREN voor de gebruiker die het bereik heeft gemaakt. Nadat u een geheim bereik met Databricks-ondersteuning hebt gemaakt, kunt u er geheimen aan toevoegen.
List geheime bereiken
Als u de bestaande bereiken in een werkruimte wilt list met behulp van de CLI:
databricks secrets list-scopes
U kunt ook geheime scopes list met de Secrets APIgebruiken.
Een geheim bereik verwijderen
Als u een geheim bereik verwijdert, worden alle geheimen en ACL's verwijderd die op het bereik zijn toegepast. Als u een bereik wilt verwijderen met behulp van de CLI, voert u het volgende uit:
databricks secrets delete-scope <scope-name>
U kunt ook een geheim bereik verwijderen met behulp van de Geheimen-API.
Geheimen beheren
Een geheim is een sleutel-waardepaar waarin gevoelig materiaal wordt opgeslagen met behulp van een sleutelnaam die uniek is binnen een geheim bereik.
In deze sectie wordt beschreven hoe u een geheim bereik maakt met behulp van de Databricks CLI? (versie 0.205 en hoger). U kunt ook de Geheimen-API gebruiken. Namen van geheimen zijn niet hoofdlettergevoelig.
Een geheim maken
De methode voor het maken van een geheim is afhankelijk van of u een bereik met Azure Key Vault-ondersteuning of een door Databricks ondersteund bereik gebruikt.
Een geheim maken in een bereik met azure Key Vault-ondersteuning
Als u een geheim wilt maken in Azure Key Vault, gebruikt u Azure Portal of Azure Set Secret REST API. Zie stap 4 voor een voorbeeld: Het clientgeheim toevoegen aan Azure Key Vault.
Een geheim maken in een door Databricks ondersteund bereik
In deze sectie wordt beschreven hoe u een geheim maakt met behulp van de Wat is de Databricks CLI? (versie 0.205 en hoger) of in een notebook met behulp van de Databricks SDK voor Python. U kunt ook de Geheimen-API gebruiken. Namen van geheimen zijn niet hoofdlettergevoelig.
Databricks CLI
Wanneer u een geheim maakt in een bereik met databricks-ondersteuning, kunt u de geheime waarde op drie manieren opgeven:
- Geef de waarde op als een tekenreeks met behulp van de vlag –tekenreekswaarde.
- Voer het geheim in wanneer u hierom interactief wordt gevraagd (geheimen met één regel).
- Geef het geheim door met behulp van standaardinvoer (geheimen met meerdere regels).
Voorbeeld:
databricks secrets put-secret --json '{
"scope": "<scope-name>",
"key": "<key-name>",
"string_value": "<secret>"
}'
Als u een geheim met meerdere regels maakt, kunt u het geheim doorgeven met behulp van standaardinvoer. Voorbeeld:
(cat << EOF
this
is
a
multi
line
secret
EOF
) | databricks secrets put-secret <scope-name> <key-name>
Databricks SDK voor Python
from databricks.sdk import WorkspaceClient
w = WorkspaceClient()
w.secrets.put_secret("<secret_scope>","<key-name>",string_value ="<secret>")
een geheim lezen
Als u een geheim wilt lezen in een notebook of taak, moet u het -hulpprogramma Geheimen (dbutils.secrets)gebruiken. Voorbeeld:
password = dbutils.secrets.get(scope = "<scope-name>", key = "<key-name>")
List geheimen
Geheimen in een bepaald bereik list:
databricks secrets list-secrets <scope-name>
In het antwoord worden metagegevensinformatie over de geheimen weergegeven, zoals de sleutelnamen van de geheimen. U gebruikt het hulpprogramma Geheimen (dbutils.secrets) in een notebook of taak om deze metagegevens te list. Voorbeeld:
dbutils.secrets.list('my-scope')
Een geheim verwijderen
Een geheim verwijderen uit een bereik met de Databricks CLI:
databricks secrets delete-secret <scope-name> <key-name>
U kunt ook de Geheimen-API gebruiken.
Als u een geheim wilt verwijderen uit een bereik dat wordt ondersteund door Azure Key Vault, gebruikt u de Azure SetSecret REST API of de gebruikersinterface van Azure Portal.
Machtigingen voor geheimbereik beheren
De gebruiker die de geheime bereiken maakt, krijgt standaard de machtiging MANAGE. Hierdoor kan de maker van het bereik geheimen lezen in het bereik, geheimen naar het bereik schrijven en machtigingen voor het bereik beheren.
Notitie
Geheime ACL's bevinden zich op bereikniveau. Als u met Azure Key Vault ondersteunde bereiken gebruikt, hebben gebruikers die toegang krijgen tot het bereik toegang tot alle geheimen in Azure Key Vault. Gebruik afzonderlijke Azure Key Vault-exemplaren om de toegang te beperken.
In deze sectie wordt beschreven hoe u toegangsbeheer voor geheimen beheert met behulp van de Databricks CLI? (versie 0.205 en hoger). U kunt ook de Geheimen-API gebruiken. Zie Geheime ACL's voor geheime machtigingsniveaus
Grant gebruikersmachtigingen voor een geheim bereik
Gebruikersmachtigingen instellen op een geheimbereik grant met behulp van de Databricks CLI:
databricks secrets put-acl <scope-name> <principal> <permission>
Als u een aanvraag indient voor een principal die al een toegepaste machtiging heeft, wordt het bestaande machtigingsniveau overschreven.
In principal
het veld wordt een bestaande Azure Databricks-principal opgegeven. Een gebruiker wordt opgegeven met behulp van het e-mailadres, een service-principal met de applicationId
waarde en een groep met de groepsnaam. Zie Principal voor meer informatie.
Machtigingen voor geheimbereik weergeven
Alle geheime bereikmachtigingen voor een bepaald geheim bereik weergeven:
databricks secrets list-acls <scope-name>
Als u de geheime bereikmachtigingen wilt get die zijn toegepast op een principal voor een bepaald geheim bereik:
databricks secrets get-acl <scope-name> <principal>
Als er geen ACL bestaat voor de opgegeven principal en het opgegeven bereik, mislukt deze aanvraag.
Een machtiging voor een geheim bereik verwijderen
Een geheime bereikmachtiging verwijderen die is toegepast op een principal voor een bepaald geheim bereik:
databricks secrets delete-acl <scope-name> <principal>
Geheime redaction
Door credentials op te slaan als Azure Databricks-geheimen, kunt u uw credentials eenvoudig beveiligen wanneer u notebooks en taken uitvoert. Het is echter eenvoudig om per ongeluk een geheim af te drukken op standaarduitvoerbuffers of om de waarde weer te geven tijdens het toewijzen van variabelen.
Om dit te voorkomen, redigeert Azure Databricks alle geheime values die met behulp van dbutils.secrets.get()
worden gelezen. Wanneer ze worden weergegeven in de uitvoer van een notebookcel, worden de geheime values vervangen door [REDACTED]
.
Als u bijvoorbeeld een variabele set instelt op een geheime waarde met behulp van dbutils.secrets.get()
en vervolgens deze variabele print, wordt die variabele vervangen door [REDACTED]
.
Waarschuwing
Geheime redaction voor uitvoer van notebookcellen is alleen van toepassing op letterlijke gegevens. De functionaliteit voor geheimredactie voorkomt geen opzettelijke en willekeurige transformaties van een letterlijk geheim. Als u de juiste controle over geheimen wilt garanderen, moet u toegangsbeheerlijsten gebruiken om machtigingen te limit om opdrachten uit te voeren. Dit voorkomt onbevoegde toegang tot gedeelde notitieblokcontexten.