7.4. アイデンティティープロバイダーと認証プロバイダー向け追加的設定

7.4.1. ユーザー名形式の調整

7.4.1.1. 完全なユーザー名の解析向け正規表現の定義

SSSD は、完全なユーザー名のストリングをユーザー名およびドメインのコンポーネントに解析します。SSSD はデフォルトにより、以下の Python シンタックスの正規表現を基本とする user_name@domain_name 形式で完全なユーザー名を解釈します。
(?P<name>[^@]+)@?(?P<domain>[^@]*$)

注記

Identity Management および Active Directory プロバイダーの場合、デフォルトによるユーザー名の形式は user_name@domain_name または NetBIOS_name\user_name です。
SSSD が完全なユーザー名を解釈する方法を調整するには、以下を実行します。
  1. /etc/sssd/sssd.conf ファイルを開きます。
  2. re_expression オプションを使用して、カスタム正規表現を定義します。
    1. すべてのドメイン向けに正規表現をグローバルに定義するには、re_expressionsssd.conf[sssd] セクションに追加します。
    2. 特定のドメイン向けに正規表現を個々に定義するには、re_expressionsssd.conf の対応するドメインセクションに追加します。
たとえば、LDAP ドメイン向けに正規表現を設定するには、以下を実行します。
[domain/LDAP]
[... file truncated ...]
re_expression = (?P<domain>[^\\]*?)\\?(?P<name>[^\\]+$)
詳細については、sssd.conf(5) の man ページにある SPECIAL SECTIONS および DOMAIN SECTIONS 部分の re_expression を参照してください。

7.4.1.2. SSSD による完全なユーザー名のプリント方法の定義

/etc/sssd/sssd.conf ファイル内で use_fully_qualified_names オプションが有効となっている場合、SSSD はデフォルトにより、以下の展開を基本とする name@domain 形式で完全なユーザー名をプリントします。
%1$s@%2$s

注記

use_fully_qualified_names が設定されていない場合、または信頼できるドメイン向けに false に明示的に設定されている場合、ドメインコンポーネントなしにユーザー名のみがプリントされます。
SSSD が完全なユーザー名をプリントする形式を調整するには、以下を実行します。
  1. /etc/sssd/sssd.conf ファイルを開きます。
  2. full_name_format オプションを使用して、完全なユーザー名形式の展開を定義します。
    1. すべてのドメイン向けの展開をグローバルに定義するには、full_name_formatsssd.conf[sssd] セクションに追加します。
    2. 特定のドメイン向けに展開を個々に定義するには、full_name_formatsssd.conf の対応するドメインセクションに追加します。
詳細については、sssd.conf(5) の man ページにある SPECIAL SECTIONS および DOMAIN SECTIONS 部分の full_name_format を参照してください。
名前の設定によっては、SSSD が名前のドメインコンポーネントを削除し、認証エラーが発生する場合もあります。このため、full_name_format を標準以外の値に設定すると、より標準的な値への変更を促す警告が表示されます。

7.4.2. オフライン認証の有効化

SSSD はデフォルトで、ユーザーの認証情報をキャッシュしません。認証要求の処理の際、SSSD は常にアイデンティティープロバイダーと連絡を取ります。プロバイダーと連絡が取れない場合、ユーザー認証に失敗することになります。

重要

SSSD はプレーンテキストでパスワードをキャッシュすることはありません。ハッシュ化されたパスワードのみを保存します。
アイデンティティープロバイダーを利用できない場合であっても、ユーザーが確実に認証できるようにするために、認認証情報のキャッシングを有効にします。
  1. /etc/sssd/sssd.conf ファイルを開きます。
  2. ドメインセクションにおいて、cache_credentials = true 設定を追加します。
    [domain/domain_name]
    cache_credentials = true
  3. 推奨 (オプション) アイデンティティープロバイダーを利用できない場合、SSSD がオフライン認証を許容する制限時間を設定します。
    1. SSSD と機能する PAM サービスを設定します。「サービスの設定: PAM」 を参照してください。
    2. offline_credentials_expiration オプションを使用して制限時間を指定します。たとえば、ユーザーが最後にログインした時から 3 日間はオフラインでの認証が可能と指定する場合、以下のようになります。
      [pam]
      offline_credentials_expiration = 3
