Dela via


Hemligheter

En hemlighet är ett nyckel/värde-par som lagrar hemligt material, med ett nyckelnamn som är unikt inom ett hemligt omfång. Varje omfång är begränsat till 1 000 hemligheter. Den maximala tillåtna hemliga värdestorleken är 128 KB. Information om hur du kommer åt hemligheter med Databricks Utilities finns i Verktyget Hemligheter (dbutils.secrets).

Se även API:et Hemligheter.

Skapa en hemlighet

Hemlighetsnamn är skiftlägesokänsliga.

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 för Azure Set Secret eller Azure Portal användargränssnittet.

Azure Key Vault

Skapa en hemlighet i ett Databricks-säkerhetskopierat omfång

Så här skapar du en hemlighet i ett Databricks-säkerhetskopierat omfång med Databricks CLI (version 0.205 och senare):

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>

Du kan också ange en hemlighet från en fil. Mer information om hur du skriver hemligheter finns i Vad är Databricks CLI?.

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.

Använda en hemlighet i en Spark-konfigurationsegenskap eller miljövariabel

Viktigt!

Den här funktionen finns som allmänt tillgänglig förhandsversion.

Kommentar

Tillgänglig i Databricks Runtime 6.4 Utökad support och senare.

Du kan referera till en hemlighet i en Spark-konfigurationsegenskap eller miljövariabel. Hämtade hemligheter redigeras från notebook-utdata och Spark-drivrutins- och körloggar.

Viktigt!

Tänk på följande säkerhetsaspekter när du refererar till hemligheter i en Spark-konfigurationsegenskap eller miljövariabel:

  • Om tabellåtkomstkontroll inte är aktiverad i ett kluster kan alla användare med behörigheter som kan koppla till i ett kluster eller Körningsbehörigheter i en notebook-fil läsa Spark-konfigurationsegenskaper från notebook-filen. Detta omfattar användare som inte har direkt behörighet att läsa en hemlighet. Databricks rekommenderar att du aktiverar åtkomstkontroll för tabeller i alla kluster eller hanterar åtkomst till hemligheter med hjälp av hemliga omfång.

  • Även när åtkomstkontroll för tabeller är aktiverad kan användare med behörigheter som kan koppla till i ett kluster eller Körningsbehörigheter i en notebook-fil läsa klustermiljövariabler inifrån notebook-filen. Databricks rekommenderar inte lagring av hemligheter i klustermiljövariabler om de inte får vara tillgängliga för alla användare i klustret.

  • Hemligheter redigeras inte från Spark-drivrutinsloggen stdout och stderr strömmarna. För att skydda känsliga data kan Spark-drivrutinsloggar som standard endast visas av användare med CAN MANAGE-behörighet för jobb, åtkomstläge för en användare och kluster för delat åtkomstläge. Om du vill tillåta användare med behörigheten CAN ATTACH TO eller CAN RESTART att visa loggarna i dessa kluster anger du följande Spark-konfigurationsegenskap i klusterkonfigurationen: spark.databricks.acl.needAdminPermissionToViewLogs false.

    På kluster för delat åtkomstläge utan isolering kan Spark-drivrutinsloggarna visas av användare med behörigheten KAN KOPPLA TILL eller KAN HANTERA. Om du vill begränsa vem som kan läsa loggarna till endast användare med behörigheten CAN MANAGE anger du spark.databricks.acl.needAdminPermissionToViewLogs till true.

Krav och begränsningar

Följande krav och begränsningar gäller för att referera till hemligheter i Spark-konfigurationsegenskaper och miljövariabler:

  • Klusterägare måste ha behörigheten KAN LÄSA i det hemliga omfånget.
  • Endast klusterägare kan lägga till en referens till en hemlighet i en Spark-konfigurationsegenskap eller miljövariabel och redigera det befintliga omfånget och namnet. Ägare ändrar en hemlighet med hjälp av API:et Hemligheter. Du måste starta om klustret för att hämta hemligheten igen.
  • Användare med behörigheten CAN MANAGE i klustret kan ta bort en hemlig Spark-konfigurationsegenskap eller miljövariabel.

Syntax för att referera till hemligheter i en Spark-konfigurationsegenskap eller miljövariabel

Du kan referera till en hemlighet med valfritt giltigt variabelnamn eller spark-konfigurationsegenskap. Azure Databricks möjliggör särskilt beteende för variabler som refererar till hemligheter baserat på syntaxen för värdet som anges, inte variabelnamnet.

Syntaxen för spark-konfigurationsegenskapen eller miljövariabelvärdet måste vara {{secrets/<scope-name>/<secret-name>}}. Värdet måste börja med {{secrets/ och sluta med }}.

Variabeldelarna i Spark-konfigurationsegenskapen eller miljövariabeln är:

  • <scope-name>: Namnet på omfånget där hemligheten är associerad.
  • <secret-name>: Det unika namnet på hemligheten i omfånget.

Exempel: {{secrets/scope1/key1}}

Kommentar

  • Det får inte finnas några blanksteg mellan klammerparenteserna. Om det finns blanksteg behandlas de som en del av omfånget eller det hemliga namnet.

Referera till en hemlighet med en Spark-konfigurationsegenskap

Du anger en referens till en hemlighet i en Spark-konfigurationsegenskap i följande format:

spark.<property-name> {{secrets/<scope-name>/<secret-name>}}

Alla Spark-konfigurationer <property-name> kan referera till en hemlighet. Varje Spark-konfigurationsegenskap kan bara referera till en hemlighet, men du kan konfigurera flera Spark-egenskaper för att referera till hemligheter.

Till exempel:

Du anger en Spark-konfiguration för att referera till en hemlighet:

spark.password {{secrets/scope1/key1}}

Så här hämtar du hemligheten i anteckningsboken och använder den:

Python

spark.conf.get("spark.password")

SQL

SELECT ${spark.password};

Referera till en hemlighet i en miljövariabel

Du anger en hemlig sökväg i en miljövariabel i följande format:

<variable-name>={{secrets/<scope-name>/<secret-name>}}

Du kan använda valfritt giltigt variabelnamn när du refererar till en hemlighet. Åtkomst till hemligheter som refereras i miljövariabler bestäms av behörigheterna för den användare som konfigurerade klustret. Hemligheter som lagras i miljövariabler är tillgängliga för alla användare av klustret, men redigeras från klartextvisning som hemligheter som refereras någon annanstans.

Miljövariabler som refererar till hemligheter är tillgängliga från ett init-skript med klusteromfattning. Se Ange och använda miljövariabler med init-skript.

Till exempel:

Du anger en miljövariabel som referens till en hemlighet:

SPARKPASSWORD={{secrets/scope1/key1}}

Om du vill hämta hemligheten i ett init-skript får du åtkomst $SPARKPASSWORD med hjälp av följande mönster:

if [ -n "$SPARKPASSWORD" ]; then
  # code to use ${SPARKPASSWORD}
fi

Hantera behörigheter för hemligheter

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 Secrets API eller Databricks Terraform-providern. Information om behörighetsnivåer för hemligheter finns i Hemliga ACL:er

Skapa en hemlig ACL

Skapa en hemlig ACL för ett visst hemligt omfång med databricks CLI (äldre)

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 hemliga ACL:er

Så här visar du alla hemliga ACL:er för ett visst hemligt omfång:

databricks secrets list-acls <scope-name>

Så här hämtar du den hemliga ACL:en 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 hemlig ACL

Så här tar du bort en hemlig ACL som tillämpas på ett huvudnamn för ett visst hemligt omfång:

databricks secrets delete-acl <scope-name> <principal>