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
Defaults env_keep+=SSH_AUTH_SOCK
...
%wheel ALL=(ALL) ALL
LDAP エントリーは以下のようになります。
sudo defaults sudo rule
# 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 パッケージがインストールされていることを確認します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ~]$ rpm -q sssd-common
~]$ rpm -q sssd-common
sssd.conf
ファイルを開きます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow ~]# vim /etc/sssd/sssd.conf
~]# vim /etc/sssd/sssd.conf
- SSSD が管理するサービス一覧に sudo サービスを追加します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow [sssd] services = nss,pam,sudo ....
[sssd] services = nss,pam,sudo ....
- 新しい [sudo] サービス設定セクションを作成します。このセクションは空白のままにすることができます。1 つの設定可能なオプションは 1 つしかなく、sudo がピリオドの前または後に評価するための設定可能です。ただし、このセクションでは、SSSD が sudo サービスを認識し、デフォルト設定を提供する必要があります。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow [sudo]
[sudo]
- sudo 情報は、SSSD 設定の設定済みの LDAP ドメインから読み取られるため、LDAP ドメインが利用可能でなければなりません。LDAP プロバイダーの場合、これらのパラメーターが必要です。
- ディレクトリータイプ sudo_provider。これは常に ldap です。
- 検索ベースである ldap_sudo_search_base。
- LDAP サーバーの URI ldap_uri。
以下に例を示します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow [domain/LDAP] id_provider = ldap sudo_provider = ldap ldap_uri = ldap://example.com ldap_sudo_search_base = ou=sudoers,dc=example,dc=com
[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 認証を実行するために必要な追加のパラメーターがあります。Copy to Clipboard Copied! Toggle word wrap Toggle overflow [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=com ldap_sasl_mech = GSSAPI ldap_sasl_authid = host/hostname.example.com ldap_sasl_realm = EXAMPLE.COM krb5_server = ipa.example.com
[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=com ldap_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 つの更新間隔は別々に設定されます。以下に例を示します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow [domain/LDAP] ... ldap_sudo_full_refresh_interval=86400 ldap_sudo_smart_refresh_interval=3600
[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 を設定します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow ~]# vim /etc/nsswitch.conf sudoers: files sss
~]# vim /etc/nsswitch.conf sudoers: files sss
- SSSD を再起動します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ~]# service sssd restart
~]# service sssd restart