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_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 calidaedev.authorized_keys