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

プロジェクトについて

Manage ssh authorized keys

インストール
ansible-galaxy install calidaedev.authorized_keys
ライセンス
Unknown
ダウンロード
9.4k
所有者
Calidae Digital Craftsmanship