Turgon37.sudoers

Ansible Role Sudo/Sudoers

ビルドステータス ライセンス Ansible Role

説明

:grey_exclamation: このロールを使用する前に、私のAnsibleロールはすべて私のITインフラに完全に書かれていることを理解してください。したがって、できるだけ一般的であっても、必ずしもあなたのニーズに合致するとは限りません。何を行うかを慎重に分析し、安全にサーバーにインストールできるかどうかを評価することをお勧めします。

このロールはsudoを設定します。

必要条件

Ansible >= 2.4が必要です。

依存関係

OSファミリー

このロールはDebianとCentOSで使用できます。

特徴

現時点で、このロールは次のことに使用できます:

  • sudoをインストールする
  • デフォルトおよびコマンドルールを設定する
  • 他のロールがsudoルールを含むことを許可する疑似「タイプ」を提供する
  • ローカルファクト

設定

ロール

上書きできるすべての変数は、defaults/main.ymlファイルおよび下の表に格納されています。デフォルト値については、このファイルを参照してください。

名称 タイプ/値 説明
sudoers__sss ブール値 sssバックエンドでsudoを使用するために必要なパッケージをインストールする
sudoers__defaults_(global/group/host) 辞書/文字列のリスト ロールレベルでのsudoersのデフォルト設定を宣言する
sudoers__purge ブール値 trueの場合、このロールによって直接処理されていないすべてのsudoルールを削除する
sudoers__ansible_managed_key 文字列 Ansibleによって管理されているsudoルールを識別するための文字列
sudoers__rules_(global/group/host) ルールの辞書 (下記参照) ロールレベルで適用するsudoersルール

Sudoルール

このロールは、他のロールから使用できる疑似「タイプ」を提供します。これにより、他のロールがこのsudoersロールの範囲外で一連のsudoルールを宣言し、プレイブックで適用された後に実行できます。

使用するには、次のようにタスクを宣言します。

- name: ROLE用のsudoersルールを設定
  include_role:
    name: sudoers
    tasks_from: types/sudo_rule
  vars:
    sudoers__sudo_rule: {}

ルール設定の項目はすべて、sudoers__sudo_ruleという名前の変数の下に置く必要があります。

名称 タイプ/値 説明
name 文字列 ルールファイルの名前(スペースを含まないこと)
state 列挙 absent/present 必要に応じて削除するルールの状態
defaults デフォルトのリスト (下記参照) このルールに適用するsudoersの「defaults」ディレクティブのリスト
users 文字列のリスト このルールが適用されるユーザーのリスト
hosts 文字列のリスト このルールが適用されるホストのオプションリスト(デフォルトはALL)
commands コマンドのリスト (下記参照) コマンド定義のリスト
comment 文字列 ファイルに含めるオプションのコメント
"defaults" ディレクティブ

sudoの "defaults" ディレクティブはオプションの値を取ることができるため、ansibleは各defaultsディレクティブに対して2つの形式をサポートします:

Defaults   always_set_home
Defaults   listpw = always
  • 単純な文字列
  • マッピング

文字列バージョンは最も使用が簡単で、文字列はsudoキーワードDefaultsの後ろに単純に配置されます。

マッピングバージョンはより細かい設定を可能にします。まず、sudo Defaultsディレクティブはホスト、ユーザー、コマンド、およびrunasフィルタリングをサポートすることを認識してください。ただし、デフォルトディレクティブのために1つのフィルタ条件しか選択できません。したがって、このansibleロールは、複数のフィルタリングキーを設定した場合、以前のキーの順序を優先順位として使用します。

ディレクティブが値を必要とする場合、ディレクティブ名をマッピングのキーとして設定し、その値をキーの値として関連付ける必要があります。
ディレクティブが名前だけ(例えば、requiretty)の場合、静的な単語 "defaults" をキーとして、ディレクティブの名前を値として設定する必要があります(制限があります)。

例えば、"requiretty"をuser1ユーザーに適用するには次の変数を設定します:

sudoers__sudo_rule:
  name: rule1
  defaults:
    - defaults: requiretty
      user: user1

そして、"listpw"を適用するには次のように設定します:

sudoers__sudo_rule:
  name: rule1
  defaults:
    - listpw: always
      user: user1

このように、これらの辞書キーは、defaults仕様の内部で利用可能です:

名称 使用方法
defaults: NAME 値がないディレクティブ用
NAME: VALUE 値があるディレクティブ用
host: HOST 指定されたホストに対するDefaultsの効果を制限する
user: USER 指定されたユーザーに対するDefaultsの効果を制限する
command: COMMAND 指定されたコマンドに対するDefaultsの効果を制限する
runas: RUNAS_USER 指定されたrunasユーザーに対するDefaultsの効果を制限する
"commands" ディレクティブ

commandsキーの下の各コマンドは、ユーザーに制限ありまたはなしでシステムコマンドを実行させることができます。

コマンドブロックは、次のキーを許可します。

名称 タイプ/値 使用法
commands: 文字列または文字列のリスト コマンドパターン(構文仕様についてはman 5 sudoersを参照)
run_as_user: 文字列または文字列のリスト この/これらのコマンド(上記)をこの/これらのユーザーとしてのみ実行する
run_as_group: 文字列または文字列のリスト この/これらのコマンド(上記)をこの/これらのグループとしてのみ実行する
tags 文字列または文字列のリスト このコマンドに適用するタグまたはタグのリスト

例えば、ユーザー"user1"が特定の場所でパスワードなしでrootユーザーとしてlsを実行できるようにするには:

sudoers__sudo_rule:
  name: rule1
  commands:
   - commands: /bin/ls
     run_as_user: user1
     run_as_group: root
     tags: NOPASSWD

ファクト

デフォルトでは、ローカルファクトはインストールされ、次の変数が公開されます:

  • ansible_local.sudoers.version_full
  • ansible_local.sudoers.version_major

プレイブック

次のようにプレイブックで使用します:

- hosts: all
  roles:
    - turgon37.sudoers

インベントリ

  • デフォルトの設定を宣言します
sudoers__defaults_global:
  - always_set_home
  - insults
  - listpw: always
  - mailsub: "[PRODUCTION][%h][SUDO SECURITY]"
  - mailto: [email protected]
  - mail_no_user
  - mail_no_perms
  - mail_no_host
  - mail_badpass
  - passprompt_override
  - pwfeedback
  - secure_path: /sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin
  - '!visiblepw'
  • sssdとの使用
# sudoがLDAPからルールを取得するために必要
sudoers__sss: true
  • 他のロールからsudoルールを宣言します
- name: ROLE用のsudoersルールを設定
  include_role:
    name: sudoers
    tasks_from: types/sudo_rule
  vars:
    sudoers__sudo_rule:
      name: role__autogenerated_rule_10
      remove_using_regexp:
        - role__autogenerated_rule_0[0-9]+
      force_remove_using_regexp: true
      users: '{{ role__user }}'
      hosts: ALL
      comment: Autogenerated rule for role
      commands:
        - commands: /bin/ls
          run_as_user: '{{ role__another_user }}'
          run_as_group: root
          tags: NOPASSWD
        - commands: /bin/cat /home/[a-zA-Z]*/.ssh/config
          run_as_user: ALL
          run_as_group: root
      defaults:
        - defaults: '!requiretty'
          user: '{{ role__user }}'
      state: present
プロジェクトについて

This role configure sudoers file

インストール
ansible-galaxy install Turgon37.sudoers
ライセンス
mit
ダウンロード
4.8k
所有者
Ingénieur, Informaticien, curieux de nouvelles technologies. Passionné par le libre et l'esprit de communauté