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.

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 AZURE Set Secret REST API eller Azure Portal UI.

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 Användargränssnittet för Azure-portalen.

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 behörigheten Kan hantera 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 Kan koppla till eller Kan starta om för 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 Kan hantera 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 Kan hantera 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.

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.

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