第21章 Ansible Playbook を使用した sudo アクセスの管理


Ansible Playbook を使用して Identity Management でユーザーの sudo アクセスを管理する方法を説明します。Identity Management でユーザーに sudo アクセスを許可する方法の詳細は、IdM クライアントの IdM ユーザーへの sudo アクセスの許可 を参照してください。

21.1. Ansible Playbook を使用して IdM クライアント上の IdM ユーザーの sudo アクセス権を付与する

Identity Management (IdM) では、特定の IdM ホストの IdM ユーザーアカウントに sudo アクセスが付与されるようにできます。

この手順では、idm_user_reboot という名前の sudo ルールが存在するように設定します。このルールは、idmclient マシンで /usr/sbin/reboot コマンドを実行するパーミッションを idm_user に付与します。

前提条件

  • 次の要件を満たすように Ansible コントロールノードを設定している。

    • Ansible バージョン 2.15 以降を使用している。
    • freeipa.ansible_freeipa コレクションがインストールされている。
    • ~/MyPlaybooks/ ディレクトリーに、IdM サーバーの完全修飾ドメイン名 (FQDN) を使用して Ansible インベントリーファイル が作成されている (この例の場合)。
    • secret.yml Ansible vault に ipaadmin_password が保存されており、secret.yml ファイルを保護するパスワードを格納しているファイルにアクセスできる (この例の場合)。
  • ターゲットノード (freeipa.ansible_freeipa モジュールが実行されるノード) が、IdM クライアント、サーバー、またはレプリカとして IdM ドメインに含まれている。
  • IdM に idm_user のユーザーアカウントが存在する状態にして、そのユーザーのパスワードを作成してアカウントのロックを解除している。コマンドラインを使用して新しい IdM ユーザーを追加する方法の詳細は、コマンドラインを使用したユーザーの追加 を参照してください。
  • idmclient にローカルの idm_user アカウントがない。(idm_user ユーザーは idmclient/etc/passwd ファイルに表示されていない)。

手順

  1. sudo コマンドを 1 つまたは複数追加します。

    1. ensure-reboot-sudocmd-is-present.yml Ansible Playbook を作成し、sudo コマンドの IdM データベースに /usr/sbin/reboot コマンドが存在するようにします。このステップを簡略化するために、/usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/sudocmd/ensure-sudocmd-is-present.yml ファイルの例をコピーして変更できます。

      ---
      - name: Playbook to manage sudo command
        hosts: ipaserver
      
        vars_files:
        - /home/user_name/MyPlaybooks/secret.yml
        tasks:
        # Ensure sudo command is present
        - freeipa.ansible_freeipa.ipasudocmd:
            ipaadmin_password: "{{ ipaadmin_password }}"
            name: /usr/sbin/reboot
            state: present
    2. Playbook を実行します。

      $ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/ensure-reboot-sudocmd-is-present.yml
  2. コマンドを参照する sudo ルールを作成します。

    1. ensure-sudorule-for-idmuser-on-idmclient-is-present.yml Ansible Playbook を作成します。この Playbook では、sudo コマンドのエントリーを使用して、sudo ルールが存在する状態にします。sudo ルールは、idm_useridmclient マシンを再起動することを許可します。このステップを簡略化するために、/usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/sudorule/ensure-sudorule-is-present.yml ファイルの例をコピーして変更できます。

      ---
      - name: Tests
        hosts: ipaserver
      
        vars_files:
        - /home/user_name/MyPlaybooks/secret.yml
        tasks:
        # Ensure a sudorule is present granting idm_user the permission to run /usr/sbin/reboot on idmclient
        - freeipa.ansible_freeipa.ipasudorule:
            ipaadmin_password: "{{ ipaadmin_password }}"
            name: idm_user_reboot
            description: A test sudo rule.
            allow_sudocmd: /usr/sbin/reboot
            host: idmclient.idm.example.com
            user: idm_user
            state: present
    2. Playbook を実行します。

      $ ansible-playbook -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/ensure-sudorule-for-idmuser-on-idmclient-is-present.yml

検証

idm_usersudo を使用して idmclient を再起動できることを確認し、IdM サーバーに存在するように設定した sudo ルールが idmclient で機能することをテストします。サーバーに加えられた変更がクライアントで反映されるまで数分かかる場合があります。

  1. idmclientidm_user としてログインします。
  2. sudo を使用してマシンを再起動します。プロンプトが表示されたら、idm_user のパスワードを入力します。

    $ sudo /usr/sbin/reboot
    [sudo] password for idm_user:

sudo が正しく設定されている場合には、マシンが再起動します。

Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2026 Red Hat
トップに戻る