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

О проекте

Manage ssh authorized keys

Установить
ansible-galaxy install calidae/ansible-role-authorized_keys
Лицензия
Unknown
Загрузки
8444
Владелец
Calidae Digital Craftsmanship