calidaedev.authorized_keys
Clés Autorisées
Gérez les clés SSH autorisées grâce au module Ansible authorized_key
.
Variables de Rôle
Variables par défaut :
authorized_keys_present: {root: []}
authorized_keys_banned: []
authorized_keys_exclusive: {}
authorized_keys_present
peut être utilisé pour indiquer les clés autorisées pour chaque utilisateur sur chaque hôte. Par défaut, il inclut l'utilisateur root sans clés.
authorized_keys_banned
peut être utilisé pour supprimer un ensemble de clés autorisées pour tout utilisateur dans authorized_keys_present
. Il peut être utilisé pour retirer des clés dans toute l'inventaire une fois qu'elles ont été renouvelées ou compromises, ou si leurs émetteurs ont été révoqués d'accès. Par défaut, cela supprimera toutes les clés listées ici pour l'utilisateur root.
Si un contrôle plus granulaire et précis est nécessaire, utilisez authorized_keys_exclusive
. Cela installera les clés indiquées et supprimera également toute clé supplémentaire trouvée sur le serveur, garantissant ainsi un contrôle d'accès cohérent malgré les écarts de configuration. Si la liste des clés est vide, cette option ne supprimera pas toutes les clés pour un utilisateur donné afin d'éviter de perdre tout accès SSH.
Exemple de Playbook
Exemple 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..(quelques octets omis)..bCRkh7ReBbpx daisy@office'
- hosts: db_servers
roles:
- calidae.authorized_keys
vars:
authorized_keys_exclusive:
root:
- '{{ lookup("file", "public_keys/alice") }}'
- '{{ lookup("file", "public_keys/emilie") }}'
ubuntu: [] # cela n'ajoutera ni ne supprimera aucune clé pour cet utilisateur !
ansible-playbook example.yml --diff --check
Exemple Avancé :
Mettez vos clés publiques dans un répertoire de fichiers d'un rôle personnalisé dépendant de calidae.authorized_keys. Déclarez authorized_keys_banned
comme une variable de rôle (et non par défaut) pour qu'elle soit difficile à remplacer. Utilisez soit authorized_keys_present
soit authorized_keys_exclusive
pour ajouter des clés en fonction du contrôle dont vous avez besoin pour chaque hôte.
# 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..(quelques octets omis)..bCRkh7ReBbpx daisy@office'
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..(quelques octets omis)..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
Licence
BSD
Informations sur l'Auteur
Calidae https://www.calidae.com
ansible-galaxy install calidaedev.authorized_keys