Partager via


Configurer une stratégie de fédération

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 iss revendication 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 aud revendication. 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 sub par défaut. Databricks recommande de conserver la revendication par défaut sub pour la fédération des identités de charge de travail. Choisissez uniquement une revendication différente si sub n’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-configuration qui incluent un jwks_uri lien vers l'emplacement des clés publiques utilisées pour vérifier les signatures de jetons.

Interface utilisateur Databricks

  1. En tant qu’administrateur de compte, connectez-vous à la console de compte Azure Databricks à l’adresse https://accounts.azuredatabricks.net.
  2. Cliquez sur Gestion des utilisateurs.
  3. Accédez à l’onglet Principaux du service .
  4. Sélectionnez le principal de service pour lequel créer la stratégie.
  5. Accédez à l’onglet Informations d’identification et secrets .
  6. Sous l’onglet Stratégies de fédération , cliquez sur Créer une stratégie.
  7. Sélectionnez un fournisseur d’informations d’identification fédérés et configurez les champs correspondants.
  8. 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.

  1. Installez ou mettez à jour la version la plus récente d’Azure Databricks CLI.

  2. 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_URL et votre Azure Databricks ACCOUNT_ID:

    databricks auth login --host ${ACCOUNT_CONSOLE_URL} --account-id ${ACCOUNT_ID}
    
  3. 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>"'
    
  4. 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

  1. 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 .

  2. 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 iss revendication de vos jetons.

  • Public: Destinataire prévu du jeton, spécifié dans la aud revendication. 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-configuration qui incluent un jwks_uri lien 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

  1. En tant qu’administrateur de compte, connectez-vous à la console de compte Azure Databricks à l’adresse https://accounts.azuredatabricks.net.
  2. Cliquez sur Paramètres et accédez à l’onglet Authentification .
  3. Sous Stratégies de fédération, cliquez sur Créer une stratégie.
  4. Entrez l’URL de l’émetteur, les audiences, la revendication d’objet et la validation facultative de la signature de jeton.
  5. 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.

  1. Installez ou mettez à jour la version la plus récente de l’interface CLI Databricks.

  2. 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_URL et votre Azure Databricks ACCOUNT_ID.

    databricks auth login --host ${ACCOUNT_CONSOLE_URL} --account-id ${ACCOUNT_ID}
    
  3. 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é.