Hemlighetshantering
Ibland måste du autentisera till externa datakällor via JDBC för att få åtkomst till data. I stället för att ange dina autentiseringsuppgifter direkt i en notebook-fil kan du använda Azure Databricks-hemligheter för att lagra dina autentiseringsuppgifter och referera till dem i notebook-filer och jobb. Den här artikeln innehåller en översikt över Azure Databricks-hemligheter.
Översikt över hemligheter
Så här konfigurerar och använder du hemligheter:
- Skapa en omfattning för en hemlighet. Ett hemligt omfång är en samling hemligheter som identifieras med ett namn.
- Lägg till hemligheter i omfattningen
- Tilldela behörigheter för det hemliga omfånget.
- Åtkomst till hemligheter med Databricks Utilities finns i Verktyget Hemligheter (dbutils.secrets).
Ett exempel från slutpunkt till slutpunkt på hur du använder hemligheter i dina arbetsflöden finns i Självstudie: Skapa och använda en Databricks-hemlighet. Information om hur du använder en hemlighet i en Spark-konfigurationsegenskap eller miljövariabel finns i Använda en hemlighet i en Spark-konfigurationsegenskap eller miljövariabel.
Varning
Administratörer, hemliga skapare och användare som beviljats behörighet kan läsa Azure Databricks-hemligheter. Databricks försöker redigera hemliga värden som kan visas i notebook-filer, men det går inte att hindra sådana användare från att läsa hemligheter. Se Hemlig redigering.
Hantera hemliga omfång
Ett hemligt omfång är en samling hemligheter som identifieras med ett namn. Databricks rekommenderar att du justerar hemliga omfång till roller eller program i stället för enskilda användare.
Det finns två typer av hemligt omfång:
- Azure Key Vault-säkerhetskopierat: Du kan referera till hemligheter som lagras i ett Azure Key Vault med hjälp av Azure Key Vault-säkerhetskopierade hemlighetsomfång. Azure Key Vault-säkerhetskopierat hemligt omfång är ett skrivskyddat gränssnitt till Key Vault. Du måste hantera hemligheter i Azure Key Vault-säkerhetskopierade hemlighetsomfång i Azure.
- Databricks-stödd: Ett Databricks-säkerhetskopierat hemligt omfång lagras i en krypterad databas som ägs och hanteras av Azure Databricks.
När du har skapat ett hemligt omfång kan du tilldela behörigheter för att ge användarna åtkomst till läs-, skriv- och hanteringsomfång.
Skapa ett Azure Key Vault-säkerhetskopierat hemlighetsomfång
I det här avsnittet beskrivs hur du skapar ett Azure Key Vault-säkerhetskopierat hemlighetsomfång med hjälp av Azure Portal och Azure Databricks-arbetsytans användargränssnitt. Du kan också skapa ett Azure Key Vault-säkerhetskopierat hemlighetsomfång med hjälp av Databricks CLI.
Krav
- Du måste ha en Azure Key Vault-instans. Om du inte har någon key vault-instans följer du anvisningarna i Skapa ett nyckelvalv med hjälp av Azure Portal.
- Du måste ha rollen Key Vault-deltagare, deltagare eller ägare på den Azure Key Vault-instans som du vill använda för att stödja det hemliga omfånget.
Kommentar
För att skapa ett Azure Key Vault-säkerhetskopierat hemligt omfång krävs rollen Deltagare eller Ägare på Azure Key Vault-instansen även om Azure Databricks-tjänsten tidigare har beviljats åtkomst till nyckelvalvet.
Om nyckelvalvet finns i en annan klientorganisation än Azure Databricks-arbetsytan måste Den Azure AD-användare som skapar det hemliga omfånget ha behörighet att skapa tjänstens huvudnamn i nyckelvalvets klientorganisation. Annars uppstår följande fel:
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"}}
Konfigurera din Azure Key Vault-instans för Azure Databricks
Logga in på Azure-portalen, leta upp och välj Azure Key Vault-instansen.
Under Inställningar klickar du på fliken Åtkomstkonfiguration .
Ange Behörighetsmodell till Åtkomstprincip för valv.
Kommentar
Om du skapar en Azure Key Vault-stödd hemlig omfångsroll ger du behörigheten Hämta och lista till program-ID:t för Azure Databricks-tjänsten med hjälp av åtkomstprinciper för nyckelvalv. Den rollbaserade behörighetsmodellen för Azure-åtkomstkontroll stöds inte med Azure Databricks.
Under Inställningar väljer du Nätverk.
I Brandväggar och virtuella nätverk anger du Tillåt åtkomst från: till Tillåt offentlig åtkomst från specifika virtuella nätverk och IP-adresser.
Under Undantag markerar du Tillåt betrodda Microsoft-tjänster att kringgå den här brandväggen.
Kommentar
Du kan också ange Tillåt åtkomst från: till Tillåt offentlig åtkomst från alla nätverk.
Skapa ett hemligt omfång som stöds av Azure Key Vault
Gå till
https://<databricks-instance>#secrets/createScope
. Ersätt<databricks-instance>
med arbetsytans URL för din Azure Databricks-distribution. Den här URL:en är skiftlägeskänslig. I måste till exempelscope
createScope
använda versalerS
).Ange namnet på det hemliga omfånget. Namn på omfattningar för hemligheter är skiftlägesokänsliga.
I Hantera huvudnamn väljer du Skapare eller Alla arbetsyteanvändare för att ange vilka användare som har behörigheten HANTERA i det hemliga omfånget.
Med behörigheten HANTERA kan användare läsa, skriva och bevilja behörigheter för omfånget. Ditt konto måste ha Premium-planen för att välja Skapare.
Ange DNS-namnet (till exempel
https://databrickskv.vault.azure.net/
) och resurs-ID:/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcegroups/databricks-rg/providers/Microsoft.KeyVault/vaults/databricksKV
De här egenskaperna är tillgängliga på fliken Egenskaper för inställningar > i ett Azure Key Vault i din Azure Portal.
Klicka på Skapa.
Använd Databricks CLI-kommandot
databricks secrets list-scopes
för att kontrollera att omfånget har skapats.
Skapa ett Databricks-säkerhetskopierat hemlighetsomfång
I det här avsnittet beskrivs hur du skapar ett hemligt omfång med hjälp av Vad är Databricks CLI? (version 0.205 och senare). Du kan också använda API:et Hemligheter.
Namn på hemligt omfång:
- Måste vara unikt i en arbetsyta.
- Måste bestå av alfanumeriska tecken, bindestreck, understreck,
@
och punkter och får inte överstiga 128 tecken. - Är skiftlägesokänsliga.
Hemliga omfångsnamn anses vara icke-känsliga och kan läsas av alla användare på arbetsytan.
Så här skapar du ett omfång med Databricks CLI:
databricks secrets create-scope <scope-name>
Som standard skapas omfång med HANTERA-behörighet för den användare som skapade omfånget. När du har skapat ett Databricks-säkerhetskopierat hemlighetsomfång kan du lägga till hemligheter i det.
Visa en lista över hemliga omfång
Så här listar du de befintliga omfången på en arbetsyta med hjälp av CLI:
databricks secrets list-scopes
Du kan också lista hemliga omfång med hjälp av API:et Hemligheter.
Ta bort en omfattning för en hemlighet
Om du tar bort ett hemligt omfång tas alla hemligheter och ACL:er som tillämpas på omfånget bort. Om du vill ta bort ett omfång med hjälp av CLI kör du följande:
databricks secrets delete-scope <scope-name>
Du kan också ta bort ett hemligt omfång med hjälp av API:et Hemligheter.
Hantera hemligheter
En hemlighet är ett nyckel/värde-par som lagrar känsligt material med ett nyckelnamn som är unikt inom ett hemligt omfång.
I det här avsnittet beskrivs hur du skapar ett hemligt omfång med hjälp av Vad är Databricks CLI? (version 0.205 och senare). Du kan också använda API:et Hemligheter. Hemlighetsnamn är skiftlägesokänsliga.
Skapa en hemlighet
Metoden för att skapa en hemlighet beror på om du använder ett Azure Key Vault-backat omfång eller ett Databricks-backat omfång.
Skapa en hemlighet i ett Azure Key Vault-säkerhetskopierat omfång
Om du vill skapa en hemlighet i Azure Key Vault använder du rest-API:et Azure Portal eller Azure Set Secret. Ett exempel finns i Steg 4: Lägg till klienthemligheten i Azure Key Vault.
Skapa en hemlighet i ett Databricks-säkerhetskopierat omfång
I det här avsnittet beskrivs hur du skapar hemligheter med hjälp av Vad är Databricks CLI? (version 0.205 och senare). Du kan också använda API:et Hemligheter. Hemlighetsnamn är skiftlägesokänsliga.
När du skapar en hemlighet i ett Databricks-stödt omfång kan du ange det hemliga värdet på något av tre sätt:
- Ange värdet som en sträng med flaggan -string-value.
- Ange hemligheten när du uppmanas att göra det interaktivt (enkelradshemligheter).
- Skicka hemligheten med standardindata (flerradshemligheter).
Till exempel:
databricks secrets put-secret --json '{
"scope": "<scope-name>",
"key": "<key-name>",
"string_value": "<secret>"
}'
Om du skapar en hemlighet med flera rader kan du skicka hemligheten med standardindata. Till exempel:
(cat << EOF
this
is
a
multi
line
secret
EOF
) | databricks secrets put-secret <secret_scope> <secret_key>
Visa en lista över hemligheter
Så här listar du hemligheter i ett visst omfång:
databricks secrets list-secrets <scope-name>
Svaret visar metadatainformation om hemligheterna, till exempel hemligheternas nyckelnamn. Du använder verktyget Hemligheter (dbutils.secrets) i en notebook-fil eller ett jobb för att lista dessa metadata. Till exempel:
dbutils.secrets.list('my-scope')
Läsa en hemlighet
Du skapar hemligheter med hjälp av REST API eller CLI, men du måste använda verktyget Hemligheter (dbutils.secrets) i en notebook-fil eller ett jobb för att läsa en hemlighet.
Ta bort en hemlighet
Så här tar du bort en hemlighet från ett omfång med Databricks CLI:
databricks secrets delete-secret <scope-name> <key-name>
Du kan också använda API:et Hemligheter.
Om du vill ta bort en hemlighet från ett omfång som backas upp av Azure Key Vault använder du REST-API:et för Azure SetSecret eller Azure Portal användargränssnittet.
Hantera behörigheter för hemligt omfång
Som standard beviljas den användare som skapar de hemliga omfången behörigheten HANTERA. Detta gör att omfångsskapare kan läsa hemligheter i omfånget, skriva hemligheter till omfånget och hantera behörigheter i omfånget.
Kommentar
Hemliga ACL:er finns på omfångsnivå. Om du använder Azure Key Vault-stödda omfång har användare som beviljas åtkomst till omfånget åtkomst till alla hemligheter i Azure Key Vault. Om du vill begränsa åtkomsten använder du separata Azure Key Vault-instanser.
I det här avsnittet beskrivs hur du hanterar hemlig åtkomstkontroll med hjälp av Vad är Databricks CLI? (version 0.205 och senare). Du kan också använda API:et Hemligheter. Information om behörighetsnivåer för hemligheter finns i Hemliga ACL:er
Bevilja en användare behörighet för ett hemligt omfång
Så här beviljar du en användare behörighet för ett hemligt omfång med hjälp av Databricks CLI:
databricks secrets put-acl <scope-name> <principal> <permission>
Om du gör en put-begäran för ett huvudnamn som redan har en tillämpad behörighet skrivs den befintliga behörighetsnivån över.
Fältet principal
anger ett befintligt Azure Databricks-huvudnamn. En användare anges med hjälp av sin e-postadress, ett huvudnamn för tjänsten med dess applicationId
värde och en grupp med dess gruppnamn. Mer information finns i Huvudnamn.
Visa behörigheter för hemligt omfång
Så här visar du alla behörigheter för hemligt omfång för ett visst hemligt omfång:
databricks secrets list-acls <scope-name>
Så här hämtar du behörigheter för hemligt omfång som tillämpas på ett huvudnamn för ett visst hemligt omfång:
databricks secrets get-acl <scope-name> <principal>
Om det inte finns någon ACL för det angivna huvudkontot och omfånget misslyckas den här begäran.
Ta bort en behörighet för hemligt omfång
Så här tar du bort en hemlig omfångsbehörighet som tillämpas på ett huvudnamn för ett visst hemligt omfång:
databricks secrets delete-acl <scope-name> <principal>
Hemlig redigering
Om du lagrar autentiseringsuppgifter som Azure Databricks-hemligheter är det enkelt att skydda dina autentiseringsuppgifter när du kör notebook-filer och jobb. Det är dock enkelt att av misstag skriva ut en hemlighet till standardutdatabuffertar eller visa värdet under variabeltilldelningen.
För att förhindra detta redigerar Azure Databricks alla hemliga värden som läse med .dbutils.secrets.get()
När de visas i notebook-cellutdata ersätts de hemliga värdena med [REDACTED]
.
Om du till exempel anger en variabel till ett hemligt värde med dbutils.secrets.get()
och sedan skriver ut variabeln ersätts variabeln med [REDACTED]
.
Varning
Hemlig redigering för notebook-cellutdata gäller endast för literaler. Funktionen för hemlig redigering förhindrar inte avsiktliga och godtyckliga omvandlingar av en hemlig literal. För att säkerställa rätt kontroll av hemligheter bör du använda åtkomstkontrollistor för att begränsa behörigheter för att köra kommandon. Detta förhindrar obehörig åtkomst till kontexter för delade notebook-filer.