authorized_keys
Авторизованные ключи
Управляйте авторизованными ключами SSH с помощью модуля Ansible authorized_key
.
Переменные роли
Переменные по умолчанию:
authorized_keys_present: {root: []}
authorized_keys_banned: []
authorized_keys_exclusive: {}
authorized_keys_present
можно использовать для указания авторизованных ключей для каждого пользователя на каждом хосте. По умолчанию включает пользователя root без ключей.
authorized_keys_banned
используется для удаления заданного набора авторизованных ключей для любого пользователя из authorized_keys_present
. Это можно использовать для удаления ключей по всему инвентарю, если они были скомпрометированы или их выдающие органы отозвали доступ. По умолчанию удаляет все ключи, указанные здесь, для пользователя root.
Если вам требуется более детальный контроль, используйте authorized_keys_exclusive
. Он как установит указанные ключи, так и удалит любые дополнительные ключи, найденные на сервере, обеспечивая единообразный контроль доступа, несмотря на изменения в конфигурации. Если список ключей пуст, эта опция не удалит все ключи для указанного пользователя, чтобы не потерять доступ по SSH.
Пример плейбука
Простой пример:
# 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..(некоторые байты опущены)..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: [] # это не добавит и не удалит никаких ключей для этого пользователя!
ansible-playbook example.yml --diff --check
Расширенный пример:
Поместите ваши открытые ключи в каталог файлов настраиваемой роли, зависящей от calidae.authorized_keys. Укажите authorized_keys_banned
в качестве переменной роли (не по умолчанию), чтобы ее было сложно переопределить. Используйте либо authorized_keys_present
, либо authorized_keys_exclusive
, чтобы добавлять ключи в зависимости от того, какой контроль вам нужен для каждого хоста.
# 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..(некоторые байты опущены)..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..(некоторые байты опущены)..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
Лицензия
BSD
Информация об авторе
Calidae https://www.calidae.com
ansible-galaxy install calidae/ansible-role-authorized_keys