calidaedev.authorized_keys

授权密钥

通过 authorized_key Ansible 模块管理 SSH 授权密钥。

角色变量

默认变量:

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_presentauthorized_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 calidaedev.authorized_keys
许可证
Unknown
下载
9.4k
拥有者
Calidae Digital Craftsmanship