offline_credentials_expiration の詳細については、sssd.conf(5) の man ページを参照してください。

7.4.3. DNS Service Discovery の設定

アイデンティティーまたは認証サーバーが /etc/sssd/sssd.conf ファイルで明示的に定義されていない場合、SSSD は DNS service discovery を使用してサーバーを動的に発見することができます。[1]
たとえば、sssd.confid_provider = ldap 設定が格納されているが、ldap_uri オプションがホスト名または IP アドレスを何も指定しない場合、SSSD は DNS service discovery を使用してサーバーを動的に発見します。

注記

SSSD はバックアップサーバーを動的に発見することはできません。プライマリーサーバーのみの発見となります。

DNS Service Discovery 用に SSSD を設定

  1. /etc/sssd/sssd.conf ファイルを開きます。
  2. プライマリーサーバー値を _srv_ に設定します。LDAP プロバイダーの場合、ldap_uri オプションを使用してプライマリーサーバーを設定します。
    [domain/domain_name]
    id_provider = ldap
    ldap_uri = _srv_
  3. サービスタイプを設定することで、パスワード変更プロバイダーで service discovery を有効にします。
    [domain/domain_name]
    id_provider = ldap
    ldap_uri = _srv_
    
    chpass_provider = ldap
    ldap_chpass_dns_service_name = ldap
  4. オプション デフォルトでは、service discovery はシステムホスト名のドメイン部分をドメイン名に使用します。別の DNS ドメインを使用するには、dns_discovery_domain オプションでドメイン名を指定します。
  5. オプション デフォルトでは、service discovery は LDAP サービスタイプをスキャンします。別のサービスタイプを使用するには、ldap_dns_service_name オプションでタイプを指定します。
  6. オプション デフォルトでは、SSSD は IPv4 アドレスのルックアップを試みます。この試みに失敗した場合、SSSD は IPv6 アドレスのルックアップを試みます。この動作をカスタマイズするには、lookup_family_order オプションを使用します。詳細は、sssd.conf(5) の man ページを参照してください。
  7. service discovery を使用したいすべてのサービスで、DNS レコードを DNS サーバーに追加します。
    _service._protocol._domain TTL priority weight port host_name

7.4.4. simple アクセスプロバイダーを使用したアクセス制御の定義

simple アクセスプロバイダーは、ユーザー名またはグループのリストを基にアクセスを許可または拒否します。つまり、特定のマシンへのアクセスを制限することができます。
たとえば、企業のノートパソコンに simple アクセスプロバイダーを使用すると、特定のユーザーまたは特定のグループのみに限定したアクセスが可能となります。他のユーザーまたはグループは、設定された認証プロバイダーに対して正しく認証されても、ログインできません。

simple アクセスプロバイダーのルールの設定

  1. /etc/sssd/sssd.conf ファイルを開きます。
  2. access_provider オプションを simple に設定します。
    [domain/domain_name]
    access_provider = simple
  3. ユーザーのアクセス制御のルールを定義します。以下のうち 1 つを選択してください。
    1. ユーザーのアクセスを許可する場合、simple_allow_users オプションを使用します。
    2. ユーザーのアクセスを拒否する場合、simple_deny_users オプションを使用します。

      重要

      特定のユーザーにアクセスを許可する方が、拒否するよりも安全だと考えられています。特定のユーザーへのアクセスを拒否すると、自動的にその他全員に対してアクセスを許可することになります。
  4. グループのアクセス制御のルールを定義します。以下のうち 1 つを選択してください。
    1. グループのアクセスを許可するには、simple_allow_groups オプションを使用します。
    2. グループのアクセスを拒否するには、simple_deny_groups オプションを使用します。

      重要

      特定のグループにアクセスを許可する方が、拒否するよりも安全だと考えられています。特定のグループへのアクセスを拒否すると、自動的にその他全員に対してアクセスを許可することになります。
