calidaedev.authorized_keys
Erlaubte Schlüssel
Verwalten Sie SSH-erlaubte Schlüssel über das Ansible-Modul authorized_key
.
Rollenvariablen
Standardvariablen:
authorized_keys_present: {root: []}
authorized_keys_banned: []
authorized_keys_exclusive: {}
authorized_keys_present
kann verwendet werden, um die erlaubten Schlüssel für jeden Benutzer auf jedem Host anzugeben. Standardmäßig enthält es den Benutzer root ohne Schlüssel.
authorized_keys_banned
kann verwendet werden, um eine Reihe von erlaubten Schlüsseln für beliebige Benutzer in authorized_keys_present
zu entfernen. Es kann verwendet werden, um Schlüssel in der gesamten Inventarliste zu entfernen, sobald sie rotiert oder kompromittiert wurden oder wenn deren Aussteller alle Zugriffe widerrufen haben. Standardmäßig entfernt es alle hier aufgeführten Schlüssel für den Benutzer root.
Wenn eine genaue und präzise Kontrolle benötigt wird, verwenden Sie authorized_keys_exclusive
. Es installiert die angegebenen Schlüssel und entfernt auch alle zusätzlichen Schlüssel, die auf dem Server gefunden werden, um eine konsistente Zugriffskontrolle trotz konfigurationsbedingter Abweichungen zu gewährleisten. Wenn die Schlüsselliste leer ist, wird diese Option nicht alle Schlüssel für einen bestimmten Benutzer entfernen, um zu verhindern, dass der gesamte SSH-Zugriff verloren geht.
Beispiel-Playbook
Ein einfaches Beispiel:
# 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..(einige Bytes ausgelassen)..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: [] # dies wird keinen Schlüssel für diesen Benutzer hinzufügen oder entfernen!
ansible-playbook example.yml --diff --check
Fortgeschrittenes Beispiel:
Legen Sie Ihre öffentlichen Schlüssel in ein Verzeichnis für Dateien einer benutzerdefinierten Rolle ab, die von calidae.authorized_keys abhängt. Geben Sie authorized_keys_banned
als Rollenvariable an (nicht als Standard), um es schwer zu überschreiben. Verwenden Sie entweder authorized_keys_present
oder authorized_keys_exclusive
, um Schlüssel je nach benötigter Kontrolle für jeden Host hinzuzufügen.
# 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..(einige Bytes ausgelassen)..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..(einige Bytes ausgelassen)..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
Lizenz
BSD
Autoreninformationen
Calidae https://www.calidae.com
ansible-galaxy install calidaedev.authorized_keys