Administrador de secretosIntegraciones

Ansible

Bitwarden ofrece una integración con Ansible para recuperar secretos del Administrador de secretos e inyectarlos en tu libro de jugadas de Ansible. El plugin de búsqueda inyectará los secretos recuperados como variables de entorno enmascaradas dentro de un libro de jugadas de Ansible. Para configurar la colección:

Requisitos

Antes de configurar la colección de Ansible, también recomendamos que abra el Administrador de secretos para acceder a su token de acceso y cualquier secreto que desee incluir en la configuración.

Instala la colección Ansible de Bitwarden

La siguiente guía es un ejemplo de configuración para la colección de Bitwarden utilizando una máquina Linux.

  1. Instala el SDK de Bitwarden:

    Bash
    pip install bitwarden-sdk
  2. Instala la colección bitwarden.secrets:

    Bash
    ansible-galaxy collection install bitwarden.secrets

Ahora que la colección Ansible ha sido instalada, podemos comenzar a llamar a los secretos de Bitwarden desde un playbook de Ansible con bitwarden.secrets.lookup. La siguiente sección incluirá ejemplos para demostrar este proceso.

note

Los usuarios de macOS pueden necesitar establecer la siguiente variable de entorno en shell para evitar problemas de Ansible aguas arriba.

  • exportar OBJC_DISABLE_INITIALIZE_FORK_SAFETY=YES

Obtener secretos de Bitwarden

Para obtener secretos del Administrador de secretos en tu guion, hay dos métodos:

Guardar token de acceso como variable de entorno.

Usando el Administrador de secretos, podemos establecer de manera segura nuestro token de acceso como una variable de entorno en la shell y usar el libro de jugadas para recuperar el secreto. Para autenticar el token de acceso:

  1. En la terminal, ejecute el siguiente comando para establecer su variable de entorno de token de acceso:

    Bash
    export BWS_ACCESS_TOKEN=<ACCESS_TOKEN_VALUE>
  2. Ahora que la variable de entorno ha sido establecida, podemos usar el plugin de búsqueda para poblar variables en nuestro playbook. Por ejemplo:

    Bash
    vars: database_password: "{{ lookup('bitwarden.secrets.lookup', '<SECRET_ID>') }}"
note

Al establecer BWS_ACCESS_TOKEN como una variable de entorno, el token de acceso puede ser referenciado sin incluir el valor crudo del token de acceso en el libro de jugadas.

Suministra el token de acceso en el libro de jugadas

El token de acceso del Administrador de secretos también puede ser referenciado dentro del propio libro de jugadas. Este método no requeriría que utilices la variable de entorno BWS_ACCESS_TOKEN en tu shell, sin embargo, el valor del token de acceso se almacenará en el playbook en sí.

  1. Los tokens de acceso pueden incluirse en el libro de jugadas con el siguiente ejemplo:

    Bash
    vars: password_with_a_different_access_token: "{{ lookup('bitwarden.secrets.lookup', '<SECRET_ID_VALUE>', access_token='<ACCESS_TOKEN_VALUE>') }}"

Usando este método, se pueden referenciar múltiples tokens de acceso en un solo libro de jugadas.

Recupera el secreto de un servidor diferente

Los usuarios autoalojados de Bitwarden pueden recuperar secretos de su servidor Bitwarden incluyendo el base_url, api_url y identity_url:

Bash
vars: 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' ) }}

Ejemplo de libro de jugadas

El siguiente es un ejemplo de un archivo de libro de jugadas con varias opciones de configuración.

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

En el ejemplo anterior, el CUSTOM_ACCESS_TOKEN_VAR demuestra que puedes incluir múltiples tokens de acceso diferentes. Estos no tienen que ser tarjetas duras y pueden ser suministrados de manera segura a tu libro de jugadas.