Een geheim gebruiken in een Spark-configuratie-eigenschap of omgevingsvariabele
Dit artikel bevat informatie over het verwijzen naar een geheim in een Spark-configuratie-eigenschap of omgevingsvariabele. Opgehaalde geheimen worden redacted uit notebook-uitvoer en Spark-stuurprogramma en uitvoerlogboeken.
Belangrijk
Deze functie is beschikbaar als openbare preview.
Beveiligingsoverwegingen
Databricks raadt niet aan geheimen op te slaan in omgevingsvariabelen voor clusters als ze niet beschikbaar mogen zijn voor alle gebruikers in het cluster. Houd rekening met de volgende beveiligingsproblemen bij het verwijzen naar geheimen in een Spark-configuratie-eigenschap of omgevingsvariabele:
Elke gebruiker met CAN ATTACH TO-machtigingen voor een cluster of Run-machtigingen op een notebook kan omgevingsvariabelen van het cluster lezen vanuit het notebook.
Als toegangsbeheer voor tabellen niet is ingeschakeld voor een cluster, kan elke gebruiker met KAN KOPPELEN AAN machtigingen voor 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.
Geheimen worden niet bewerkt vanuit het Spark-stuurprogrammalogboek
stdout
enstderr
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.In clusters in de modus Geen isolatie voor gedeelde toegang kunnen de Spark-stuurprogrammalogboeken worden bekeken 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
optrue
.
Vereisten
De volgende vereisten zijn van toepassing op het verwijzen naar geheimen in spark-configuratie-eigenschappen en omgevingsvariabelen:
- Clustereigenaren moeten de machtiging KAN LEZEN hebben voor het geheime bereik.
- U moet een clustereigenaar zijn om een geheim toe te voegen of te bewerken in een Spark-configuratie-eigenschap of omgevingsvariabele.
- Als een geheim is bijgewerkt, moet u het cluster opnieuw opstarten om het geheim opnieuw op te halen.
- U moet de machtiging CAN MANAGE voor het cluster hebben om een geheime Spark-configuratie-eigenschap of omgevingsvariabele te verwijderen.
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>}}
Vervangen:
-
<scope-name>
met de naam van het geheime bereik. -
<secret-name>
met de unieke naam van het geheim in het bereik. -
<property-name>
met de spark-configuratie-eigenschap
Elke Spark-configuratie-eigenschap kan slechts verwijzen naar één geheim, maar u kunt meerdere Spark-eigenschappen configureren om te verwijzen naar geheimen.
Voorbeeld:
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. Hoewel geheimen die zijn opgeslagen in omgevingsvariabelen toegankelijk zijn voor alle clustergebruikers, worden ze redacted van weergave zonder opmaak, vergelijkbaar met andere geheime verwijzingen.
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