Verwenden eines Geheimnisses in einer Spark-Konfigurationseigenschaft oder -Umgebungsvariable

Dieser Artikel enthält Details zum Verweisen auf einen geheimen Schlüssel in einer Spark-Konfigurationseigenschaft oder Umgebungsvariable. Die abgerufenen Geheimnisse werden in der Ausgabe des Notebooks und in den Protokollen von Spark-Treiber und -Executor unkenntlich gemacht.

Wichtig

Dieses Feature befindet sich in der Public Preview.

Sicherheitshinweise

Databricks rät davon ab, Geheimnisse in Clusterumgebungsvariablen zu speichern, sofern sie nicht allen Benutzern des Clusters zur Verfügung stehen sollen. Beachten Sie die folgenden Sicherheitsaspekte, wenn Sie auf Geheimnisse in einer Spark-Konfigurationseigenschaft oder -Umgebungsvariablen verweisen:

  • Jeder Benutzer mit der Berechtigung „CAN ATTACH TO“ für einen Cluster oder mit Ausführungsberechtigungen für ein Notebook kann innerhalb des Notebooks die Umgebungsvariablen des Clusters lesen.

  • Wenn die Tabellenzugriffssteuerung für einen Cluster nicht aktiviert ist, kann jeder Benutzer mit CAN ATTACH TO-Berechtigungen für einen Cluster oder Berechtigungen zum Ausführen eines Notizbuchs Spark-Konfigurationseigenschaften aus dem Notizbuch lesen. Dies schließt Benutzer ein, die über keine direkte Berechtigung zum Lesen eines Geheimnisses verfügen.

  • Geheimnisse werden in den stdout- und stderr-Streams des Spark-Treiberprotokolls nicht geschwärzt. Um vertrauliche Daten zu schützen, sind Spark-Treiberprotokolle standardmäßig nur für Benutzende mit der Berechtigung KANN VERWALTEN für Aufträge, dedizierten Zugriffsmodus und Standard-Zugriffsmodus-Cluster sichtbar.

    Auf Clustern im No Isolation Shared-Zugriffsmodus können Benutzer mit der Berechtigung CAN ATTACH TO oder CAN MANAGE die Spark-Treiberprotokolle anzeigen. Um die Benutzer, welche die Protokolle lesen können, auf Benutzer mit der Berechtigung KANN VERWALTEN zu beschränken, setzen Sie spark.databricks.acl.needAdminPermissionToViewLogs auf true.

Anforderungen

Die folgenden Anforderungen gelten für das Verweisen auf geheime Schlüssel in Spark-Konfigurationseigenschaften und Umgebungsvariablen:

  • Besitzer von Clustern müssen über die CAN READ-Berechtigung für den Secret-Bereich verfügen.
  • Sie müssen ein Clusterbesitzer sein, um einen geheimen Schlüssel in einer Spark-Konfigurationseigenschaft oder Umgebungsvariable hinzuzufügen oder zu bearbeiten.
  • Wenn ein geheimer Schlüssel aktualisiert wird, müssen Sie den Cluster neu starten, um den geheimen Schlüssel erneut abzurufen.
  • Sie müssen über die CAN MANAGE-Berechtigung für den Cluster verfügen, um eine geheime Spark-Konfigurationseigenschaft oder Umgebungsvariable zu löschen.

Verweisen auf ein Geheimnis mit einer Spark-Konfigurationseigenschaft

Sie geben einen Verweis auf ein Geheimnis in einer Spark-Konfigurationseigenschaft im folgenden Format an:

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

Ersetzen Sie:

  • <scope-name> mit dem Namen des Geheimbereichs.
  • <secret-name> mit dem eindeutigen Namen des Geheimnisses im Gültigkeitsbereich.
  • <property-name> mit der Spark-Konfigurationseigenschaft

Jede Spark-Konfigurationseigenschaft kann nur auf ein Geheimnis verweisen, aber Sie können mehrere Spark-Eigenschaften so konfigurieren, dass sie auf Geheimnisse verweisen.

Zum Beispiel:

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

So rufen Sie das Secret aus dem Notebook ab und verwenden es:

Python

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

SQL

SELECT ${spark.password};

Verweisen auf ein Geheimnis in einer Umgebungsvariablen

Sie geben einen Geheimnispfad in einer Umgebungsvariablen im folgenden Format an:

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

Sie können einen beliebigen gültigen Variablennamen verwenden, wenn Sie auf ein Geheimnis verweisen. Der Zugriff auf Geheimnisse, auf die in Umgebungsvariablen verwiesen wird, wird durch die Berechtigungen des Benutzers oder der Benutzerin bestimmt, der oder die den Cluster konfiguriert hat. Obwohl in Umgebungsvariablen gespeicherte Geheimnisse für alle Clusterbenutzer zugänglich sind, werden sie in der Klartextanzeige unkenntlich gemacht, ähnlich wie andere Verweise auf Geheimnisse.

Umgebungsvariablen, die auf Geheimnisse verweisen, sind von einem clusterspezifischen Initiierungsskript aus zugänglich. Weitere Informationen finden Sie unter Festlegen und Verwenden von Umgebungsvariablen mit Initskripts.

Zum Beispiel:

Sie legen eine Umgebungsvariable so fest, dass sie auf ein Geheimnis verweist:

SPARKPASSWORD={{secrets/scope1/key1}}

Greifen Sie mit dem folgenden Muster auf $SPARKPASSWORD zu, um das Geheimnis in einem Initialisierungsskript abzurufen:

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