Principaux de service pour CI/CD
Cet article explique comment utiliser des principaux de service pour CI/CD avec Azure Databricks. Un principal de service est une identité créée pour être utilisée avec des outils automatisés et des applications, incluant :
- des plateformes CI/CD telles que GitHub Actions, Azure Pipelines et GitLab CI/CD
- Airflow dans les pipelines de données
- Jenkins
Comme meilleure pratique de sécurité, Databricks recommande d’utiliser un principal de service et son jeton plutôt que votre utilisateur Azure Databricks ou votre jeton d’accès personnel Databricks pour votre utilisateur d’espace de travail, afin de donner aux plateformes CI/CD l’accès aux ressources Azure Databricks. Cette approche présente certains avantages, notamment :
- Vous pouvez octroyer et restreindre l’accès aux ressources Azure Databricks pour un principal de service, indépendamment d’un utilisateur. Par exemple, cela vous permet d’interdire à un principal de service d’agir comme Administrateur dans votre espace de travail Azure Databricks, tout en permettant à d’autres utilisateurs spécifiques de votre espace de travail de continuer à agir en tant qu’Administrateurs.
- Les utilisateurs peuvent protéger leurs jetons d’accès afin qu’ils ne soient pas accessibles aux plateformes CI/CD.
- Vous pouvez temporairement désactiver un principal de service ou le supprimer définitivement sans affecter les autres utilisateurs. Cela vous permet par exemple de suspendre ou de supprimer l’accès d’un principal de service que vous soupçonnez d’être utilisé de manière malveillante.
- Si un utilisateur quitte votre organisation, vous pouvez le supprimer sans impacter un principal de service.
Pour accorder un accès à une plateforme CI/CD à votre espace de travail Azure Databricks, procédez comme suit :
Choisissez un des mécanismes d’authentification MS Entra pris en charge suivants avec une connexion de service :
Fédération des identités de charge de travail Microsoft Entra, en utilisant Azure CLI comme mécanisme d’authentification.
- Un principal de service Microsoft Entra, en utilisant une clé secrète client Microsoft Entra comme mécanisme d’authentification.
- Une identité managée Microsoft Entra ID.
Pour plus d’informations sur l’implémentation de l’authentification avec Microsoft Entra, consultez S’authentifier auprès d’Azure DevOps sur Databricks.
Pour découvrir comment authentifier spécifiquement l’accès aux dossiers Git Azure Databricks en utilisant Azure DevOps, consultez Utiliser un principal de service Microsoft Entra pour authentifier l’accès aux dossiers Git Azure Databricks.
- Un principal de service Microsoft Entra, en utilisant une clé secrète client Microsoft Entra comme mécanisme d’authentification.
Spécifications
- Jeton OAuth Azure Databricks ou jeton Microsoft Entra ID pour un principal de service géré Azure Databricks ou un principal de service géré Microsoft Entra ID. Pour créer un principal de service géré Azure Databricks ou un principal de service géré Microsoft Entra ID et son jeton OAuth Azure Databricks ou Microsoft Entra ID, consultez Gérer les principaux de service.
- Un compte avec votre fournisseur Git.
Configurer GitHub Actions
GitHub Actions doit pouvoir accéder à votre espace de travail Azure Databricks. Si vous souhaitez utiliser des dossiers Git Azure Databricks, votre espace de travail doit également être en mesure d’accéder à GitHub.
Pour permettre à GitHub Actions d’accéder à votre espace de travail Azure Databricks, vous devez fournir des informations sur votre principal de service géré Azure Databricks ou votre principal de service géré Microsoft Entra ID à GitHub Actions. Ces informations sont, par exemple, l’ID d’application (client), l’ID d’annuaire (locataire) pour un principal de service géré Microsoft Entra ID, la clé secrète client du principal de service géré Azure Databricks ou le principal de service géré Microsoft Entra ID, ou la valeur access_token
pour un principal de service géré Azure Databricks, en fonction des exigences de GitHub Actions. Pour plus d’informations, consultez Gérer les principaux de service et la documentation de GitHub Actions.
Si vous souhaitez permettre à votre espace de travail Azure Databricks d’accéder à GitHub lorsque vous utilisez des dossiers Git Azure Databricks, vous devez ajouter le jeton d’accès personnel GitHub pour un utilisateur de machine GitHub à votre espace de travail.
Fournir des informations concernant votre principal de service à GitHub Actions
Cette section explique comment permettre à GitHub Actions d’accéder à votre espace de travail Azure Databricks.
Comme meilleure pratique de sécurité, Databricks vous recommande de ne pas renseigner les informations sur votre principal de service directement dans le corps d’un fichier GitHub Actions. Vous devez à la place fournir ces informations à GitHub Actions à l’aide de secrets chiffrés GitHub.
Les actions GitHub Actions, comme celles que Databricks liste dans Intégration et livraison continues à l’aide de GitHub Actions, s’appuient sur différents secrets chiffrés GitHub tels que :
DATABRICKS_HOST
, qui est la valeurhttps://
suivie du nom de votre instance d’espace de travail, par exempleadb-1234567890123456.7.azuredatabricks.net
.AZURE_CREDENTIALS
, un document JSON qui représente la sortie de l’exécution d’Azure CLI pour obtenir des informations sur un principal de service géré Microsoft Entra ID. Pour plus d’informations, consultez la documentation relative à GitHub Actions.AZURE_SP_APPLICATION_ID
, la valeur de l’ID d’application (client) pour un principal de service géré Microsoft Entra ID.AZURE_SP_TENANT_ID
, la valeur de l’ID de l’annuaire (locataire) pour un principal de service géré Microsoft Entra ID.AZURE_SP_CLIENT_SECRET
, la Valeur de la clé secrète client pour un principal de service géré Microsoft Entra ID.
Pour plus d’informations sur les secrets chiffrés GitHub qui sont nécessaires pour une action GitHub, consultez Gérer les principaux de service et la documentation relative à cette action GitHub.
Pour ajouter ces secrets chiffrés GitHub à votre référentiel GitHub, consultez Création de secrets chiffrés pour un référentiel dans la documentation GitHub. Pour découvrir d’autres approches d’ajout de ces secrets de référentiel GitHub, consultez Secrets chiffrés dans la documentation GitHub.
Ajouter le jeton d’accès personnel GitHub pour un utilisateur de machine GitHub à votre espace de travail Azure Databricks
Cette section explique comment permettre à votre espace de travail Azure Databricks d’accéder à GitHub avec les dossiers Git Azure Databricks. Il s’agit d’une tâche facultative dans les scénarios CI/CD.
Comme meilleure pratique en matière de sécurité, Databricks recommande d’utiliser des identifiants GitHub générés par ordinateur plutôt que vos identifiants personnels GitHub, pour les mêmes raisons que celles pour lesquelles vous devez utiliser un principal de service au lieu d’un nom d’utilisateur Azure Databricks. Pour ajouter le jeton d’accès personnel GitHub pour un utilisateur de machine GitHub à votre espace de travail Azure Databricks, procédez comme suit :
Créez un utilisateur de machine GitHub, si vous n’en avez pas déjà un. Un utilisateur de machine GitHub est un compte personnel GitHub, distinct de votre propre compte personnel GitHub, que vous pouvez utiliser pour automatiser l’activité sur GitHub. Créez un compte GitHub distinct à utiliser en tant qu’utilisateur de machine GitHub, si vous n’en avez pas déjà un.
Notes
Lorsque vous créez un compte GitHub distinct en tant qu’utilisateur de machine GitHub, vous ne pouvez pas l’associer à l’adresse e-mail de votre propre compte personnel GitHub. Au lieu de cela, demandez à l’administrateur de messagerie de votre organisation de vous fournir une adresse e-mail distincte que vous pouvez associer à ce nouveau compte GitHub distinct en tant qu’utilisateur de machine GitHub.
Adressez-vous à l’administrateur de compte de votre organisation concernant la gestion de l’adresse e-mail distincte, de son utilisateur de machine GitHub associé et de ses jetons d’accès personnels GitHub au sein de votre organisation.
Donnez à l’utilisateur de machine GitHub l’accès à votre référentiel GitHub. Consultez Inviter une équipe ou une personne dans la documentation GitHub. Pour accepter l’invitation, vous devrez peut-être d’abord vous déconnecter de votre compte personnel GitHub, puis vous reconnecter en tant qu’utilisateur de machine GitHub.
Connectez-vous à GitHub en tant qu’utilisateur de machine, puis créez un jeton d’accès personnel GitHub pour cet utilisateur de machine. Consultez Créer un jeton d’accès personnel dans la documentation GitHub. Veillez à accorder au jeton d’accès personnel l’accès au référentiel.
Collectez le jeton Microsoft Entra ID de votre principal de service, votre nom d’utilisateur de machine GitHub, puis Ajoutez les informations d’identification du fournisseur Git à un espace de travail Azure Databricks.
Configurer Azure Pipelines
Azure Pipelines doit pouvoir accéder à votre espace de travail Azure Databricks. Si vous souhaitez également utiliser des dossiers Git Azure Databricks, votre espace de travail doit être en mesure d’accéder à Azure Pipelines.
Les fichiers de pipeline YAML Azure Pipelines reposent sur des variables d’environnement pour accéder à votre espace de travail Azure Databricks. Ces variables d’environnement sont notamment les suivantes :
DATABRICKS_HOST
, qui est la valeurhttps://
suivie du nom de votre instance d’espace de travail, par exempleadb-1234567890123456.7.azuredatabricks.net
.DATABRICKS_TOKEN
, qui est la valeurtoken_value
que vous avez copiée après avoir créé le jeton Microsoft Entra ID du principal de service géré Microsoft Entra ID.
Pour ajouter ces variables d’environnement à votre pipeline Azure, consultez Utiliser des secrets Azure Key Value dans Azure Pipelines et Définir des variables secrètes dans la documentation Azure.
Consultez également le blog Databricks suivant :
Facultatif pour les scénarios CI/CD : si votre espace de travail utilise des dossiers Git Azure Databricks et que vous souhaitez permettre à votre espace de travail d’accéder à Azure Pipelines, rassemblez :
- Le jeton Microsoft Entra ID pour un principal de service
- Votre nom d’utilisateur Azure Pipelines
Ensuite, ajoutez les informations d’identification du fournisseur Git à un espace de travail Azure Databricks.
Configurer GitLab CI/CD
GitHub CI/CD doit pouvoir accéder à votre espace de travail Azure Databricks. Si vous souhaitez également utiliser des dossiers Git Azure Databricks, votre espace de travail doit être en mesure d’accéder à GitLab CI/CD.
Pour accéder à votre espace de travail Azure Databricks, les fichiers .gitlab-ci.yml
GITLab CI/CD, tels que ceux qui font partie du modèle Python de base dans dbx
, s’appuient sur des variables CI/CD personnalisées telles que :
DATABRICKS_HOST
, qui est la valeurhttps://
suivie du nom de votre instance d’espace de travail, par exempleadb-1234567890123456.7.azuredatabricks.net
.DATABRICKS_TOKEN
étant la valeur detoken_value
que vous avez copiée après avoir créé le jeton Microsoft Entra ID pour le principal de service.
Pour ajouter ces variables personnalisées à votre projet CI/CD GitLab, consultez Ajouter une variable CI/CD à un projet dans la documentation GitLab CI/CD.
Si votre espace de travail utilise des dossiers Git Databricks et que vous souhaitez permettre à votre espace de travail d’accéder à GitLab CI/CD, rassemblez :
- Le jeton Microsoft Entra ID pour un principal de service
- Votre nom d’utilisateur CI/CD GitLab
Ensuite, Ajoutez les informations d’identification du fournisseur Git à un espace de travail Azure Databricks.
Ajoutez les informations d’identification du fournisseur Git à un espace de travail Azure Databricks
Cette section explique comment permettre à votre espace de travail Azure Databricks d’accéder à un fournisseur Git avec des dossiers Git Azure Databricks. Cela est facultatif dans les scénarios CI/CD. Par exemple, vous souhaiterez peut-être uniquement que votre fournisseur Git accède à votre espace de travail Azure Databricks mais vous ne souhaitez pas également utiliser des dossiers Git Azure Databricks dans votre espace de travail avec votre fournisseur Git. Si c’est le cas, vous pouvez ignorer cette section.
Avant de commencer, réunissez les informations et outils suivants :
- Le jeton Microsoft Entra ID pour un principal de service.
- Nom d’utilisateur associé à votre fournisseur Git.
- Jeton d’accès associé à l’utilisateur pour votre fournisseur Git.
Notes
Pour Azure Pipelines, consultez Utiliser des jetons d’accès personnels sur le site web Azure.
- Interface CLI Databricks version 0.205 ou ultérieure. Consultez Présentation de l’interface CLI Databricks. Vous ne pouvez pas utiliser l’interface utilisateur Azure Databricks.
- Un profil de configuration Azure Databricks dans votre fichier
.databrickscfg
, avec les champs du profil correctement définis pour lehost
associé représentant votre URL par espace de travail Azure Databricks, par exemplehttps://adb-1234567890123456.7.azuredatabricks.net
, ettoken
représentant le jeton Microsoft Entra ID de votre principal de service. (N’utilisez pas le jeton d’accès personnel Databricks pour l’utilisateur de votre espace de travail.) Consultez Authentification à l’aide d’un jeton d’accès personnel Azure Databricks.
Utilisez l’interface CLI Databricks pour exécuter la commande suivante :
databricks git-credentials create <git-provider-short-name> --git-username <git-provider-user-name> --personal-access-token <git-provider-access-token> -p <profile-name>
- Utilisez l’un des éléments suivants pour
<git-provider-short-name>
:- Pour GitHub, utilisez
GitHub
. - Pour Azure Pipelines, utilisez
AzureDevOpsServices
. - Pour GitLab CI/CD, utilisez
GitLab
.
- Pour GitHub, utilisez
- Remplacez
<git-provider-user-name>
par le nom d’utilisateur associé à votre fournisseur Git. - Remplacez
<git-provider-access-token>
par le jeton d’accès associé à l’utilisateur pour votre fournisseur Git. - Remplacez
<profile-name>
par le nom du profil de configuration Azure Databricks dans votre fichier.databrickscfg
.
Conseil
Pour vérifier que l’appel a réussi, vous pouvez exécuter l’une des commandes d’interface CLI Databricks suivantes et passer en revue la sortie :
databricks git-credentials list -p <profile-name>
databricks git-credentials get <credential-id> -p <profile-name>