Anmerkung
Der Zugriff auf diese Seite erfordert eine Genehmigung. Du kannst versuchen, dich anzumelden oder die Verzeichnisse zu wechseln.
Der Zugriff auf diese Seite erfordert eine Genehmigung. Du kannst versuchen , die Verzeichnisse zu wechseln.
In diesem Artikel wird beschrieben, wie Sie die run_as-Einstellung verwenden, um die Identität zum Ausführen eines Databricks-Ressourcenpaketworkflows anzugeben.
Die run_as-Einstellung kann als Zuordnung auf oberster Ebene zur Anwendung auf Ressourcen oder in einer target-Bereitstellungszuordnung in einer Paketkonfigurationsdatei konfiguriert werden. Sie kann auf einen user_name oder einen service_principal_name festgelegt werden.
Diese Einstellung bietet die Möglichkeit, die zum Bereitstellen eines Paketauftrags oder einer Pipeline verwendete Identität von der Identität zu trennen, die vom Auftrags- oder Pipelineworkflow zum Ausführen verwendet wird. Dies erhöht die Flexibilität der Paketentwicklung und -verwaltung und ermöglicht gleichzeitig die Einrichtung von Schutzmaßnahmen für Bereitstellungen und Ausführungen. Dies gilt insbesondere für:
- Wenn die zum Bereitstellen eines Bündels verwendete Identität mit der identität übereinstimmt, die in der Einstellung des Bundles
run_askonfiguriert ist, gibt es keine Einschränkungen. Alle Paketressourcen werden unterstützt. - Wenn sich die zum Bereitstellen eines Bündels verwendete Identität von der identität unterscheidet, die in der Einstellung des Bundles
run_askonfiguriert ist, werden nur Aufträge und Pipelines unterstützt.
Festlegen einer Ausführungsidentität für das Paket
Um die Ausführungsidentität von Paketressourcen festzulegen, geben Sie wie im folgenden Beispiel gezeigt run_as als Zuordnung der obersten Ebene an:
bundle:
name: 'run_as'
# This is the identity that will be used when "databricks bundle run my_test_job_1" is executed.
run_as:
service_principal_name: '5cf3z04b-a73c-4x46-9f3d-52da7999069e'
resources:
jobs:
my_test_job _1:
name: Test job 1
tasks:
- task_key: 'task_1'
new_cluster:
num_workers: 1
spark_version: 13.2.x-snapshot-scala2.12
node_type_id: i3.xlarge
runtime_engine: PHOTON
notebook_task:
notebook_path: './test.py'
my_test_job_2:
name: Test job 2
run_as: # This is the identity that will be used when "databricks bundle run my_test_job_2" is executed.
service_principal_name: '69511ed2-zb27-444c-9863-4bc8ff497637'
tasks:
- task_key: 'task_2'
notebook_task:
notebook_path: './test.py'
Wichtig
Die run_as Einstellung wird für die Modellbereitstellung von Endpunkten nicht unterstützt. Wenn diese Ressourcen in einem Paket definiert sind, in dem run_as ebenfalls konfiguriert ist, tritt ein Fehler auf.
Festlegen von Zielbereitstellungsidentitäten
Es empfiehlt sich, Ausführungsidentitäten für Staging- und Produktionszielbereitstellungen zu konfigurieren. Darüber hinaus ist das Festlegen einer run_as-Identität auf einen Dienstprinzipal für Produktionsziele aus den folgenden Gründen die sicherste Methode, einen Produktionsworkflow auszuführen:
- Es wird sichergestellt, dass der Workflow entweder vom gleichen Dienstprinzipal oder von einer Person mit CAN_USE-Berechtigungen für den Dienstprinzipal selbst bereitgestellt wurde.
- Die Berechtigung zum Ausführen des Produktionsworkflows wird von der Identität getrennt, die das Paket erstellt oder bereitgestellt hat.
- Benutzer können einen Dienstprinzipal für die Produktion konfigurieren, der über weniger Berechtigungen als die zum Bereitstellen des Produktionspakets verwendete Identität verfügt.
In der folgenden databricks.yml-Beispielkonfigurationsdatei wurden drei Zielmodi konfiguriert: Entwicklung, Staging und Produktion. Der Entwicklungsmodus wird für die Ausführung als einzelner Benutzer konfiguriert, und die Staging- und Produktionsmodi werden für die Ausführung mit zwei verschiedenen Dienstprinzipalen konfiguriert. Dienstprinzipale befinden sich immer in Form einer Anwendungs-ID, die über die Seite eines Dienstprinzipals in den Administratoreinstellungen ihres Arbeitsbereichs abgerufen werden kann.
bundle:
name: my_targeted_bundle
run_as:
service_principal_name: '5cf3z04b-a73c-4x46-9f3d-52da7999069e'
targets:
# Development deployment settings, set as the default
development:
mode: development
default: true
workspace:
host: https://my-host.cloud.databricks.com
run_as:
user_name: someone@example.com
# Staging deployment settings
staging:
workspace:
host: https://my-host.cloud.databricks.com
root_path: /Shared/staging-workspace/.bundle/${bundle.name}/${bundle.target}
run_as:
service_principal_name: '69511ed2-zb27-444c-9863-4bc8ff497637'
# Production deployment settings
production:
mode: production
workspace:
host: https://my-host.cloud.databricks.com
root_path: /Shared/production-workspace/.bundle/${bundle.name}/${bundle.target}
run_as:
service_principal_name: '68ed9cd5-8923-4851-x0c1-c7536c67ff99'
resources:
jobs:
my_test_job:
name: Test job
tasks:
- task_key: 'task'
new_cluster:
num_workers: 1
spark_version: 13.3.x-cpu-ml-scala2.12
node_type_id: i3.xlarge
runtime_engine: STANDARD
notebook_task:
notebook_path: './test.py'