Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Bij het openen van externe gegevensbronnen via JDBC is verificatie vaak vereist. In plaats van referenties rechtstreeks in notebooks in te voeren, kunt u veilig referenties opslaan met behulp van Databricks-geheimen en ernaar verwijzen in uw notebooks en taken. Deze aanpak verbetert de beveiliging en vereenvoudigt het beheer van referenties. Deze pagina biedt een overzicht van Databricks-geheimen.
Opmerking
Databricks raadt het gebruik van Unity Catalog aan om de toegang tot gegevens in cloudopslag te configureren. Zie Verbinding maken met cloudobjectopslag met behulp van Unity Catalog.
Geheimenoverzicht
Om geheimen te configureren en te gebruiken, moet u:
- Maak een geheime scope. Een geheime reikwijdte is een verzameling van geheimen die door een naam worden geïdentificeerd.
- Voeg geheimen toe aan de scope
- Ken rechten toe aan het geheime bereik.
- Verwijs naar geheimen in uw code.
Voor een end-to-end voorbeeld van hoe u geheimen in uw workflows kunt gebruiken, zie Tutorial: Create and use a Databricks secret. Om een geheim te gebruiken in een Spark-configuratie-eigenschap of omgevingsvariabele, zie Een geheim gebruiken in een Spark-configuratie-eigenschap of omgevingsvariabele.
Waarschuwing
Werkruimtebeheerders, makers van geheimen en gebruikers die zijn gemachtigd, hebben toegang tot Databricks-geheimen en kunnen deze lezen. Hoewel Databricks probeert geheime waarden op te slaan in notebookuitvoer, is het niet mogelijk om volledig te voorkomen dat deze gebruikers geheime inhoud bekijken. Wijs altijd geheime toegangsmachtigingen zorgvuldig toe om gevoelige informatie te beveiligen.
Geheime scopes beheren
Een geheime reikwijdte is een verzameling van geheimen die door een naam worden geïdentificeerd. Databricks beveelt aan om geheime scopes af te stemmen op rollen of applicaties in plaats van op individuen.
Er zijn twee typen geheime reikwijdte:
- 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 door Azure Key Vault ondersteunde geheime bereik in Azure.
- Databricks-ondersteund: Een Databricks-ondersteunde geheime scope wordt opgeslagen in een versleutelde database die eigendom is van en beheerd wordt door Azure Databricks.
Nadat u een geheim domein hebt gemaakt, kunt u machtigingen toewijzen om gebruikers toegang te verlenen tot het lezen, schrijven en beheren van geheime domeinen.
Een geheim bereik met Azure Key Vault-ondersteuning maken
Deze sectie beschrijft hoe je een geheimenset creëert met ondersteuning van Azure Key Vault, door gebruik te maken van het Azure-portaal en de Azure Databricks-werkruimte UI. Je kunt ook een door Azure Key Vault ondersteund geheim domein maken met behulp van de Databricks CLI.
Behoeften
- U moet een Azure Key Vault-exemplaar hebben. Als u geen Key Vault-instantie heeft, volg dan de instructies in Een Key Vault maken met behulp van het Azure-portaal.
- U moet de rol Key Vault-bijdrager, Bijdrager of Eigenaar hebben voor het Azure Key Vault-exemplaar dat u wilt gebruiken om het geheime bereik te ondersteunen.
Opmerking
Voor het maken van een geheime scope die door Azure Key Vault wordt gesteund, is de rol Bijdrager of Eigenaar van de Azure Key Vault-instance 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 de geheime scope 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"}}
Configureer uw Azure Key Vault-instantie voor Azure Databricks
Meld u aan bij Azure Portal, zoek en selecteer het Azure Key Vault-exemplaar.
Onder Instellingen klikt u op het tabblad Toegangsconfiguratie.
Stel Toestemmingsmodel in op kluis toegangsbeleid.
Opmerking
Het maken van een door Azure Key Vault ondersteunde geheime rol verleent de Get en List machtigingen aan de applicatie-id voor de Azure Databricks-service, gebruikmakend van key vault-toegangsbeleid. Het rolgebaseerde toegangscontrole machtigingsmodel van Azure wordt niet ondersteund in combinatie met Azure Databricks.
Onder Instellingen, selecteer Netwerken.
In Firewalls en virtuele netwerken stel Toegang toestaan vanaf: in op Openbare toegang toestaan vanaf specifieke virtuele netwerken en IP-adressen.
Onder Uitzondering, vink Sta betrouwbare Microsoft-diensten toe deze firewall te omzeilen aan.
Opmerking
U kunt ook Toegang toestaan vanaf: instellen naar Openbare toegang toestaan vanuit alle netwerken.
Maak een door Azure Key Vault ondersteunde geheimenomvang aan
Ga naar
https://<databricks-instance>#secrets/createScope
. Vervang<databricks-instance>
door de werkruimte-URL van jouw Azure Databricks-implementatie. Deze URL is hoofdlettergevoelig. Bijvoorbeeld,scope
increateScope
moet een hoofdletterS
gebruiken.Voer de naam van de geheime scope in. Namen van geheime scopes zijn hoofdletterongevoelig.
Selecteer in Beheer hoofdgebruikerCreator of Alle werkruimtegebruikers om op te geven welke gebruikers de machtiging BEHEREN hebben voor de geheime scope.
Met de BEHEREN-machtiging kunnen gebruikers machtigingen binnen het gegeven bereik lezen, schrijven en verlenen. Uw account moet het Premium-abonnement hebben om Maker te kunnen kiezen.
Voer de DNS naam in (bijvoorbeeld,
https://databrickskv.vault.azure.net/
) en Resource-ID, bijvoorbeeld:/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcegroups/databricks-rg/providers/Microsoft.KeyVault/vaults/databricksKV
Deze eigenschappen zijn beschikbaar op het tabblad Instellingen > Eigenschappen van een Azure Key Vault in uw Azure-portaal.
Klik op Create.
Gebruik het Databricks CLI-commando
databricks secrets list-scopes
om te verifiëren of de scope succesvol is aangemaakt.
Maak een door Databricks ondersteunde geheime scope
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 Secrets API gebruiken.
Namen van geheime bereiken:
- Moet uniek zijn binnen een werkruimte.
- Moet bestaan uit alfanumerieke tekens, streepjes, lage streepjes,
@
en punten, en mag niet meer dan 128 tekens bevatten. - Zijn hoofdletterongevoelig.
Geheime domeinnamen worden beschouwd als niet-gevoelig en zijn leesbaar door alle gebruikers in de werkruimte.
Om een scope te maken met behulp van de Databricks CLI:
databricks secrets create-scope <scope-name>
Standaard worden scopes aangemaakt met de BEHEER machtiging voor de gebruiker die de scope heeft aangemaakt. Nadat u een door Databricks ondersteunde geheime scope heeft gecreëerd, kunt u er geheimen aan toevoegen.
Geheime bereiken weergeven
Om de bestaande scopes in een werkruimte met behulp van de CLI weer te geven:
databricks secrets list-scopes
U kunt ook geheime scopes weergeven met de Secrets-API.
Verwijder een geheime scope
Het verwijderen van een geheime scope verwijdert alle geheimen en ACL's die op de scope 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.
Beheer geheimen
Een geheim is een sleutel-waarde paar dat gevoelige informatie opslaat met behulp van een sleutelnaam die uniek is binnen een geheime scope.
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 Secrets API gebruiken. Geheime namen zijn niet hoofdlettergevoelig.
Een geheim maken
De methode voor het creëren van een geheim hangt af van of je een Azure Key Vault-ondersteunde scope of een Databricks-ondersteunde scope gebruikt.
Maak een geheim aan in een Azure Key Vault-ondersteunde scope
Als u een geheim wilt maken in Azure Key Vault, gebruikt u Azure Portal of Azure Geheim instellen REST API. Voor een voorbeeld, zie Stap 4: Voeg de clientgeheim toe aan de Azure Key Vault.
Maak een geheim aan in een door Databricks ondersteunde scope
In deze sectie wordt beschreven hoe u een geheim maakt met behulp van de Databricks CLI (versie 0.205 en hoger) of in een notebook met behulp van de Databricks SDK voor Python. U kunt ook de Secrets API gebruiken. Geheime namen zijn niet hoofdlettergevoelig.
Databricks-CLI
Wanneer je een geheim aanmaakt in een door Databricks ondersteunde scope, kun je de geheime waarde op een van drie manieren specificeren:
- Geef de waarde op als een tekenreeks met behulp van de optie –string-value.
- Voer het geheim in wanneer u hierom interactief wordt gevraagd (geheimen met één regel).
- Geef het geheim door via standaardinvoer (geheimen op 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 via 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>")
Lees een geheim
Dit gedeelte beschrijft hoe je een geheim kunt lezen met de Databricks CLI (versie 0.205 en hoger) of in een notitieblok met behulp van de Secrets-utility (dbutils.secrets).
Databricks-CLI
Om de waarde van een geheim te lezen met behulp van de Databricks CLI, moet je de base64-gecodeerde waarde decoderen. Je kunt jq
gebruiken om de waarde te extraheren en base --decode
om deze te decoderen.
databricks secrets get-secret <scope-name> <key-name> | jq -r .value | base64 --decode
Secrets-hulpprogramma (dbutils.secrets)
password = dbutils.secrets.get(scope = "<scope-name>", key = "<key-name>")
Geheimen opstellen
Om geheimen in een bepaalde scope op te sommen:
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 weer te geven. Voorbeeld:
dbutils.secrets.list('my-scope')
Een geheim verwijderen
Om een geheim uit een scope te verwijderen met de Databricks CLI:
databricks secrets delete-secret <scope-name> <key-name>
U kunt ook de Secrets API gebruiken.
Verwijder een geheim uit een scope die wordt ondersteund door Azure Key Vault door de Azure SetSecret REST API of de Azure portal gebruikersinterface te gebruiken.
Beheer geheimen scope permissies
Standaard krijgt de gebruiker die de geheimescopes maakt de beheersrechten toegekend. Dit stelt de maker van het bereik in staat om geheimen in het bereik te lezen, geheimen naar het bereik te schrijven en toestemmingen op het bereik te beheren.
Opmerking
Geheime ACL's bevinden zich op het scopenniveau. Als je Azure Key Vault-ondersteunde domeinen gebruikt, hebben gebruikers die toegang tot het domein krijgen, toegang tot alle geheimen in de Azure Key Vault. Om toegang te beperken, gebruik aparte Azure-sleutelhangerinstances.
In deze sectie wordt beschreven hoe u toegang tot geheimen beheert met behulp van de Databricks CLI (versie 0.205 en hoger). U kunt ook de Secrets API gebruiken. Zie Geheime ACL's voor geheime machtigingsniveaus
Verleen een gebruiker rechten op een geheime scope
Een gebruiker machtigingen verlenen voor een geheim bereik met behulp van de Databricks CLI:
databricks secrets put-acl <scope-name> <principal> <permission>
Een PUT-verzoek voor een hoofdgebruiker die al een toegepaste toestemming heeft, overschrijft het bestaande toestemmingsniveau.
In principal
het veld wordt een bestaande Azure Databricks-principal opgegeven. Een gebruiker wordt opgegeven door het e-mailadres, een service-principal door de applicationId
waarde, en een groep door de groepsnaam. Zie Principal voor meer informatie.
Machtigingen voor geheimbereik weergeven
Om alle geheime scope-machtigingen voor een bepaalde geheime scope te bekijken:
databricks secrets list-acls <scope-name>
Om de permissies voor een geheime scope die zijn toegepast op een principal voor een gegeven geheime scope te verkrijgen:
databricks secrets get-acl <scope-name> <principal>
Als er geen ACL bestaat voor de gegeven principal en scope, mislukt dit verzoek.
Verwijder een geheime scope-machtiging
Om een geheime scope-recht te verwijderen dat is toegepast op een voor een bepaalde geheime scope:
databricks secrets delete-acl <scope-name> <principal>
Geheime redactie
Door aanmeldgegevens op te slaan als Azure Databricks-geheimen, kunt u uw gegevens eenvoudig beveiligen tijdens het uitvoeren van notebooks en taken. Echter, het is gemakkelijk om per ongeluk een geheim naar standaard uitvoerbuffers te printen of de waarde weer te geven tijdens het toewijzen van variabelen.
Om dit te voorkomen, verbergt Azure Databricks alle geheime waarden die worden gelezen via dbutils.secrets.get()
en waarnaar wordt verwezen in een Spark-configuratie-instelling. Wanneer deze worden weergegeven, worden de geheime waarden vervangen door [REDACTED]
.
Als u bijvoorbeeld een variabele instelt op een geheime waarde met behulp van dbutils.secrets.get()
en die variabele vervolgens afdrukt, wordt die variabele vervangen door [REDACTED]
.
Waarschuwing
Redaction is alleen van toepassing op letterlijke geheime waarden. De geheimhoudingsfunctionaliteit voorkomt geen opzettelijke en willekeurige transformaties van een geheime letterlijke waarde. Als u de juiste controle over geheimen wilt garanderen, moet u toegangsbeheerlijsten gebruiken om machtigingen voor het uitvoeren van opdrachten te beperken. Dit voorkomt ongeautoriseerde toegang tot gedeelde notitieboekcontexten.
Geheime redaction in SQL
Azure Databricks probeert alle SQL DQL-opdrachten (Data Query Language) te redacteren die de geheime functie aanroepen, inclusief weergaven waarnaar wordt verwezen en door de gebruiker gedefinieerde functies. Wanneer de secret
functie wordt gebruikt, wordt de uitvoer waar mogelijk vervangen door [REDACTED]
. Net als bij het redigeren van notebooks is dit alleen van toepassing op letterlijke waarden, niet op getransformeerde of indirect verwezen gegevens.
Voor SQL DML-opdrachten (Data Manipulation Language) staat Azure Databricks geheime zoekacties toe als het geheim als veilig wordt beschouwd, bijvoorbeeld wanneer het is verpakt in een cryptografische functie zoals sha()
of aes_encrypt()
, waardoor onbewerkte waarden niet-versleuteld worden opgeslagen.
Geheime validatie in SQL
Azure Databricks past ook validatie toe om SQL DML-opdrachten te blokkeren die ertoe kunnen leiden dat niet-versleutelde geheimen worden opgeslagen in tabellen. De query analyzer probeert deze scenario's te identificeren en te voorkomen, waardoor onbedoelde opslag van gevoelige informatie in tekst zonder opmaak wordt voorkomen.