以下の例では、user1user2 および group1 のメンバーはアクセスが許可され、その他すべてのユーザーはアクセスを拒否されています。
[domain/domain_name]
access_provider = simple
simple_allow_users = user1, user2
simple_allow_groups = group1
詳細は、sssd-simple(5) の man ページを参照してください。

7.4.5. LDAP アクセスフィルターを使用したアクセス制御の定義

access_provider オプションが /etc/sssd/sssd.conf に設定されている場合、SSSD は指定されたアクセスプロバイダーを使用して、どのユーザーがシステムへのアクセスを許可されたのか判断します。使用中のアクセスプロバイダーが、LDAP プロバイダータイプの拡張子の場合、LDAP アクセス制御フィルターも指定できます。ユーザーは、システムへのアクセス許可を得るためには、指定されたフィルターと一致しなければなりません。
たとえば、Active Directory (AD) サーバーをアクセスプロバイダーとして使用する場合、Linux システムへのアクセスを指定した AD ユーザーだけに限定することができます。指定したフィルターと一致しないその他すべてのユーザーは、アクセスを拒否されます。

注記

アクセスフィルターは、LDAP ユーザーエントリーのみに適用されます。したがって、このタイプのアクセス制御をネスト化されたグループに使用しても機能しない場合があります。アクセス制御をネスト化されたグループに適用するには、simple アクセスプロバイダーを使用したアクセス制御の定義」 を参照してください。

重要

オフラインキャッシュを使用する場合、SSSD はユーザーの前回のオンラインでのログイン試行が正常だったかどうかを確認します。前回のオンラインでのログインが正常だったユーザーは、アクセスフィルターと一致しなくても、オフラインでもそのままログインできます。

SSSD を設定し、LDAP アクセスフィルターを適用

  1. /etc/sssd/sssd.conf ファイルを開きます。
  2. [domain] セクションで、LDAP アクセス制御フィルターを指定します。
    • LDAP アクセスプロバイダーには、ldap_access_filter オプションを使用します。詳細については sssd-ldap(5) の man ページを参照してください。
    • AD アクセスプロバイダーには、ad_access_filter オプションを使用します。詳細については、sssd-ad(5) の man ページを参照してください。
    たとえば、admins ユーザーグループに属し、unixHomeDirectory 属性セットを持つ AD ユーザーのみにアクセスを許可する場合、以下の設定を実行します。
    [domain/AD_domain_name]
    access provider = ad
    [... file truncated ...]
    ad_access_filter = (&(memberOf=cn=admins,ou=groups,dc=example,dc=com)(unixHomeDirectory=*))
SSSD は、エントリー内の authorizedServicehost 属性で結果をチェックすることもできます。実際にはユーザーエントリーや設定によって、LDAP フィルター、 authorizedServicehost のすべての評価が可能です。ldap_access_order パラメーターは、使用するすべてのアクセス制御方法を評価方法の順番で表示します。
[domain/example.com]
access_provider = ldap
ldap_access_filter = memberOf=cn=allowedusers,ou=Groups,dc=example,dc=com
ldap_access_order = filter, host, authorized_service
認証済みサービスや許可されたホストの評価に使用するユーザーエントリー内の属性は、カスタマイズが可能です。追加のアクセス制御パラメーターは、sssd-ldap(5) の man ページに記載されています。


[1] DNS service discovery は、アプリケーションが特定のタイプの特定のサービスについて、あるドメイン内の SRV 記録をチェックできるようにします。そして、必要とされるタイプと一致するサーバーを返します。DNS service discovery は、RFC 2782 で定義されています。