Geheimen

Een geheim is een sleutel-waardepaar waarin geheim materiaal wordt opgeslagen, met een sleutelnaam die uniek is binnen een geheim bereik. Elk bereik is beperkt tot 1000 geheimen. De maximaal toegestane geheime waardegrootte is 128 kB.

Zie ook de Geheimen-API.

Een geheim maken

Namen van geheimen zijn niet hoofdlettergevoelig.

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 de AZURE Set Secret REST API of de gebruikersinterface van Azure Portal.

Azure Key Vault

Een geheim maken in een door Databricks ondersteund bereik

Een geheim maken in een door Databricks ondersteund bereik met behulp van de Databricks CLI (versie 0.205 en hoger):

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 <secret_scope> <secret_key>

U kunt ook een geheim uit een bestand opgeven. Zie Wat is de Databricks CLI? voor meer informatie over het schrijven van geheimen.

Geheimen vermelden

Geheimen in een bepaald bereik weergeven:

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 lezen

U maakt geheimen met behulp van de REST API of CLI, maar u moet het hulpprogramma Geheimen (dbutils.secrets) in een notebook of taak gebruiken om een geheim te lezen.

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.

Een geheim gebruiken in een Spark-configuratie-eigenschap of omgevingsvariabele

Belangrijk

Deze functie is beschikbaar als openbare preview.

Notitie

Beschikbaar in Databricks Runtime 6.4 Uitgebreide ondersteuning en hoger.

U kunt verwijzen naar een geheim in een Spark-configuratie-eigenschap of omgevingsvariabele. Opgehaalde geheimen worden redacted uit notebook-uitvoer en Spark-stuurprogramma en uitvoerlogboeken.

Belangrijk

Houd rekening met de volgende beveiligingsproblemen bij het verwijzen naar geheimen in een Spark-configuratie-eigenschap of omgevingsvariabele:

  • Als toegangsbeheer voor tabellen niet is ingeschakeld voor een cluster, kan elke gebruiker met Machtigingen koppelen aan een cluster of Machtigingen uitvoeren op een notebook Spark-configuratie-eigenschappen lezen vanuit het notebook. Dit geldt ook voor gebruikers die geen directe machtiging hebben om een geheim te lezen. Databricks raadt u aan om toegangsbeheer voor tabellen in te schakelen op alle clusters of om de toegang tot geheimen te beheren met behulp van geheime bereiken.

  • Zelfs wanneer toegangsbeheer voor tabellen is ingeschakeld, kunnen gebruikers met Machtigingen koppelen aan een cluster of Machtigingen uitvoeren op een notebook omgevingsvariabelen lezen vanuit het notebook. Databricks raadt niet aan geheimen op te slaan in omgevingsvariabelen voor clusters als ze niet beschikbaar mogen zijn voor alle gebruikers in het cluster.

  • Geheimen worden niet bewerkt vanuit het Spark-stuurprogrammalogboek stdout en stderr stromen. Als u gevoelige gegevens wilt beveiligen, kunnen spark-stuurprogrammalogboeken standaard alleen worden weergegeven door gebruikers met de machtiging CAN MANAGE voor de taak, de modus voor toegang van één gebruiker en clusters in de modus voor gedeelde toegang. Als u wilt dat gebruikers met de machtiging CAN ATTACH TO of CAN RESTART hebben om de logboeken op deze clusters weer te geven, stelt u de volgende Spark-configuratie-eigenschap in de clusterconfiguratie in: spark.databricks.acl.needAdminPermissionToViewLogs false

    In clusters in de modus Geen isolatie voor gedeelde toegang kunnen de Spark-stuurprogrammalogboeken worden weergegeven door gebruikers met de machtiging CAN ATTACH TO of CAN MANAGE. Als u wilt beperken wie de logboeken kan lezen voor alleen gebruikers met de machtiging CAN MANAGE, stelt u in spark.databricks.acl.needAdminPermissionToViewLogs op true.

Vereisten en beperkingen

