Ansible
Bitwarden offre une intégration avec Ansible pour récupérer les secrets de Secrets Manager et les injecter dans votre playbook Ansible. Le plugin de recherche injectera les secrets récupérés sous forme de variables d'environnement masquées à l'intérieur d'un playbook Ansible. Pour configurer la collection :
Nous recommandons d'installer les packages Python dans un environnement virtuel Python.
Version actuelle d'Ansible installée sur votre système.
Bitwarden Secrets Manager avec un compte de service actif.
Avant de configurer la collection Ansible, nous vous recommandons également d'ouvrir Secrets Manager pour accéder à votre jeton d'accès et à tous les secrets que vous souhaitez inclure dans les paramètres.
Le guide suivant est un exemple de configuration pour la collection Bitwarden en utilisant une machine Linux.
Installez le SDK Bitwarden :
Bashpip install bitwarden-sdk
Installez la collection bitwarden.secrets:
Bashansible-galaxy collection install bitwarden.secrets
Maintenant que la collection Ansible a été installée, nous pouvons commencer à appeler les secrets Bitwarden à partir d'un playbook Ansible avec bitwarden.secrets.lookup
. La section suivante inclura des exemples pour démontrer ce processus.
note
Les utilisateurs de macOS peuvent avoir besoin de définir la variable d'environnement suivante dans le shell afin d'éviter les problèmes Ansible en amont.
exporter OBJC_DISABLE_INITIALIZE_FORK_SAFETY=YES
Pour récupérer des secrets du Secrets Manager dans votre livre de jeu, il existe deux méthodes :
En utilisant le Secrets Manager, nous pouvons définir en toute sécurité notre jeton d'accès comme une variable d'environnement dans le shell et utiliser le playbook pour récupérer le secret. Pour authentifier le jeton d'accès:
Dans le shell, exécutez la commande suivante pour définir votre variable d'environnement de jeton d'accès :
Bashexport BWS_ACCESS_TOKEN=<ACCESS_TOKEN_VALUE>
Maintenant que la variable d'environnement a été définie, nous pouvons utiliser le plugin de recherche pour peupler les variables dans notre playbook. Par exemple:
Bashvars: database_password: "{{ lookup('bitwarden.secrets.lookup', '<SECRET_ID>') }}"
note
En définissant BWS_ACCESS_TOKEN
comme une variable d'environnement, le jeton d'accès peut être référencé sans inclure la valeur brute du jeton d'accès dans le playbook.
Le jeton d'accès Secrets Manager peut également être référencé dans le playbook lui-même. Cette méthode ne vous obligerait pas à utiliser la variable d'environnement BWS_ACCESS_TOKEN
dans votre shell, cependant, la valeur du jeton d'accès sera stockée dans le playbook lui-même.
Les jetons d'accès peuvent être inclus dans le playbook avec l'exemple suivant :
Bashvars: password_with_a_different_access_token: "{{ lookup('bitwarden.secrets.lookup', '<SECRET_ID_VALUE>', access_token='<ACCESS_TOKEN_VALUE>') }}"
En utilisant cette méthode, plusieurs jetons d'accès peuvent être référencés dans un seul livre de jeu.
Les utilisateurs auto-hébergés de Bitwarden peuvent récupérer des secrets de leur serveur Bitwarden en incluant le base_url,
api_url
et identity_url
:
Bashvars:
secret_from_other_server: "{{ lookup('bitwarden.secrets.lookup', '<SECRET_ID>', base_url='https://bitwarden.example.com' ) }}"
secret_advanced: >-
{{ lookup('bitwarden.secrets.lookup', '<SECRET_ID>',
api_url='https://bitwarden.example.com/api',
identity_url='https://bitwarden.example.com/identity' ) }}
Voici un exemple de fichier de playbook avec plusieurs options de configuration.
Bash---
- name: Using secrets from Bitwarden
vars:
bws_access_token: "{{ lookup('env', 'CUSTOM_ACCESS_TOKEN_VAR') }}"
state_file_dir: "{{ '~/.config/bitwarden-sm' | expanduser }}"
secret_id: "9165d7a8-2c22-476e-8add-b0d50162c5cc"
secret: "{{ lookup('bitwarden.secrets.lookup', secret_id) }}"
secret_with_field: "{{ lookup('bitwarden.secrets.lookup', secret_id, field='note' ) }}"
secret_with_access_token: "{{ lookup('bitwarden.secrets.lookup', secret_id, access_token=bws_access_token ) }}"
secret_with_state_file: "{{ lookup('bitwarden.secrets.lookup', secret_id, state_file_dir=state_file_dir ) }}"
tasks:
- name: Use the secret in a task
include_tasks: tasks/add_db_user.yml # reference the secrets with "{{ secret }}", "{{ secret_with_field }}", etc.
note
Dans l'exemple ci-dessus, le CUSTOM_ACCESS_TOKEN_VAR
démontre que vous pouvez inclure plusieurs jetons d'accès différents. Ces derniers n'ont pas besoin d'être gravés sur une carte de paiement et peuvent être fournis de manière sécurisée à votre carnet de jeu.
Variable | Informations supplémentaires |
---|---|
| Recherchez le jeton d'accès à la variable |
| Un répertoire où votre état d'authentification peut être mis en cache. |
| ID du secret que vous souhaitez rechercher. |
| Recherchez une valeur secrète et stockez-la en tant que variable nommée |
| Recherchez un secret avec une sortie de champ supplémentaire. Dans cet exemple, la recherche renverra la valeur de la |
| Recherchez un secret avec la valeur du jeton d'accès incluse dans la demande. |
| Recherchez un secret avec le fichier d'état préconfiguré inclus dans la demande. |
En plus du secret_id
, plusieurs champs peuvent être inclus dans le bitwarden.secrets.lookup
. L'objet JSON suivant comprend tous les champs qui peuvent être référencés dans la recherche du playbook :
Bash{
"id": "be8e0ad8-d545-4017-a55a-b02f014d4158",
"organizationId": "10e8cbfa-7bd2-4361-bd6f-b02e013f9c41",
"projectId": "e325ea69-a3ab-4dff-836f-b02e013fe530",
"key": "SES_KEY",
"value": "0.982492bc-7f37-4475-9e60",
"note": "",
"creationDate": "2023-06-28T20:13:20.643567Z",
"revisionDate": "2023-06-28T20:13:20.643567Z"
}
Pour récupérer des champs supplémentaires tels que "note"
, la commande suivante peut être ajoutée au playbook :
Bash vars:
database_password: "{{ lookup('bitwarden.secrets.lookup', '0037ed90-efbb-4d59-a798-b103012487a0', field='note') }}"
Suggérer des modifications à cette page
Comment pouvons-nous améliorer cette page pour vous ?
Pour les questions techniques, de facturation et de produits, veuillez contacter le service d'assistance.