13.2.8. サービスの設定: sudo
sudo、LDAP、および SSSD について
sudo ルールは
sudoers
ファイルで定義されます。これは、一貫性を保つためにすべてのマシンに個別に分散する必要があります。
大規模な環境用に管理者が管理する方法の 1 つに、sudo 設定を中央の LDAP ディレクトリーに保存し、各ローカルシステムがその LDAP ディレクトリーを指すように設定することです。つまり、更新を 1 つの場所で行うだけで、新しいルールはローカルシステムによって自動的に認識されます。
sudo-LDAP 設定では、各 sudo ルールは LDAP エントリーとして保存され、sudo ルールのコンポーネントは LDAP 属性で定義されます。
sudoers ルールは以下のようになります。
Defaults env_keep+=SSH_AUTH_SOCK ... %wheel ALL=(ALL) ALL
LDAP エントリーは以下のようになります。
# sudo defaults dn: cn=defaults,ou=SUDOers,dc=example,dc=com objectClass: top objectClass: sudoRole cn: defaults description: Default sudoOptions go here sudoOption: env_keep+=SSH_AUTH_SOCK # sudo rule dn: cn=%wheel,ou=SUDOers,dc=example,dc=com objectClass: top objectClass: sudoRole cn: %wheel sudoUser: %wheel sudoHost: ALL sudoCommand: ALL
注記
SSSD は、
sudoHost
属性の値に応じてローカルシステムに適用される sudo ルールのみをキャッシュします。つまり、sudoHost
の値が ALL に設定されていると、ホスト名と一致する正規表現、システムの netgroup と一致する正規表現を使用するか、システムのホスト名、完全修飾ドメイン名、または IP アドレスと一致させます。
sudo サービスは、LDAP サーバーを参照し、その LDAP エントリーからルール設定を取得するように設定できます。sudo 設定を LDAP ディレクトリーにポイントするのではなく、SSSD を参照するように設定できます。SSSD は、sudo が必要とするすべての情報を保存し、ユーザーが sudo関連操作を試行するたびに、最新の sudo 設定を SSSD ディレクトリーからプルできます。ただし、SSSD は、LDAP サーバーがオフラインであっても、その集中 LDAP 設定を使用してタスクを実行できるように、すべての sudo タイルもキャッシュし ます。
手順13.5 SSSD を使用した sudo の設定
SSSD sudo 設定オプションはすべて、man ページの sssd-ldap(5) に記載されています。
- sssd-common パッケージがインストールされていることを確認します。
~]$ rpm -q sssd-common
sssd.conf
ファイルを開きます。~]# vim /etc/sssd/sssd.conf
- SSSD が管理するサービス一覧に sudo サービスを追加します。
[sssd] services = nss,pam,
sudo
.... - 新しい [sudo] サービス設定セクションを作成します。このセクションは空白のままにすることができます。1 つの設定可能なオプションは 1 つしかなく、sudo がピリオドの前または後に評価するための設定可能です。ただし、このセクションでは、SSSD が sudo サービスを認識し、デフォルト設定を提供する必要があります。
[sudo]
- sudo 情報は、SSSD 設定の設定済みの LDAP ドメインから読み取られるため、LDAP ドメインが利用可能でなければなりません。LDAP プロバイダーの場合、これらのパラメーターが必要です。
- ディレクトリータイプ sudo_provider。これは常に ldap です。
- 検索ベースである ldap_sudo_search_base。
- LDAP サーバーの URI ldap_uri。
以下に例を示します。[domain/LDAP] id_provider = ldap sudo_provider = ldap ldap_uri = ldap://example.com ldap_sudo_search_base = ou=sudoers,dc=example,dc=com
Identity Management(IdM または IPA)プロバイダーの場合、サーバーへの接続時に Kerberos 認証を実行するために必要な追加のパラメーターがあります。[domain/IDM] id_provider = ipa ipa_domain = example.com ipa_server = ipa.example.com
ldap_tls_cacert = /etc/ipa/ca.crt
sudo_provider = ldap ldap_uri = ldap://ipa.example.com ldap_sudo_search_base = ou=sudoers,dc=example,dc=comldap_sasl_mech = GSSAPI
ldap_sasl_authid = host/hostname.example.com
ldap_sasl_realm = EXAMPLE.COM
krb5_server = ipa.example.com
注記Identity Management プロバイダーの sudo_provider タイプは ldap です。 - sudo ルールキャッシュの更新に使用する間隔を設定します。特定のシステムユーザーの キャッシュは常にチェックされ、そのユーザーがタスクを実行するたびに更新されます。ただし、SSSD は、ローカルシステムに関連するすべてのルールをキャッシュします。この完全なキャッシュは 2 つの方法で更新されます。
- 最後に完全更新からのルールのみの変更(ldap_sudo_smart_refresh_interval、秒単位の時間)、デフォルトは 15 分です。
- 完全にキャッシュ全体をダンプし、LDAP サーバーの現在のすべてのルール(ldap_sudo_full_refresh_interval、時間(秒単位))にプルします。デフォルトは 6 時間です。
これらの 2 つの更新間隔は別々に設定されます。以下に例を示します。[domain/LDAP] ... ldap_sudo_full_refresh_interval=86400 ldap_sudo_smart_refresh_interval=3600
注記SSSD は、ローカルシステムに適用される sudo ルールのみをキャッシュします。つまり、sudoHost
の値が ALL に設定されていると、ホスト名と一致する正規表現、システムの netgroup と一致する正規表現を使用するか、システムのホスト名、完全修飾ドメイン名、または IP アドレスと一致させます。 - 必要に応じて、sudo ルールに使用されるスキーマを変更する値を設定します。スキーマ要素は ldap_sudorule_* 属性で設定されます。デフォルトでは、スキーマ要素はすべて sudoers.ldap で定義されたスキーマを使用します。これらのデフォルトはほぼすべてのデプロイメントで使用されます。
sssd.conf
ファイルを保存して閉じます。nsswitch.conf
ファイルを編集して sss の場所を追加して、SSSD でルール設定を検索するように sudo を設定します。~]# vim /etc/nsswitch.conf sudoers: files
sss
- SSSD を再起動します。
~]# service sssd restart