Vault¶
Vault by HashiCorp est un outil open source permettant de gérer les secrets et de protéger les données sensibles. Un secret est tout ce dont vous voulez contrôler étroitement l'accès, comme les clés API, les mots de passe ou les certificats.
L'approche de Vault est conçue pour les infrastructures dynamiques dont le périmètre réseau n'est pas connu (exemple multi cloud) et s'appuie sur sécurité renforcée par l'identité.
Note
Dans ce tutoriel, remplacez les valeurs suivantes comme suit :
ZONE_NAME
à remplacer par le nom de votre zone d'administration (commence par ocb-).CLUSTER_NAME
à remplacer par le nom du cluster Kubernetes provisioné par Caascad
Introduction¶
Vault fourni différents moyens de gérer les informations sensibles pour vos applications et votre infrastructure. Les secrets sont stockés dans un magasin de données (data store) chiffré et peuvent être récupérés via une API REST.
-
Différentes méthodes d'authentification et de gestion des secrets sont possibles en fonction des cas d'utilisation.
-
L'accès aux secrets est contrôlé par des politiques d'accès (policies) qui peuvent être liées à des identités (opérateurs, applications). Les policies peuvent permettre ou refuser l'accès à certaines parties de l'API Vault.
-
L'API la plus utilisée est le "KV store secrets engine" qui permet de stocker des données secrètes arbitraires dans Vault. Son utilisation est décrite dans la section suivante.
-
Dans Caascad, les utilisateurs peuvent se connecter à Vault avec un backend OIDC (Keycloak) comme les autres applications Caascad. En fonction de vos rôles Keycloak, vous aurez plus ou moins d'accès à l'API Vault.
Accéder à Vault¶
Dans votre environnement d'administration, le service Vault est situé à l'adresse suivante :
https://vault.ZONE_NAME.caascad.com
Rôles disponibles¶
Les roles globaux caascad-devops
et caascad-devops-<CLUSTER_NAME>
permettent
un accès à vault et au management des secrets de la CI Concourse et aux secrets
destinés aux applications Kubernetes.
Login¶
Pour pouvoir vous connecter à Vault, vous devez utiliser vos informations d'identification Keycloak. Pour plus d'informations sur Keycloak, consultez la page Authentification.
WebUI¶
- Choisissez la méthode
OIDC
dans la liste déroulante - Cliquez sur le bouton "Sign in with OIDC Provider"
- Une fenêtre popup devrait apparaître pour se connecter. Si votre navigateur bloque cette popup la première fois, vous devez autoriser les popups pour ce site web et cliquer à nouveau sur "Sign in with OIDC Provider".
- Le popup affichera la page de connexion de Keycloak. Cliquez sur "Log In".
- Ensuite, entrez votre utilisateur / mot de passe
CLI¶
Vous pouvez télécharger le binaire vault
correspondant à votre OS sur https://www.vaultproject.io/downloads.
Pour vous connecter avec la CLI:
export VAULT_ADDR=https://vault.ZONE_NAME.caascad.com
vault login -method=oidc
Cela ouvrira une page de connexion dans votre navigateur. Une fois connecté, vous pouvez fermer la page et revenir à la console.
Vous devriez voir une sortie comme celle-ci :
$ vault login -method=oidc
Complete the login via your OIDC provider. Launching browser to:
https://keycloak.ocb-demo.caascad.com/auth/realms/ocb-test01/protocol/openid-connect/auth?client_id=vault&nonce=739b2167e4c0d71a60ef3878c9aa31566497361e&redirect_uri=http%3A%2F%2Flocalhost%3A8250%2Foidc%2Fcallback&response_type=code&scope=openid&state=d1629b03a05e515beb774f4d0f108b59404dc55d
Success! You are now authenticated. The token information displayed below is already stored in the token helper. You do NOT need to run "vault login" again. Future Vault requests will automatically use this token.
Key Value
--- -----
token XXXXXXXXXXX
token_accessor Sb9s3OJXBiCpFzFLP3JKC2n1
token_duration 168h
token_renewable true
token_policies ["default"]
identity_policies ["caascad-concourse-member"]
policies ["caascad-concourse-member"]
token_meta_role caascad
Ceci a permis de récupérer et de stocker un jeton (token) pour accéder à Vault avec la CLI. Dans cet exemple, le jeton expirera dans 168h. Une fois qu'il a expiré, répétez la même procédure pour récupérer un nouveau jeton.
Pour afficher les informations sur le jeton authentifié :
$ vault token lookup