calidaedev.authorized_keys
Claves Autorizadas
Administra las claves SSH autorizadas a través del módulo authorized_key
de Ansible.
Variables del Rol
Variables predeterminadas:
authorized_keys_present: {root: []}
authorized_keys_banned: []
authorized_keys_exclusive: {}
authorized_keys_present
se puede usar para declarar las claves autorizadas para cada usuario en cada host. Por defecto, incluye al usuario root sin claves.
authorized_keys_banned
se puede usar para eliminar un conjunto de claves autorizadas para cualquier usuario en authorized_keys_present
. Se puede usar para quitar claves en toda la inventario una vez que hayan sido rotadas o comprometidas, o si sus emisores han revocado todo acceso. Por defecto, eliminará todas las claves listadas aquí para el usuario root.
Si necesitas un control más detallado y preciso, usa authorized_keys_exclusive
. Esta opción instalará las claves especificadas y también eliminará cualquier clave adicional que se encuentre en el servidor, proporcionando un control de acceso consistente a pesar de las desviaciones en la configuración. Si la lista de claves está vacía, esta opción no eliminará todas las claves de un usuario determinado para evitar perder todo acceso SSH.
Ejemplo de Playbook
Ejemplo simple:
# example.yml
- hosts: web_servers
roles:
- calidae.authorized_keys
vars:
authorized_keys_present:
root:
- '{{ lookup("file", "public_keys/alice") }}'
ubuntu:
- '{{ lookup("file", "public_keys/alice") }}'
- '{{ lookup("file", "public_keys/beth") }}'
authorized_keys_banned:
- '{{ lookup("file", "public_keys/alice_old") }}'
- '{{ lookup("file", "public_keys/claire") }}'
- 'ssh-rsa AAAAB3Nza..(algunos bytes omitidos)..bCRkh7ReBbpx daisy@oficina'
- hosts: db_servers
roles:
- calidae.authorized_keys
vars:
authorized_keys_exclusive:
root:
- '{{ lookup("file", "public_keys/alice") }}'
- '{{ lookup("file", "public_keys/emilie") }}'
ubuntu: [] # esto no agregará ni eliminará ninguna clave para ese usuario.
ansible-playbook example.yml --diff --check
Ejemplo Avanzado:
Coloca tus claves públicas en un directorio de archivos de un rol personalizado que dependa de calidae.authorized_keys. Declara authorized_keys_banned
como una variable del rol (no como predeterminada) para que sea difícil de sobrescribir. Usa authorized_keys_present
o authorized_keys_exclusive
para agregar claves dependiendo del control que necesites para cada host.
# roles/myorg.authorized_keys/meta/main.yml
dependencies:
- calidae.authorized_keys
# roles/myorg.authorized_keys/vars/main.yml
alice: '{{ lookup("file", "public_keys/alice") }}'
beth: '{{ lookup("file", "public_keys/beth") }}'
claire: '{{ lookup("file", "public_keys/claire") }}'
daisy: 'ssh-rsa AAAAB3Nza..(algunos bytes omitidos)..bCRkh7ReBbpx daisy@oficina'
emilie: '{{ lookup("file", "public_keys/emilie") }}'
authorized_keys_banned:
- '{{ daisy }}'
# group_vars/web_servers.yml
authorized_keys_present:
root:
- '{{ alice }}'
ubuntu:
- '{{ beth }}'
- '{{ claire }}'
# group_vars/sftp.yml
authorized_keys_present:
root:
- '{{ alice }}'
- '{{ emilie }}'
customer:
- 'ssh-rsa AAAAB3Nza..(algunos bytes omitidos)..t1F0Q5Y2AN customer@somesystem'
# group_vars/db_servers.yml
authorized_keys_exclusive:
root:
- '{{ alice }}'
# plays/site.yml
- hosts: all
roles:
- myorg.authorized_keys
ansible-playbook plays/site.yml
Licencia
BSD
Información del Autor
Calidae https://www.calidae.com
ansible-galaxy install calidaedev.authorized_keys