De volgende vereisten en beperkingen gelden voor het verwijzen naar geheimen in spark-configuratie-eigenschappen en omgevingsvariabelen:

  • Clustereigenaren moeten de machtiging KAN LEZEN hebben voor het geheime bereik.
  • Alleen clustereigenaren kunnen een verwijzing toevoegen naar een geheim in een Spark-configuratie-eigenschap of -omgevingsvariabele en het bestaande bereik en de bestaande naam bewerken. Eigenaren wijzigen een geheim met behulp van de Geheimen-API. U moet het cluster opnieuw opstarten om het geheim opnieuw op te halen.
  • Gebruikers met de machtiging CAN MANAGE voor het cluster kunnen een geheime Spark-configuratie-eigenschap of omgevingsvariabele verwijderen.

Syntaxis voor het verwijzen naar geheimen in een Spark-configuratie-eigenschap of omgevingsvariabele

U kunt naar een geheim verwijzen met behulp van een geldige variabelenaam of Spark-configuratie-eigenschap. Azure Databricks maakt speciaal gedrag mogelijk voor variabelen die verwijzen naar geheimen op basis van de syntaxis van de waarde die wordt ingesteld, niet de naam van de variabele.

De syntaxis van de Spark-configuratie-eigenschap of de waarde van de omgevingsvariabele moet zijn {{secrets/<scope-name>/<secret-name>}}. De waarde moet beginnen met {{secrets/ en eindigen met }}.

De variabele gedeelten van de Spark-configuratie-eigenschap of omgevingsvariabele zijn:

  • <scope-name>: De naam van het bereik waarin het geheim is gekoppeld.
  • <secret-name>: De unieke naam van het geheim in het bereik.

Bijvoorbeeld: {{secrets/scope1/key1}}.

Notitie

  • Er mogen geen spaties tussen de accolades zijn. Als er spaties zijn, worden ze behandeld als onderdeel van de bereik- of geheime naam.

Verwijzen naar een geheim met een Spark-configuratie-eigenschap

U geeft een verwijzing naar een geheim op in een Spark-configuratie-eigenschap in de volgende indeling:

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

Elke Spark-configuratie <property-name> kan verwijzen naar een geheim. Elke Spark-configuratie-eigenschap kan slechts verwijzen naar één geheim, maar u kunt meerdere Spark-eigenschappen configureren om te verwijzen naar geheimen.

Voorbeeld:

U stelt een Spark-configuratie in om te verwijzen naar een geheim:

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

Als u het geheim in het notebook wilt ophalen en dit wilt gebruiken:

Python

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

SQL

SELECT ${spark.password};

Verwijzen naar een geheim in een omgevingsvariabele

U geeft een geheim pad op in een omgevingsvariabele in de volgende indeling:

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

U kunt elke geldige variabelenaam gebruiken wanneer u naar een geheim verwijst. Toegang tot geheimen waarnaar wordt verwezen in omgevingsvariabelen, wordt bepaald door de machtigingen van de gebruiker die het cluster heeft geconfigureerd. Geheimen die zijn opgeslagen in omgevingsvariabelen, zijn toegankelijk voor alle gebruikers van het cluster, maar worden op basis van tekst zonder opmaak weergegeven, zoals geheimen waarnaar elders wordt verwezen.

Omgevingsvariabelen die verwijzen naar geheimen zijn toegankelijk vanuit een init-script met clusterbereik. Zie Omgevingsvariabelen instellen en gebruiken met init-scripts.

Voorbeeld:

U stelt een omgevingsvariabele in om te verwijzen naar een geheim:

SPARKPASSWORD={{secrets/scope1/key1}}

Als u het geheim in een init-script wilt ophalen, gebruikt $SPARKPASSWORD u het volgende patroon:

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

Geheimenmachtigingen beheren

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 of Databricks Terraform-provider gebruiken. Zie Geheime ACL's voor geheime machtigingsniveaus

Een geheime ACL maken

Een geheime ACL maken voor een bepaald geheim bereik met behulp van de Databricks CLI (verouderd)

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.

Geheime ACL's weergeven

Alle geheime ACL's voor een bepaald geheimbereik weergeven:

databricks secrets list-acls <scope-name>

De geheime ACL ophalen die is 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 geheime ACL verwijderen

Een geheime ACL verwijderen die is toegepast op een principal voor een bepaald geheim bereik:

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