Service Principal pour le CI/CD
Cette page décrit comment utiliser les service principals pour le CI/CD avec Databricks. Un Service Principal est une identité créée pour être utilisée avec des outils et des applications automatisés, notamment :
- Plateformes CI/CD telles que GitHub Actions, Azure Pipelines et GitLab CI/CD
- Airflow dans les pipelines de données
- Jenkins
Pour une meilleure pratique en matière de sécurité, Databricks recommande d'utiliser un Service Principal Databricks et son jeton au lieu de votre utilisateur Databricks ou de votre jeton d'accès personnel Databricks pour votre utilisateur d'Workspace afin de donner aux plateformes CI/CD l'accès aux ressources Databricks. Voici quelques-uns des avantages de cette approche :
- Vous pouvez accorder et restreindre l'accès aux ressources Databricks pour un Service Principal Databricks indépendamment d'un utilisateur. Par exemple, cela vous permet d'interdire à un Service Principal Databricks d'agir en tant qu'administrateur dans votre Workspace Databricks, tout en permettant à d'autres utilisateurs spécifiques de votre Workspace de continuer à agir en tant qu'administrateurs.
- Les utilisateurs peuvent protéger leurs jetons d'accès contre l'accès par les plateformes CI/CD.
- Vous pouvez désactiver temporairement ou supprimer définitivement un Service Principal Databricks sans impacter les autres utilisateurs. Par exemple, ceci vous permet de suspendre ou de révoquer l'accès d'un Service Principal Databricks que vous soupçonnez d'être utilisé de manière malveillante.
- Si un utilisateur quitte votre organisation, vous pouvez supprimer cet utilisateur sans affecter aucun Service Principal Databricks.
Pour donner à une plateforme CI/CD accès à votre Workspace Databricks, procédez comme suit :
- Créez un Service Principal Databricks dans votre Workspace.
- Générez un jeton d'accès Databricks pour un Service Principal Databricks.
- Fournissez ce jeton d'accès Databricks à la plateforme CI/CD.
Pour effectuer les étapes 1 et 2, consultez les Service principals.
Pour effectuer l'étape 3, suivez les instructions de cette page.
Exigences
- Le jeton d'accès Databricks pour un Service Principal Databricks. Pour créer un Service Principal Databricks et son jeton d’accès Databricks, consultez Service Principals.
- Un compte auprès de votre fournisseur Git.
Mise en place de GitHub Actions
GitHub Actions doit pouvoir accéder à votre workspace Databricks. Si vous souhaitez utiliser les dossiers Git de Databricks, votre workspace doit également pouvoir accéder à GitHub.
Pour permettre aux GitHub Actions d'accéder à votre workspace Databricks, vous devez enregistrer le jeton d'accès Databricks de votre service principal Databricks auprès de GitHub Actions.
Si vous souhaitez également permettre à votre Workspace Databricks d'accéder à GitHub lorsque vous utilisez des dossiers Git Databricks, vous devez ajouter le jeton d'accès personnel GitHub d'un utilisateur machine GitHub à votre Workspace.
Enregistrez le jeton d'accès Databricks de votre Service Principal Databricks avec GitHub Actions
Cette section décrit comment activer GitHub Actions pour accéder à votre workspace Databricks.
Par mesure de sécurité, Databricks vous recommande de ne pas saisir directement un jeton d'accès Databricks dans le corps d'un fichier GitHub Actions. Vous devriez plutôt enregistrer le jeton d'accès Databricks avec GitHub Actions en utilisant les secrets chiffrés de GitHub.
Les actions GitHub, telles que celles que Databricks répertorie dans GitHub Actions, ainsi que les fichiers onpush.yml et onrelease.yml dans le cadre du Basic Python Template dans dbx pour les actions GitHub, reposent sur les secrets chiffrés de GitHub, tels que :
DATABRICKS_HOST, qui est la valeurhttps://suivie de votre nom d'instance de Workspace, par exempledbc-a1b2345c-d6e7.cloud.databricks.com.DATABRICKS_TOKEN, qui est la valeurtoken_valueque vous avez copiée après avoir créé le jeton d'accès Databricks pour le service principal Databricks.
Pour plus d'informations sur les secrets chiffrés GitHub requis pour une GitHub Action, consultez les Service principals et la documentation de cette GitHub Action.
Pour ajouter ces secrets chiffrés GitHub à votre repository GitHub, consultez Création de secrets chiffrés pour un repository dans la documentation GitHub. Pour d'autres approches pour ajouter ces secrets de repository GitHub, consultez Secrets chiffrés dans la documentation GitHub.
Ajoutez le jeton d'accès personnel GitHub pour un utilisateur de machine GitHub à votre Databricks Workspace
Cette section décrit comment activer votre Workspace Databricks pour accéder à GitHub avec les dossiers Git de Databricks. Ceci est une tâche facultative dans les scénarios CI/CD.
En tant que bonne pratique de sécurité, Databricks vous recommande d'utiliser les utilisateurs machine GitHub au lieu des comptes personnels GitHub, pour bon nombre des mêmes raisons pour lesquelles vous devriez utiliser un Service Principal Databricks au lieu d'un utilisateur Databricks. Pour ajouter le jeton d'accès personnel GitHub d'un utilisateur machine GitHub à votre workspace Databricks, procédez comme suit :
- Créez un utilisateur machine GitHub, si vous n'en avez pas encore un de disponible. Un utilisateur machine GitHub est un compte personnel GitHub, distinct de votre propre compte personnel GitHub, que vous pouvez utiliser pour automatiser des activités sur GitHub. Créez un nouveau compte GitHub séparé à utiliser comme utilisateur machine GitHub, si vous n'en avez pas encore un de disponible.
Lorsque vous créez un nouveau 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, consultez l'administrateur de messagerie de votre organisation pour obtenir une adresse e-mail distincte que vous pouvez associer à ce nouveau compte GitHub distinct en tant qu'utilisateur de machine GitHub.
Contactez l'administrateur de compte de votre organisation concernant la gestion de l'adresse e-mail distincte et de son utilisateur machine GitHub associé, ainsi que de ses jetons d'accès personnels GitHub au sein de votre organisation.
-
Donnez à l'utilisateur machine GitHub l'accès à votre repository GitHub. Consultez la documentation GitHub sur l’invitation d’une équipe ou d’une personne. 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 machine GitHub.
-
Connectez-vous à GitHub en tant qu'utilisateur machine, puis créez un jeton d'accès personnel GitHub pour cet utilisateur machine. Consultez Créer un jeton d'accès personnel dans la documentation GitHub. Assurez-vous de donner au jeton d'accès personnel GitHub l'accès au référentiel .
-
Collectez le jeton d'accès Databricks pour votre Service Principal Databricks, votre nom d'utilisateur machine GitHub, puis consultez Utiliser un Service Principal avec des dossiers Git Databricks.
Configurer GitLab CI/CD
GitLab CI/CD doit pouvoir accéder à votre Workspace Databricks. Si vous souhaitez également utiliser les dossiers Git Databricks, votre Workspace doit pouvoir accéder à GitLab CI/CD.
Pour accéder à votre Workspace Databricks, les fichiers .gitlab-ci.yml GitLab CI/CD, tels que celui inclus dans le Template Python de base de dbx, s'appuient sur des variables CI/CD personnalisées telles que :
DATABRICKS_HOST, qui est la valeurhttps://suivie de votre nom d'instance de Workspace, par exempledbc-a1b2345c-d6e7.cloud.databricks.com.DATABRICKS_TOKEN, qui est la valeurtoken_valueque vous avez copiée après avoir créé le jeton d'accès Databricks pour le service principal Databricks.
Pour ajouter ces variables personnalisées à votre projet GitLab CI/CD, consultez Ajouter une variable CI/CD à un projet dans la documentation GitLab CI/CD.
Si votre Workspace utilise les dossiers Git Databricks, et que vous souhaitez permettre à votre Workspace d'accéder à GitLab CI/CD, recueillez :
- Le jeton d'accès Databricks pour votre Service Principal Databricks
- Votre nom d'utilisateur GitLab CI/CD
Ensuite, consultez Utiliser un Service Principal avec les dossiers Git Databricks.