Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
La federación de tokens de OAuth de Databricks, también conocida como OpenID Connect (OIDC), permite que las cargas de trabajo automatizadas que se ejecutan fuera de Databricks accedan de forma segura a Databricks sin secretos de Databricks. Consulte Autenticación del acceso a Azure Databricks mediante la federación de tokens de OAuth.
Para habilitar la federación de identidades de cargas de trabajo para Acciones de GitHub:
Después de habilitar la federación de identidades de carga de trabajo, los SDK de Databricks y la CLI de Databricks capturan automáticamente los tokens de identidad de carga de trabajo de GitHub y los intercambian para tokens de OAuth de Databricks.
Creación de una directiva de federación
En primer lugar, cree una política de federación de identidad de carga de trabajo. Para obtener instrucciones, consulte Configuración de una directiva de federación de entidad de servicio. En GitHub, establezca los valores siguientes para la directiva:
-
Organización: Nombre de la organización de GitHub. Por ejemplo, si la dirección URL del repositorio es
https://github.com/databricks-inc/data-platform, la organización esdatabricks-inc. -
Depósito: Nombre del repositorio único que se va a permitir, como
data-platform. -
Tipo de entidad: El tipo de entidad de GitHub representada en la declaración (subject) del token. El valor predeterminado es Branch. Databricks recomienda usar Environment, que puede habilitar estableciendo el atributo en el
environmentarchivo YAML de Acciones de GitHub. Consulte Implementación en un entorno específico. -
Dirección URL del emisor:
https://token.actions.githubusercontent.com - Asunto: Cadena formada por la concatenación de valores del contexto de trabajo de las acciones de GitHub.
- Audiencias: Databricks recomienda establecerlo en el identificador de la cuenta de Azure Databricks. Si se omite, el identificador de cuenta se usa de forma predeterminada.
-
Reclamación de sujeto: (opcional) La reclamación JWT que contiene el valor de la identidad de la carga de trabajo (
sub) del token OIDC. En GitHub, deje el campo comosub, que codifica el repositorio, la rama, la etiqueta, la solicitud de extracción y combinación o el entorno que desencadenó el flujo de trabajo. Para autenticarse como un flujo de trabajo reutilizable en lugar del repositorio de llamadas, consulte Autenticación mediante un flujo de trabajo reutilizable.
Por ejemplo, el siguiente comando de la CLI de Databricks crea una directiva de federación para una organización denominada my-org y un identificador numérico de la entidad de servicio de Databricks de 5581763342009999:
databricks account service-principal-federation-policy create 5581763342009999 --json '{
"oidc_policy": {
"issuer": "https://token.actions.githubusercontent.com",
"audiences": [
"a2222dd9-33f6-455z-8888-999fbbd77900"
],
"subject": "repo:my-github-org/my-repo:environment:prod"
}
}'
Configuración del archivo YAML de Acciones de GitHub
A continuación, configure el archivo YAML de Acciones de GitHub. Establezca estas variables de entorno:
-
DATABRICKS_AUTH_TYPE:github-oidc -
DATABRICKS_HOST: dirección URL del área de trabajo de Databricks -
DATABRICKS_CLIENT_ID: identificador de la entidad de servicio (aplicación)
name: GitHub Actions Demo
run-name: ${{ github.actor }} is testing out GitHub Actions 🚀
on: workflow_dispatch
permissions:
id-token: write
contents: read
jobs:
my_script_using_wif:
runs-on: ubuntu-latest
environment: prod
env:
DATABRICKS_AUTH_TYPE: github-oidc
DATABRICKS_HOST: https://my-workspace.cloud.databricks.com/
DATABRICKS_CLIENT_ID: a1b2c3d4-ee42-1eet-1337-f00b44r
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Install Databricks CLI
uses: databricks/setup-cli@main
- name: Run Databricks CLI commands
run: databricks current-user me
Autenticación mediante un flujo de trabajo reutilizable
De forma predeterminada, la sub declaración identifica el repositorio que realiza la llamada. Para autenticarse como un flujo de trabajo reutilizable en lugar del repositorio de llamadas, establezca subject_claimjob_workflow_ref en la directiva de federación. Cualquier equipo puede invocar el flujo de trabajo reutilizable, pero solo el propio flujo de trabajo reutilizable se autentica con Databricks.
Creación de una directiva de federación
Cree una directiva de federación con job_workflow_ref como reclamación de asunto. Asigne subject a la referencia de su archivo de flujo de trabajo reutilizable:
databricks account service-principal-federation-policy create 5581763342009999 --json '{
"oidc_policy": {
"issuer": "https://token.actions.githubusercontent.com",
"audiences": [
"a2222dd9-33f6-455z-8888-999fbbd77900"
],
"subject": "my-github-org/shared-workflows/.github/workflows/deploy.yml@refs/heads/main",
"subject_claim": "job_workflow_ref"
}
}'
Configure los archivos YAML de Acciones de GitHub
Cree un flujo de trabajo reutilizable que se autentique con Azure Databricks y un flujo de trabajo de llamada en cualquier repositorio que lo invoque.
En el ejemplo siguiente se muestra un archivo de flujo de trabajo reutilizable (.github/workflows/deploy.yml en el repositorio de flujos de trabajo compartidos):
on:
workflow_call:
jobs:
deploy:
runs-on: ubuntu-latest
env:
DATABRICKS_AUTH_TYPE: github-oidc
DATABRICKS_HOST: https://my-workspace.cloud.databricks.com/
DATABRICKS_CLIENT_ID: a1b2c3d4-ee42-1eet-1337-f00b44r
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Install Databricks CLI
uses: databricks/setup-cli@main
- name: Run Databricks CLI commands
run: databricks current-user me
En el ejemplo siguiente se muestra un flujo de trabajo de invocación en cualquier repositorio que utilice un flujo de trabajo reutilizable.
on: workflow_dispatch
permissions:
id-token: write
contents: read
jobs:
call-deploy:
uses: my-github-org/shared-workflows/.github/workflows/deploy.yml@main
Note
Establezca permissions: id-token: write en el flujo de trabajo de llamada, no en el flujo de trabajo reutilizable. GitHub solo incluye la afirmación job_workflow_ref en el token OIDC cuando se concede id-token: write en el flujo de trabajo que realiza la llamada.