Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
La fédération des jetons OAuth Databricks vous permet d’accéder en toute sécurité aux API Databricks à l’aide de jetons de votre fournisseur d’identité (IdP). Pour activer la fédération de jetons OAuth, il faut configurer une stratégie de fédération, soit au niveau du compte Databricks, soit pour les tâches.
Cette page explique comment créer et configurer une stratégie de fédération de jeton OAuth.
Fédération des identités de charge de travail
La fédération des identités de charge de travail permet à vos charges de travail automatisées s’exécutant en dehors d’Azure Databricks d’accéder aux API Azure Databricks sans avoir besoin de secrets Azure Databricks. Les administrateurs de compte peuvent configurer la fédération d'identité pour les charges de travail à l’aide d’une stratégie de fédération de principal de service.
Une stratégie de fédération de principal de service est associée à un principal de service dans votre compte Azure Databricks et spécifie :
- Fournisseur d’identité (ou émetteur) à partir duquel le principal de service peut s’authentifier.
- Identité de charge de travail (ou objet) autorisée à s’authentifier en tant que principal du service Azure Databricks.
Par exemple, étant donné la stratégie de fédération de principal de service suivante pour une charge de travail Github Actions :
-
Émetteur:
https://token.actions.githubusercontent.com -
Public:
https://github.com/my-github-org -
Objet:
repo:my-github-org/my-repo:environment:prod
Vous pouvez utiliser ce corps JWT pour vous authentifier auprès d’Azure Databricks :
{
"iss": "https://token.actions.githubusercontent.com",
"aud": "https://github.com/my-github-org",
"sub": "repo:my-github-org/my-repo:environment:prod"
}
Configurer une stratégie de fédération pour un principal de service
Les administrateurs de compte peuvent configurer une stratégie de fédération de principal de service à l’aide de l’interface CLI Databricks ou de l’API Databricks. Vous pouvez créer un maximum de 20 stratégies de fédération de principal de service par principal de service Azure Databricks.
Pour configurer une stratégie de fédération de principal de service, vous devez spécifier les éléments suivants :
URL de l’émetteur : URL HTTPS qui identifie le fournisseur d’identité de charge de travail, spécifiée dans la
issrevendication des jetons d’identité de charge de travail.Objet: Identificateur unique de la charge de travail dans l’environnement d’exécution de la charge de travail. S’il n’est pas spécifié, la valeur par défaut est
sub.Public: Destinataire prévu du jeton, spécifié dans la
audrevendication. Le jeton est considéré comme une correspondance si son public correspond à au moins une audience dans la stratégie. S’il n’est pas spécifié, la valeur par défaut est votre ID de compte Azure Databricks.Revendication de l’objet : (facultatif) Spécifie la revendication de jeton qui contient l’identité de charge de travail (également appelée objet) du jeton. S’il n’est pas défini, Azure Databricks utilise
subpar défaut. Databricks recommande de conserver la revendication par défautsubpour la fédération des identités de charge de travail. Choisissez uniquement une revendication différente sisubn’est pas un identificateur d’objet approprié ou stable, ce qui est rare. Pour plus d’informations, consultez Exemples de stratégies de fédération de principal de service.Validation de signature de jeton : (facultatif) Les clés publiques ou leur URL, au format JWKS (JSON Web Key Sets) utilisé pour valider les signatures de jeton. JWKS JSON prend en charge jusqu’à 5 clés. Si votre fournisseur d’identité publie davantage, utilisez plutôt un URI JWKS.
S’il n’est pas spécifié, Azure Databricks récupère les clés à partir du point de terminaison connu de l’émetteur, qui est l’approche recommandée. Votre fournisseur d’identité doit fournir des métadonnées du fournisseur OpenID à
<issuer-url>/.well-known/openid-configurationqui incluent unjwks_urilien vers l'emplacement des clés publiques utilisées pour vérifier les signatures de jetons.
Interface utilisateur Databricks
- En tant qu’administrateur de compte, connectez-vous à la console de compte Azure Databricks à l’adresse
https://accounts.azuredatabricks.net. - Cliquez sur Gestion des utilisateurs.
- Accédez à l’onglet Principaux du service .
- Sélectionnez le principal de service pour lequel créer la stratégie.
- Accédez à l’onglet Informations d’identification et secrets .
- Sous l’onglet Stratégies de fédération , cliquez sur Créer une stratégie.
- Sélectionnez un fournisseur d’informations d’identification fédérés et configurez les champs correspondants.
- Cliquez sur Créer une stratégie.
Interface CLI de Databricks
Vous ne pouvez pas utiliser Azure Databricks CLI dans le terminal web de l’espace de travail Azure Databricks pour créer une stratégie de fédération.
Installez ou mettez à jour la version la plus récente d’Azure Databricks CLI.
En tant qu’administrateur de compte, authentifiez-vous auprès de votre compte Azure Databricks à l’aide de l’interface CLI. Spécifiez le
ACCOUNT_CONSOLE_URLet votre Azure DatabricksACCOUNT_ID:databricks auth login --host ${ACCOUNT_CONSOLE_URL} --account-id ${ACCOUNT_ID}Obtenez l’ID numérique du principal de service auquel la stratégie de fédération sera appliquée. (Par exemple,
3659993829438643.)Si vous connaissez l’ID d’application du principal de service (généralement une valeur GUID, par exemple
bc3cfe6c-469e-4130-b425-5384c4aa30bb) à l’avance, vous pouvez déterminer l’ID numérique du principal de service à l’aide de l’interface CLI Databricks :databricks account service-principals list --filter 'applicationId eq "<service-principal-application-id>"'Créez la stratégie de fédération du principal de service. Voici un exemple de création d’une stratégie de fédération pour une action GitHub :
databricks account service-principal-federation-policy create ${SERVICE_PRINCIPAL_NUMERIC_ID} --json \ '{ "oidc_policy": { "issuer": "https://token.actions.githubusercontent.com", "audiences": [ "https://github.com/my-github-org" ], "subject": "repo:my-github-org/my-repo:environment:prod" } }'
API de compte Databricks
Obtenez l’ID numérique du principal de service (par exemple,
) à partir de la console de compte ou en utilisant l’API des principaux de service . Créez la politique de fédération du principal du service
curl --request POST \ --header "Authorization: Bearer $TOKEN" \ "https://accounts.cloud.databricks.com/api/2.0/accounts/${ACCOUNT_ID}/servicePrincipals/${SERVICE_PRINCIPAL_NUMERIC_ID}/federationPolicies" \ --data '{ "oidc_policy": { "issuer": "https://token.actions.githubusercontent.com", "audiences": [ "https://github.com/my-github-org" ], "subject": "repo:my-github-org/my-repo:environment:prod" } }'Pour obtenir la documentation de référence complète de l’API, consultez l’API de stratégie de fédération de compte.
Exemples de politiques de fédération pour les principaux services Databricks
Le tableau suivant fournit des exemples de stratégies de fédération de principal de service et le corps JWT correspondant.
Pour obtenir des étapes de configuration complètes pour activer la fédération d’identité de charge de travail pour certains de ces fournisseurs d’identité courants, consultez Activer la fédération d’identité de charge de travail dans CI/CD.
| Tool | Stratégie de fédération | Exemple de jeton correspondant |
|---|---|---|
| GitHub Actions |
Émetteur:https://token.actions.githubusercontent.comAudience:https://github.com/<github-org>Objet:repo:<github-org>/<repo>:environment:prod |
{
"iss": "https://token.actions.githubusercontent.com",
"aud": "https://github.com/<github-org>",
"sub": "repo:<github-org>/<repo>:environment:prod"
}
|
| Kubernetes |
Émetteur:https://kubernetes.default.svcAudience:https://kubernetes.default.svcObjet:system:serviceaccount:namespace:podnameJSON JWKS :{"keys":[{"kty":"rsa","e":"AQAB","use":"sig","kid":"<key-id>","alg":"RS256","n":"uPUViFv..."}]} |
{
"iss": "https://kubernetes.default.svc",
"aud": ["https://kubernetes.default.svc"],
"sub": "system:serviceaccount:namespace:podname"
}
|
| Azure DevOps |
Émetteur:https://vstoken.dev.azure.com/<org_id>Audience:api://AzureADTokenExchangeObjet:sc://my-org/my-project/my-connection |
{
"iss": "https://vstoken.dev.azure.com/<org_id>",
"aud": "api://AzureADTokenExchange",
"sub": "sc://my-org/my-project/my-connection"
}
|
| GitLab |
Émetteur:https://gitlab.example.comAudience:https://gitlab.example.comObjet:project_path:my-group/my-project:... |
{
"iss": "https://gitlab.example.com",
"aud": "https://gitlab.example.com",
"sub": "project_path:my-group/my-project:..."
}
|
| CircleCI |
Émetteur:https://oidc.circleci.com/org/<org_id>Audience:<org_id>Objet:7cc1d11b-46c8-4eb2-9482-4c56a910c7ceRevendication d’objet :oidc.circleci.com/project-id |
{
"iss": "https://oidc.circleci.com/org/<org_id>",
"aud": "<org_id>",
"oidc.circleci.com/project-id": "7cc1d11b-46c8-4eb2-9482-4c56a910c7ce"
}
|
Fédération des jetons à l’échelle du compte
Les administrateurs de compte peuvent configurer la fédération des jetons OAuth dans le compte Azure Databricks à l’aide d’une stratégie de fédération de compte. Une stratégie de fédération de compte permet à tous les utilisateurs et principaux de service de votre compte Azure Databricks d’accéder aux API Databricks à l’aide de jetons de votre fournisseur d’identité. Une stratégie de fédération de compte spécifie :
- Fournisseur d’identité ou émetteur à partir duquel Azure Databricks accepte les jetons.
- Critères de mappage d’un jeton à l'utilisateur Azure Databricks correspondant ou au principal de service.
Par exemple, en fonction d’une stratégie de fédération avec les champs suivants :
-
Émetteur:
https://idp.mycompany.com/oidc -
Public:
databricks -
Revendication d’objet :
sub
Utilisez ce corps JWT pour vous authentifier auprès d’Azure Databricks comme username@mycompany.comsuit :
{
"iss": "https://idp.mycompany.com/oidc",
"aud": "databricks",
"sub": "username@mycompany.com"
}
Configurer une stratégie de fédération de compte
Les administrateurs de compte peuvent configurer une stratégie de fédération de compte à l’aide de l’interface utilisateur Azure Databricks, de l’interface CLI Databricks ou de l’API REST Databricks. Vous pouvez spécifier un maximum de 20 stratégies de fédération de compte dans votre compte Azure Databricks.
Pour configurer une stratégie de fédération de compte, vous devez spécifier les éléments suivants :
URL de l’émetteur : URL HTTPS qui identifie votre fournisseur d’identité, spécifiée dans la
issrevendication de vos jetons.Public: Destinataire prévu du jeton, spécifié dans la
audrevendication. Le jeton est considéré comme une correspondance si son public correspond à au moins une audience dans la stratégie. S’il n’est pas spécifié, la valeur par défaut est votre ID de compte Azure Databricks.Revendication d’objet : Revendication de jeton qui contient le nom d’utilisateur Azure Databricks de l’utilisateur pour lequel le jeton a été émis. S’il n’est pas spécifié, la valeur par défaut est
sub.Validation de signature de jeton : (facultatif) Les clés publiques ou leur URL, au format JWKS (JSON Web Key Sets) utilisé pour valider les signatures de jeton. JWKS JSON prend en charge jusqu’à 5 clés. Si votre fournisseur d’identité publie davantage, utilisez plutôt un URI JWKS.
S’il n’est pas spécifié, Azure Databricks récupère les clés à partir du point de terminaison connu de l’émetteur, qui est l’approche recommandée. Votre fournisseur d’identité doit fournir des métadonnées du fournisseur OpenID à
<issuer-url>/.well-known/openid-configurationqui incluent unjwks_urilien vers l'emplacement des clés publiques utilisées pour vérifier les signatures de jetons.
Important
Pour la fédération à l’échelle du compte, inscrivez uniquement les fournisseurs d’identité entièrement gérés et approuvés par votre organisation, tels que le fournisseur d’identité de votre entreprise. Ne configurez pas la fédération à l’échelle du compte avec des fournisseurs d’identité externes que vous ne contrôlez pas, tels que ceux gérés par des clients ou des partenaires.
Interface utilisateur Databricks
- En tant qu’administrateur de compte, connectez-vous à la console de compte Azure Databricks à l’adresse
https://accounts.azuredatabricks.net. - Cliquez sur Paramètres et accédez à l’onglet Authentification .
- Sous Stratégies de fédération, cliquez sur Créer une stratégie.
- Entrez l’URL de l’émetteur, les audiences, la revendication d’objet et la validation facultative de la signature de jeton.
- Cliquez sur Créer une stratégie.
Interface CLI de Databricks
Vous ne pouvez pas utiliser Azure Databricks CLI dans le terminal web de l’espace de travail Azure Databricks pour créer une stratégie de fédération.
Installez ou mettez à jour la version la plus récente de l’interface CLI Databricks.
En tant qu’administrateur de compte, authentifiez-vous auprès de votre compte Azure Databricks à l’aide de l’interface CLI. Spécifiez le
ACCOUNT_CONSOLE_URLet votre Azure DatabricksACCOUNT_ID.databricks auth login --host ${ACCOUNT_CONSOLE_URL} --account-id ${ACCOUNT_ID}Créez la stratégie de fédération de compte. Par exemple:
databricks account federation-policy create --json \ '{ "oidc_policy": { "issuer": "https://idp.mycompany.com/oidc", "audiences": [ "databricks" ], "subject_claim": "sub" } }'
API de compte Databricks
L’appel d’API REST Azure Databricks suivant crée une stratégie de fédération de compte :
curl --request POST \
--header "Authorization: Bearer $TOKEN" \
"https://accounts.cloud.databricks.com/api/2.0/accounts/${ACCOUNT_ID}/federationPolicies" \
--data '{
"oidc_policy": {
"issuer": "https://idp.mycompany.com/oidc",
"audiences": [
"databricks"
],
"subject_claim": "sub"
}
}'
Pour obtenir la documentation de référence complète de l’API, consultez l’API de stratégie de fédération de compte.
Exemples de stratégies de fédération de compte
Le tableau suivant fournit des exemples de stratégies de fédération de compte et le corps de JWT associé.
| Stratégie de fédération | Exemple de jeton correspondant |
|---|---|
Émetteur:https://idp.mycompany.com/oidcAudience:2ff814a6-3304-4ab8-85cb-cd0e6f879c1d |
{
"iss": "https://idp.mycompany.com/oidc",
"aud": "2ff814a6-3304-4ab8-85cb-cd0e6f879c1d",
"sub": "username@mycompany.com"
}
|
Émetteur:https://idp.mycompany.com/oidcAudience:2ff814a6-3304-4ab8-85cb-cd0e6f879c1dRevendication d’objet :preferred_username |
{
"iss": "https://idp.mycompany.com/oidc",
"aud": ["2ff814a6-3304-4ab8-85cb-cd0e6f879c1d", "other-audience"],
"preferred_username": "username@mycompany.com",
"sub": "some-other-ignored-value"
}
|
Émetteur:https://idp.mycompany.com/oidcAudience:2ff814a6-3304-4ab8-85cb-cd0e6f879c1dJSON JWKS :{"keys":[{"kty":"RSA","e":"AQAB","use":"sig","kid":"<key-id>","alg":"RS256","n":"uPUViFv..."}]} |
{
"iss": "https://idp.mycompany.com/oidc",
"aud": "2ff814a6-3304-4ab8-85cb-cd0e6f879c1d",
"sub": "username@mycompany.com"
} (signature vérifiée à l’aide de la clé publique dans la stratégie) |
Émetteur:https://idp.mycompany.com/oidcAudience:2ff814a6-3304-4ab8-85cb-cd0e6f879c1dURI JWKS :https://idp.mycompany.com/jwks.json |
{
"iss": "https://idp.mycompany.com/oidc",
"aud": "2ff814a6-3304-4ab8-85cb-cd0e6f879c1d",
"sub": "username@mycompany.com"
} (signature vérifiée à l’aide de la clé publique extraite de jwks_uri) |
Étapes suivantes
Après avoir configuré une stratégie de fédération pour votre compte :
- Configurez votre fournisseur d’identité (IDP) pour générer des jetons que vos utilisateurs peuvent échanger avec Azure Databricks. Pour plus d’informations sur l’installation, reportez-vous à la documentation de votre fournisseur d’identité. Pour obtenir des instructions sur l’activation de la fédération des identités de charge de travail avec les fournisseurs d’identité courants, consultez Activer la fédération des identités de charge de travail dans CI/CD.
- Utilisez un JWT à partir de votre fournisseur d’identité pour accéder à l’API Azure Databricks en l’échangeant d’abord pour un jeton OAuth Azure Databricks. Incluez le jeton OAuth Azure Databricks dans l’en-tête
Bearer:de votre appel d’API pour terminer la requête. Le JWT doit être valide et signé à l’aide des algorithmes RS256 ou ES256. Pour plus d’informations sur l’implémentation, consultez Authentifier avec un jeton de fournisseur d’identité.