calidaedev.authorized_keys
Klucze autoryzowane
Zarządzaj kluczami autoryzowanymi SSH za pomocą modułu Ansible authorized_key
.
Zmienne roli
Domyślne zmienne:
authorized_keys_present: {root: []}
authorized_keys_banned: []
authorized_keys_exclusive: {}
authorized_keys_present
służy do określenia autoryzowanych kluczy dla każdego użytkownika na każdym hoście. Domyślnie obejmuje użytkownika root bez kluczy.
authorized_keys_banned
może być używane do usunięcia zestawu autoryzowanych kluczy dla dowolnego użytkownika z authorized_keys_present
. Może być używane do usunięcia kluczy ze wszystkich hostów, gdy zostały obrócone, skompromitowane lub jeśli ich wystawcy cofnęli dostęp. Domyślnie usunie wszystkie klucze wymienione tutaj dla użytkownika root.
Jeśli potrzebujesz szczegółowej kontroli, użyj authorized_keys_exclusive
. Zainstaluje to podane klucze i usunie każdy dodatkowy klucz znajdujący się na serwerze, zapewniając spójną kontrolę dostępu mimo zmian w konfiguracji. Jeśli lista kluczy jest pusta, ta opcja nie usunie wszystkich kluczy dla danego użytkownika, aby uniknąć utraty dostępu SSH.
Przykład playbooka
Prosty przykład:
# 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..(kilka bajtów pominięto)..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: [] # to nie doda ani nie usunie żadnego klucza dla tego użytkownika!
ansible-playbook example.yml --diff --check
Zaawansowany przykład:
Umieść swoje klucze publiczne w katalogu plików niestandardowej roli, w zależności od calidae.authorized_keys. Określ authorized_keys_banned
jako zmienną roli (nie jako domyślną), aby trudno było ją nadpisać. Użyj albo authorized_keys_present
, albo authorized_keys_exclusive
, aby dodać klucze w zależności od potrzebnej kontroli dla każdego hosta.
# 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..(kilka bajtów pominięto)..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..(kilka bajtów pominięto)..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
Licencja
BSD
Informacje o autorze
Calidae https://www.calidae.com
ansible-galaxy install calidaedev.authorized_keys