3.15. Authentification des pipelines avec git secret
Un secret Git consiste en des informations d'identification permettant d'interagir de manière sécurisée avec un dépôt Git, et est souvent utilisé pour automatiser l'authentification. Dans Red Hat OpenShift Pipelines, vous pouvez utiliser les secrets Git pour authentifier les exécutions de pipeline et les exécutions de tâches qui interagissent avec un dépôt Git pendant l'exécution.
Une exécution de pipeline ou une exécution de tâche accède aux secrets par le biais du compte de service associé. OpenShift Pipelines prend en charge l'utilisation des secrets Git en tant qu'annotations (paires clé-valeur) pour l'authentification de base et l'authentification basée sur SSH.
3.15.1. Sélection des diplômes Copier lienLien copié sur presse-papiers!
L'exécution d'un pipeline ou d'une tâche peut nécessiter plusieurs authentifications pour accéder à différents dépôts Git. Annotez chaque secret avec les domaines où OpenShift Pipelines peut utiliser ses informations d'identification.
Une clé d'annotation de credential pour les secrets Git doit commencer par tekton.dev/git-
, et sa valeur est l'URL de l'hôte pour lequel vous voulez qu'OpenShift Pipelines utilise ce credential.
Dans l'exemple suivant, OpenShift Pipelines utilise un secret basic-auth
, qui repose sur un nom d'utilisateur et un mot de passe, pour accéder aux dépôts à github.com
et gitlab.com
.
Exemple : Plusieurs informations d'identification pour l'authentification de base
Vous pouvez également utiliser un secret ssh-auth
(clé privée) pour accéder à un dépôt Git.
Exemple : Clé privée pour l'authentification basée sur SSH
- 1
- Le contenu du fichier de clé privée SSH.
3.15.2. Configuration de l'authentification de base pour Git Copier lienLien copié sur presse-papiers!
Pour qu'un pipeline puisse récupérer des ressources dans des référentiels protégés par mot de passe, vous devez configurer l'authentification de base pour ce pipeline.
Pour configurer l'authentification de base pour un pipeline, mettez à jour les fichiers secret.yaml
, serviceaccount.yaml
, et run.yaml
avec les informations d'identification du secret Git pour le référentiel spécifié. Lorsque vous avez terminé ce processus, OpenShift Pipelines peut utiliser ces informations pour récupérer les ressources de pipeline spécifiées.
Pour GitHub, l'authentification par mot de passe simple est obsolète. Utilisez plutôt un jeton d'accès personnel.
Procédure
Dans le fichier
secret.yaml
, spécifiez le nom d'utilisateur et le mot de passe ou le jeton d'accès personnel GitHub pour accéder au dépôt Git cible.Copy to Clipboard Copied! Toggle word wrap Toggle overflow Dans le fichier
serviceaccount.yaml
, associez le secret au compte de service approprié.Copy to Clipboard Copied! Toggle word wrap Toggle overflow Dans le fichier
run.yaml
, associez le compte de service à une exécution de tâche ou de pipeline.Associer le compte de service à l'exécution d'une tâche :
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Associer le compte de service à une ressource
PipelineRun
:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Appliquez les modifications.
oc apply --filename secret.yaml,serviceaccount.yaml,run.yaml
$ oc apply --filename secret.yaml,serviceaccount.yaml,run.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.15.3. Configuration de l'authentification SSH pour Git Copier lienLien copié sur presse-papiers!
Pour qu'un pipeline puisse récupérer des ressources à partir de référentiels configurés avec des clés SSH, vous devez configurer l'authentification basée sur SSH pour ce pipeline.
Pour configurer l'authentification basée sur SSH pour un pipeline, mettez à jour les fichiers secret.yaml
, serviceaccount.yaml
, et run.yaml
avec les informations d'identification de la clé privée SSH pour le référentiel spécifié. Lorsque vous avez terminé ce processus, OpenShift Pipelines peut utiliser ces informations pour récupérer les ressources de pipeline spécifiées.
Envisagez d'utiliser l'authentification SSH plutôt que l'authentification de base.
Procédure
-
Générer une clé privée SSH ou copier une clé privée existante, qui est généralement disponible dans le fichier
~/.ssh/id_rsa
. Dans le fichier
secret.yaml
, définissez la valeur dessh-privatekey
comme étant le contenu du fichier de clé privée SSH, et définissez la valeur deknown_hosts
comme étant le contenu du fichier d'hôtes connus.Copy to Clipboard Copied! Toggle word wrap Toggle overflow ImportantSi vous omettez la clé privée, OpenShift Pipelines accepte la clé publique de n'importe quel serveur.
-
Facultatif : Pour spécifier un port SSH personnalisé, ajoutez
:<port number>
à la fin de la valeurannotation
. Par exemple,tekton.dev/git-0: github.com:2222
. Dans le fichier
serviceaccount.yaml
, associez le secretssh-key
au compte de servicebuild-bot
.Copy to Clipboard Copied! Toggle word wrap Toggle overflow Dans le fichier
run.yaml
, associez le compte de service à une exécution de tâche ou de pipeline.Associer le compte de service à l'exécution d'une tâche :
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Associer le compte de service à un pipeline :
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Appliquez les modifications.
oc apply --filename secret.yaml,serviceaccount.yaml,run.yaml
$ oc apply --filename secret.yaml,serviceaccount.yaml,run.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.15.4. Utiliser l'authentification SSH dans les tâches de type git Copier lienLien copié sur presse-papiers!
Lorsque vous invoquez des commandes Git, vous pouvez utiliser l'authentification SSH directement dans les étapes d'une tâche. L'authentification SSH ignore la variable $HOME
et utilise uniquement le répertoire personnel de l'utilisateur spécifié dans le fichier /etc/passwd
. Chaque étape d'une tâche doit donc établir un lien symbolique entre le répertoire /tekton/home/.ssh
et le répertoire personnel de l'utilisateur associé.
Cependant, les liens symboliques explicites ne sont pas nécessaires lorsque vous utilisez une ressource de pipeline du type git
, ou la tâche git-clone
disponible dans le catalogue Tekton.
Pour un exemple d'utilisation de l'authentification SSH dans les tâches de type git
, voir authenticating-git-commands.yaml.
3.15.5. Utiliser des secrets en tant qu'utilisateur non root Copier lienLien copié sur presse-papiers!
Il se peut que vous deviez utiliser des secrets en tant qu'utilisateur non root dans certains cas, par exemple :
- Les utilisateurs et les groupes que les conteneurs utilisent pour exécuter des tâches sont choisis au hasard par la plateforme.
- Les étapes d'une tâche définissent un contexte de sécurité non racine.
- Une tâche spécifie un contexte de sécurité global non racine, qui s'applique à toutes les étapes d'une tâche.
Dans de tels scénarios, il convient de prendre en compte les aspects suivants de l'exécution des tâches et des pipelines en tant qu'utilisateur non root :
-
L'authentification SSH pour Git exige que l'utilisateur ait un répertoire personnel valide configuré dans le répertoire
/etc/passwd
. La spécification d'un UID qui n'a pas de répertoire personnel valide entraîne l'échec de l'authentification. -
L'authentification SSH ignore la variable d'environnement
$HOME
. Vous devez donc créer un lien symbolique entre les fichiers secrets appropriés du répertoire$HOME
défini par OpenShift Pipelines (/tekton/home
) et le répertoire personnel valide de l'utilisateur non root.
En outre, pour configurer l'authentification SSH dans un contexte de sécurité non root, reportez-vous à l'exemple d'authentification des commandes git.
3.15.6. Limitation de l'accès secret à des étapes spécifiques Copier lienLien copié sur presse-papiers!
Par défaut, les secrets pour OpenShift Pipelines sont stockés dans le répertoire $HOME/tekton/home
, et sont disponibles pour toutes les étapes d'une tâche.
Pour limiter un secret à des étapes spécifiques, utilisez la définition du secret pour spécifier un volume et montez le volume dans des étapes spécifiques.