Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

23.2. Identity Management に証明書マッピングルールを設定

23.2.1. スマートカードにおける認証を設定するための証明書マッピングルール

証明書マッピングルールは、Identity Management (IdM) 管理者が特定のユーザーの証明書にアクセスしない場合に、シナリオで証明書を使用して認証できるため便利な方法です。通常、このようなアクセスがない理由は、証明書が外部認証局によって発行されたためです。特別なユースケースは、IdM ドメインが信頼関係にある Active Directory (AD) の証明書システムが発行した証明書によって表されます。
証明書マッピングルールは、スマートカードを使用するユーザーが多く、IdM 環境が大きい場合にも便利です。このような場合、完全な証明書を追加すると複雑になります。ほとんどの場合、発行先と発行者は予測可能であるため、完全な証明書よりも簡単に追加できます。システム管理者は、証明書マッピングルールを作成し、特定のユーザーに証明書を発行する前に、ユーザーエントリーに証明書マッピングデータを追加できます。証明書が発行されると、完全な証明書が自分のエントリーにアップロードされていなくても、ユーザーは証明書を使用してログインできるようになります。
さらに、証明書は一定間隔で更新する必要があるため、証明書マッピングルールは管理のオーバーヘッドを軽減します。ユーザーの証明書を更新する際に、管理者がユーザーエントリーを更新する必要がありません。たとえば、マッピングが SubjectIssuer の値に基づいている場合、および新しい証明書の Subject と Issuer が以前と同じ場合は、マッピングは引き続き適用されます。一方で、完全な証明書を使用した場合、管理者は古い証明書に置き換わる新しい証明書をユーザーエントリーにアップロードする必要があります。
証明書マッピングを設定するには、以下を実行します。
  1. 管理者は、証明書マッピングデータ (通常は発行者と題名)、または完全な証明書をユーザーアカウントに読み込む必要があります。
  2. ユーザーが IdM へのログインを問題なく行えるようにするために、管理者が証明書マッピングルールを作成する必要があります。
    • アカウントに、証明書マッピングデータエントリーが含まれる
    • 証明書マッピングデータエントリーが、証明書の情報と一致する
    マッピングルールを設定する個々のコンポーネントの詳細と、そのコンポーネントの取得方法および使用方法は、IdM での ID マッピングルールのコンポーネントおよび一致するルールで使用する証明書の発行者の取得を参照してください。

23.2.1.1. Active Directory ドメインとの信頼に対する証明書マッピングルール

本セクションでは、IdM デプロイメントが Active Directory (AD) ドメインと信頼関係にある場合に可能な、別の証明書マッピングのユースケースを簡単に説明します。
証明書マッピングルールは、信頼された AD 証明書システムが発行したスマートカード証明書を持つユーザーに対して、IdM リソースにアクセスするのに便利な方法です。AD 設定によっては、以下の状況が考えられます。

23.2.1.2. IdM における ID マッピングルールのコンポーネント

本セクションでは、IdM の ID マッピングルール のコンポーネントと、その設定方法を説明します。各コンポーネントには、オーバーライドできるデフォルト値があります。コンポーネントは、Web UI またはコマンドラインで定義できます。コマンドラインで、ipa certmaprule-add コマンドを使用して、ID マッピングルールが作成されます。
マッピングルール
マッピングルールコンポーネントでは、証明書を 1 人または複数のユーザーアカウントに関連付けます (またはマップします)。ルールは、証明書を目的のユーザーアカウントに関連付ける LDAP 検索フィルターを定義します。
さまざまな認証局 (CA) が発行する証明書にはさまざまなプロパティーがあり、さまざまなドメインで使用される可能性があります。そのため、IdM はマッピングルールを無条件に適用せず、適切な証明書にのみ適用されます。適切な証明書は、マッチングルールを使用して定義されます。
マッピングルールのオプションを空のままにすると、証明書は、DER でエンコードされたバイナリーファイルとして、userCertificate 属性で検索されることに注意してください。
--maprule オプションを使用して、コマンドラインでマッピングルールを定義します。
マッチングルール
ドメインリストは、ID マッピングルールの処理時に IdM がユーザーを検索する ID ドメインを指定します。このオプションを指定しないと、IdM は、IdM クライアントが所属しているローカルドメイン内でのみユーザーを検索します。
--domain オプションを使用して、コマンドラインでドメインを定義します。
優先度
複数のルールが証明書に適用される場合は、最も優先度が高いルールが優先されます。その他のルールはすべて無視されます。
  • 数値が低いほど、ID マッピングルールの優先度が高くなります。たとえば、優先度 1 のルールは、優先度 2 のルールよりも高く設定されています。
  • ルールに優先度の値が定義されていないと、優先度が最も低くなります。
--priority オプションを使用して、コマンドラインでマッピングルールの優先度を定義します。

例23.1 証明書マッピングルールの例 1

コマンドラインを使用して、その証明書の Subject が IdM のユーザーアカウントの certmapdata エントリーと一致している場合に限り、EXAMPLE.ORG 組織の スマートカード CA が発行する証明書の認証を可能にする証明書マッピングルール simple_rule を定義するには、次のコマンドを実行します。
# ipa certmaprule-add simple_rule --matchrule '<ISSUER>CN=Smart Card CA,O=EXAMPLE.ORG' --maprule '(ipacertmapdata=X509:<I>{issuer_dn!nss_x500}<S>{subject_dn!nss_x500})'

23.2.1.3. マッチングルールで使用する証明書から発行者の取得

この手順では、証明書から発行者情報を取得して、証明書マッピングルールのマッチングルールにコピーする方法を説明します。マッチングルールで必要な発行者の形式を取得するには、openssl x509 コマンドを使用します。

前提条件

  • .pem 形式または .crt 形式のユーザー証明書がある。

手順

  1. 証明書からユーザー情報を取得します。以下のように、openssl 証明書の表示および署名ユーティリティーを使用します。
    • リクエストのエンコードされたバージョンの出力を防ぐ -noout オプション
    • 発行者名を出力する -issuer オプション
    • 証明書を読み込む入力ファイル名を指定する -in オプション
    • RFC2253 値と共に -nameopt オプションを指定して、最初に最も具体的な相対識別名 (RDN) で出力を表示します。
    入力ファイルに Identity Management 証明書が含まれる場合は、コマンドの出力で、Organization 情報を使用して 発行者が定義されていることを示しています。
    # openssl x509 -noout -issuer -in idm_user.crt -nameopt RFC2253
    issuer=CN=Certificate Authority,O=REALM.EXAMPLE.COM
    入力ファイルに Active Directory 証明書が含まれる場合は、コマンドの出力で、ドメインコンポーネント の情報を使用して発行者が定義されていることを示しています。
    # # openssl x509 -noout -issuer -in ad_user.crt -nameopt RFC2253
    issuer=CN=AD-WIN2012R2-CA,DC=AD,DC=EXAMPLE,DC=COM
  2. 必要に応じて、証明書発行者が、ad.example.com ドメインからデプロイメントした AD-WIN2012R2-CA であることを指定する マッチングルールに基づいて、コマンドラインで新しいマッピングルールを作成する場合は、証明書の発行先が、IdM のユーザーアカウントにある certmapdata エントリーと一致する必要があります。
    # ipa certmaprule-add simple_rule --matchrule '<ISSUER>CN=AD-WIN2012R2-CA,DC=AD,DC=EXAMPLE,DC=COM' --maprule '(ipacertmapdata=X509:<I>{issuer_dn!nss_x500}<S>{subject_dn!nss_x500})'

追加情報

certmap コマンドの詳細は、man ページの sss-certmap(5) を参照してください。ここには、マッチングルールおよびマッピングルールで対応している形式の紹介と、優先順位およびドメインフィールドの説明もあります。

23.2.2. IdM に保存されたユーザーの証明書マッピングの設定

このセクションでは、証明書認証が設定されているユーザーが IdM に保存されている場合に、システム管理者が IdM での証明書マッピングを有効にする必要がある手順を説明します。

前提条件

  • IdM にユーザーがアカウントがある。
  • 管理者が、ユーザーエントリーに追加する証明書全体または証明書マッピングデータのいずれかを所有している。

23.2.2.1. IdM での証明書マッピングルールの追加

このセクションでは、マッピングルールおよび証明書マッピングデータエントリーで指定された条件に一致する証明書を持つ IdM ユーザーが IdM に対して認証できるように、証明書マッピングルールを設定する方法を説明します。
23.2.2.1.1. IdM Web UI で証明書マッピングルールの追加
  1. 管理者として IdM Web UI にログインします。
  2. AuthenticationCertificate Identity Mapping RulesCertificate Identity Mapping Rulesに移動します。
  3. Add をクリックします。

    図23.1 IdM Web UI で新しい証明書マッピングルールの追加

    IdM Web UI で新しい証明書マッピングルールの追加
  4. ルール名を入力します。
  5. マッピングルールを入力します。たとえば、IdM に提示された証明書の Issuer エントリーおよび Subject エントリーを IdM で検索し、提示された証明書に含まれるこの 2 つのエントリーで見つかった情報に基づいて認証するかどうかを決定するには、次のコマンドを実行します。
    (ipacertmapdata=X509:<I>{issuer_dn!nss_x500}<S>{subject_dn!nss_x500})
  6. マッチングルールを入力します。たとえば、EXAMPLE.ORG 組織の スマートカード CA が発行する証明書のみが IdM に対して認証できるようにするには、次のコマンドを実行します。
    <ISSUER>CN=Smart Card CA,O=EXAMPLE.ORG

    図23.2 IdM Web UI への証明書マッピングルールの詳細の入力

    IdM Web UI への証明書マッピングルールの詳細の入力
  7. ダイアログボックスの下部にある Add をクリックして、ルールを追加し、ダイアログボックスを閉じます。
  8. System Security Services Daemon (SSSD) は、証明書マッピングルールを定期的に再読み込みします。新たに作成したルールがすぐに読み込まれるようにする場合は、次のコマンドを実行して SSSD を再起動します。
    # systemctl restart sssd
これで、証明書マッピングルールセットが設定され、スマートカードの証明書で検出されたマッピングルールで指定されたデータの種類と、IdM ユーザーエントリーの証明書マッピングデータを比較します。一致するファイルが見つかると、一致するユーザーが認証されます。
23.2.2.1.2. コマンドラインを使用した証明書マッピングルールの追加
  1. 管理者の認証情報を取得します。
    # kinit admin
  2. マッピングルールを入力し、マッピングルールの基となっているマッチングルールを入力します。たとえば、提示する証明書の Issuer エントリーおよび Subject エントリーを IdM で検索し、提示された証明書に含まれるこの 2 つのエントリーで見つかった情報に基づいて認証するかどうかを決定するには、EXAMPLE.ORG 組織の Smart Card CA が発行する証明書のみ を認識するには、次のコマンドを実行します。
    # ipa certmaprule-add rule_name --matchrule '<ISSUER>CN=Smart Card CA,O=EXAMPLE.ORG' --maprule '(ipacertmapdata=X509:<I>{issuer_dn!nss_x500}<S>{subject_dn!nss_x500})'
    -------------------------------------------------------
    Added Certificate Identity Mapping Rule "rule_name"
    -------------------------------------------------------
      Rule name: rule_name
      Mapping rule: (ipacertmapdata=X509:<I>{issuer_dn!nss_x500}<S>{subject_dn!nss_x500})
      Matching rule: <ISSUER>CN=Smart Card CA,O=EXAMPLE.ORG
      Enabled: TRUE
  3. System Security Services Daemon (SSSD) は、証明書マッピングルールを定期的に再読み込みします。新たに作成したルールがすぐに読み込まれるようにする場合は、次のコマンドを実行して SSSD を再起動します。
    # systemctl restart sssd
これで、証明書マッピングルールセットが設定され、スマートカードの証明書で検出されたマッピングルールで指定されたデータの種類と、IdM ユーザーエントリーの証明書マッピングデータを比較します。一致するファイルが見つかると、一致するユーザーが認証されます。

23.2.2.2. IdM のユーザーエントリーへの証明書マッピングデータの追加

本セクションでは、証明書マッピングデータエントリーで指定された値が含まれている場合に限り、ユーザーが複数の証明書を使用して認証できるように、IdM ユーザーエントリーへの証明書マッピングデータを入力する方法を説明します。
23.2.2.2.1. IdM Web UI のユーザーエントリーへの証明書マッピングデータの追加
  1. 管理者として IdM Web UI にログインします。
  2. UsersActive users に移動し、ユーザーエントリーをクリックします。
  3. Certificate mapping data オプションを見つけ、Add をクリックします。
  4. 利用できるユーザーの証明書がある場合は、次のコマンドを実行します。
    1. コマンドラインインターフェイスで、cat ユーティリティーまたはテキストエディターで証明書を表示します。
      # [root@server ~]# cat idm_user_certificate.pem
      -----BEGIN CERTIFICATE-----
      MIIFFTCCA/2gAwIBAgIBEjANBgkqhkiG9w0BAQsFADA6MRgwFgYDVQQKDA9JRE0u RVhBTVBMRS5DT00xHjAcBgNVBAMMFUNlcnRpZmljYXRlIEF1dGhvcml0eTAeFw0x ODA5MDIxODE1MzlaFw0yMDA5MDIxODE1MzlaMCwxGDAWBgNVBAoMD0lETS5FWEFN
      [...output truncated...]
    2. 証明書をコピーします。
    3. IdM Web UI で、Certificate の横にある Add をクリックして、開いたウィンドウに証明書を貼り付けます。

      図23.3 ユーザーの証明書マッピングデータの追加 - 証明書

      ユーザーの証明書マッピングデータの追加 - 証明書
      または、利用できるユーザーの証明書がなくても、証明書の Issuer および Subject を知っている場合は、Issuer and subject のラジオボタンをオンにして、該当するボックスに値を入力します。

      図23.4 ユーザーの証明書マッピングデータの追加 - 発行者および発行先

      ユーザーの証明書マッピングデータの追加 - 発行者および発行先
  5. Add をクリックします。
  6. 必要に応じて、.pem 形式の証明書全体へのアクセスがある場合は、ユーザーと証明書がリンクされていることを確認します。
    1. sss_cache ユーティリティーを使用して、SSSD キャッシュでユーザーのレコードを無効にし、ユーザーの情報を再読み込みします。
      # sss_cache -u user_name
    2. ipa certmap-match コマンドに、IdM ユーザーの証明書が含まれるファイルの名前を付けて実行します。
      # ipa certmap-match idm_user_cert.pem
      --------------
      1 user matched
      --------------
       Domain: IDM.EXAMPLE.COM
       User logins: idm_user
      ----------------------------
      Number of entries returned 1
      ----------------------------
    この出力では、証明書マッピングデータがユーザーに追加され、「IdM での証明書マッピングルールの追加」 で定義された対応するマッピングルールが存在することを確認します。これは、定義した証明書マッピングデータに一致する証明書を使用して、ユーザーとして認証できることを意味します。
23.2.2.2.2. コマンドラインを使用したユーザーエントリーへの証明書マッピングデータの追加
  1. 管理者の認証情報を取得します。
    # kinit admin
  2. 利用できるユーザーの証明書がある場合は、ipa user-add-cert コマンドを使用して、証明書をユーザーアカウントに追加します。
    # CERT=`cat idm_user_cert.pem | tail -n +2 | head -n -1 | tr -d '\r\n'\`
    # ipa user-add-certmapdata idm_user --certificate $CERT
    または、利用できるユーザーの証明書がなくても、ユーザーの証明書の Issuer および Subject を知っている場合は、次のコマンドを実行します。
    # ipa user-add-certmapdata idm_user --subject "O=EXAMPLE.ORG,CN=test" --issuer "CN=Smart Card CA,O=EXAMPLE.ORG"
    --------------------------------------------
    Added certificate mappings to user "idm_user"
    --------------------------------------------
      User login: idm_user
      Certificate mapping data: X509:<I>O=EXAMPLE.ORG,CN=Smart Card CA<S>CN=test,O=EXAMPLE.ORG
  3. 必要に応じて、.pem 形式の証明書全体へのアクセスがある場合は、ユーザーと証明書がリンクされていることを確認します。
    1. sss_cache ユーティリティーを使用して、SSSD キャッシュでユーザーのレコードを無効にし、ユーザーの情報を再読み込みします。
      # sss_cache -u user_name
    2. ipa certmap-match コマンドに、IdM ユーザーの証明書が含まれるファイルの名前を付けて実行します。
      # ipa certmap-match idm_user_cert.pem
      --------------
      1 user matched
      --------------
       Domain: IDM.EXAMPLE.COM
       User logins: idm_user
      ----------------------------
      Number of entries returned 1
      ----------------------------

23.2.3. AD ユーザーエントリーに証明書全体が含まれるユーザーに証明書マッピングを設定

このセクションでは、IdM デプロイメントが Active Directory (AD) を信頼し、そのユーザーが AD に保存され、AD のユーザーエントリーに証明書全体が含まれる場合に、IdM で証明書マッピングを有効にするのに必要な手順を説明します。

前提条件

  • IdM にユーザーアカウントがない。
  • ユーザーに、証明書を含む AD のアカウントがある。
  • IdM 管理者が、IdM 証明書マッピングルールが基になっているデータにアクセスできる。

23.2.3.1. IdM Web UI を使用した Whole 証明書が含まれるユーザーの証明書マッピングルールの追加

IdM Web UI で証明書マッピングルールを追加するには、以下のようにします。
  1. 管理者として IdM Web UI にログインします。
  2. AuthenticationCertificate Identity Mapping RulesCertificate Identity Mapping Rulesに移動します。
  3. Add をクリックします。

    図23.5 IdM Web UI で新しい証明書マッピングルールの追加

    IdM Web UI で新しい証明書マッピングルールの追加
  4. ルール名を入力します。
  5. マッピングルールを入力します。認証のために IdM に提示された証明書全体を、AD で利用可能な証明書全体と比較するには、次のコマンドを実行します。
    (userCertificate;binary={cert!bin})
  6. マッチングルールを入力します。たとえば、AD.EXAMPLE.COM ドメインの AD-ROOT-CA が発行する証明書のみを認証できるようにするには、次のコマンドを実行します。
    <ISSUER>CN=AD-ROOT-CA,DC=ad,DC=example,DC=com

    図23.6 AD に保存されている証明書があるユーザーの証明書マッピングルール

    AD に保存されている証明書があるユーザーの証明書マッピングルール
  7. Add をクリックします。
  8. System Security Services Daemon (SSSD) は、証明書マッピングルールを定期的に再読み込みします。新たに作成したルールがすぐに読み込まれるようにする場合は、次のコマンドを実行して SSSD を再起動します。
    # systemctl restart sssd

23.2.3.2. ユーザー選択の AD ユーザーエントリーに、コマンドラインを使用した Whole 証明書が含まれるに対する証明書マッピングルールの追加

コマンドラインで証明書マッピングルールを追加するには、以下を行います。
  1. 管理者の認証情報を取得します。
    # kinit admin
  2. マッピングルールを入力し、マッピングルールの基となっているマッチングルールを入力します。AD で利用可能な証明書と比較する、認証用に提示される証明書全体を取得して、AD.EXAMPLE.COM ドメインの AD-ROOT-CA により発行された証明書のみの認証を許可するには、次のコマンドを実行します。
    # ipa certmaprule-add simpleADrule --matchrule '<ISSUER>CN=AD-ROOT-CA,DC=ad,DC=example,DC=com' --maprule '(userCertificate;binary={cert!bin})' --domain ad.example.com
    -------------------------------------------------------
    Added Certificate Identity Mapping Rule "simpleADrule"
    -------------------------------------------------------
      Rule name: simpleADrule
      Mapping rule: (userCertificate;binary={cert!bin})
      Matching rule: <ISSUER>CN=AD-ROOT-CA,DC=ad,DC=example,DC=com
      Domain name: ad.example.com
      Enabled: TRUE
  3. System Security Services Daemon (SSSD) は、証明書マッピングルールを定期的に再読み込みします。新たに作成したルールがすぐに読み込まれるようにする場合は、次のコマンドを実行して SSSD を再起動します。
    # systemctl restart sssd

23.2.4. ユーザー証明書をユーザーアカウントにマッピングするように AD が設定されている場合に、証明書マッピングの設定

このセクションでは、IdM デプロイメントが Active Directory (AD) を信頼し、そのユーザーが AD に保存され、AD のユーザーエントリーに証明書マッピングデータが含まれる場合に、IdM で証明書マッピングを有効にするのに必要な手順を説明します。

前提条件

  • IdM にユーザーアカウントがない。
  • このユーザーに、altSecurityIdentities 属性を含む AD にアカウントがある。AD は、IdM の certmapdata 属性に相当します。
  • IdM 管理者が、IdM 証明書マッピングルールが基になっているデータにアクセスできる。

23.2.4.1. 信頼された AD ドメインがユーザー証明書をマッピングするように設定されている場合に、Web UI を使用した証明書マッピングルールの追加

信頼された AD ドメインがユーザー証明書をマッピングするように設定されている場合に、証明書マッピングルールを追加するには、以下を実行します。
  1. 管理者として IdM Web UI にログインします。
  2. AuthenticationCertificate Identity Mapping RulesCertificate Identity Mapping Rulesに移動します。
  3. Add をクリックします。

    図23.7 IdM Web UI で新しい証明書マッピングルールの追加

    IdM Web UI で新しい証明書マッピングルールの追加
  4. ルール名を入力します。
  5. マッピングルールを入力します。たとえば、提示された証明書で Issuer エントリーおよび Subject エントリーを AD DC で検索し、提示された証明書に含まれるこの 2 つのエントリーで見つかった情報に基づいて認証するかどうかを決定するには、次のコマンドを実行します。
    (altSecurityIdentities=X509:<I>{issuer_dn!ad_x500}<S>{subject_dn!ad_x500})
  6. マッチングルールを入力します。たとえば、AD.EXAMPLE.COM ドメインの AD-ROOT-CA が発行する証明書のみを許可し、IdM に対してユーザーを認証するには、次のコマンドを実行します。
    <ISSUER>CN=AD-ROOT-CA,DC=ad,DC=example,DC=com
  7. ドメインを入力します。
    ad.example.com

    図23.8 AD がマッピング用に設定されている場合の証明書マッピングルール

    AD がマッピング用に設定されている場合の証明書マッピングルール
  8. Add をクリックします。
  9. System Security Services Daemon (SSSD) は、証明書マッピングルールを定期的に再読み込みします。新たに作成したルールがすぐに読み込まれるようにする場合は、次のコマンドを実行して SSSD を再起動します。
    # systemctl restart sssd

23.2.4.2. 信頼された AD ドメインがユーザー証明書をマッピングするように設定されている場合にコマンドラインを使用した証明書マッピングルールの追加

コマンドラインで証明書マッピングルールを追加するには、以下を行います。
  1. 管理者の認証情報を取得します。
    # kinit admin
  2. マッピングルールを入力し、マッピングルールの基となっているマッチングルールを入力します。たとえば、提示する証明書の Issuer エントリーおよび Subject エントリーを AD で検索し、AD.EXAMPLE.COM ドメインの AD-ROOT-CA により発行された証明書のみを許可するには、次のコマンドを実行します。
    # ipa certmaprule-add ad_configured_for_mapping_rule --matchrule '<ISSUER>CN=AD-ROOT-CA,DC=ad,DC=example,DC=com' --maprule '(altSecurityIdentities=X509:<I>{issuer_dn!ad_x500}<S>{subject_dn!ad_x500})' --domain=ad.example.com
    -------------------------------------------------------
    Added Certificate Identity Mapping Rule "ad_configured_for_mapping_rule"
    -------------------------------------------------------
      Rule name: ad_configured_for_mapping_rule
      Mapping rule: (altSecurityIdentities=X509:<I>{issuer_dn!ad_x500}<S>{subject_dn!ad_x500})
      Matching rule: <ISSUER>CN=AD-ROOT-CA,DC=ad,DC=example,DC=com
      Domain name: ad.example.com
      Enabled: TRUE
  3. System Security Services Daemon (SSSD) は、証明書マッピングルールを定期的に再読み込みします。新たに作成したルールがすぐに読み込まれるようにする場合は、次のコマンドを実行して SSSD を再起動します。
    # systemctl restart sssd

23.2.4.3. AD で証明書マッピングデータの確認

altSecurityIdentities 属性は、IdM の certmapdata ユーザー属性と同等の Active Directory (AD) です。信頼されている AD ドメインが、ユーザーアカウントにユーザー証明書をマッピングするように設定されている時に IdM で証明書マッピングを設定する場合は、IdM システム管理者が、AD のユーザーエントリーに altSecurityIdentities 属性が正しく設定されていることを確認する必要があります。
AD に保存されているユーザーに対して、AD が正しい情報が含まれていることを確認する場合は、ldapsearch コマンドを使用します。
たとえば、ad_user のユーザーエントリーに altSecurityIdentities 属性が設定されており、ad_user が AD の認証に使用する証明書が、ad.example.com ドメインの AD-ROOT-CA により発行され、発行先が <S<>DC=com,DC=example,DC=ad,CN=Users,CN=ad_user であることを matchrule が規定していることを、adserver.ad.example.com サーバーに確認する場合は、次のコマンド実行します。
$ ldapsearch -o ldif-wrap=no -LLL -h adserver.ad.example.com \
-p 389 -D cn=Administrator,cn=users,dc=ad,dc=example,dc=com \
-W -b cn=users,dc=ad,dc=example,dc=com "(cn=ad_user)" \
altSecurityIdentities
Enter LDAP Password:
dn: CN=ad_user,CN=Users,DC=ad,DC=example,DC=com
altSecurityIdentities: X509:<I>DC=com,DC=example,DC=ad,CN=AD-ROOT-CA<S>DC=com,DC=example,DC=ad,CN=Users,CN=ad_user

23.2.5. AD ユーザーエントリーに証明書やマッピングデータが含まれていない場合に、証明書マッピングの設定

このセクションでは、IdM デプロイメントが Active Directory (AD) を信頼し、そのユーザーが AD に保存され、AD のユーザーエントリーに証明書全体または証明書マッピングデータが含まれる場合に、IdM で証明書マッピングを有効にするのに必要な手順を説明します。

前提条件

  • IdM にユーザーアカウントがない。
  • ユーザーのアカウントがある AD に、証明書全体、または altSecurityIdentities 属性、IdM certmapdata 属性で AD に相当するものがない。
  • IdM 管理者が、IdM に、AD ユーザーの ユーザー ID オーバーライド に追加する AD ユーザー証明書全体を所有している。

23.2.5.1. AD ユーザーエントリーに証明書やマッピングデータが含まれていない場合に、Web UI を使用した証明書マッピングルールの追加

AD ユーザーエントリーに、証明書やマッピングデータが含まれていない場合に、Web UI を使用して証明書マッピングルールを追加するには、以下を実行します。
  1. 管理者として IdM Web UI にログインします。
  2. AuthenticationCertificate Identity Mapping RulesCertificate Identity Mapping Rulesに移動します。
  3. Add をクリックします。

    図23.9 IdM Web UI で新しい証明書マッピングルールの追加

    IdM Web UI で新しい証明書マッピングルールの追加
  4. ルール名を入力します。
  5. マッピングルールを入力します。認証するために IdM に提示された証明書全体を、IdM の AD ユーザーエントリーのユーザー ID オーバーライドエントリーに保存されている証明書と比較できるようにするには、次のコマンドを実行します。
    (userCertificate;binary={cert!bin})
  6. マッチングルールを入力します。たとえば、AD.EXAMPLE.COM ドメインの AD-ROOT-CA が発行する証明書のみを認証できるようにするには、次のコマンドを実行します。
    <ISSUER>CN=AD-ROOT-CA,DC=ad,DC=example,DC=com
  7. ドメイン名を入力します。たとえば、ad.example.com ドメインでユーザーを検索するには、以下を実行します。

    図23.10 AD に証明書やマッピングデータが保存されていないユーザーに対する証明書マッピングルール

    AD に証明書やマッピングデータが保存されていないユーザーに対する証明書マッピングルール
  8. Add をクリックします。
  9. System Security Services Daemon (SSSD) は、証明書マッピングルールを定期的に再読み込みします。新たに作成したルールがすぐに読み込まれるようにする場合は、次のコマンドを実行して SSSD を再起動します。
    # systemctl restart sssd

23.2.5.2. AD ユーザーエントリーに証明書やマッピングデータが含まれていない場合に、コマンドラインを使用して証明書マッピングルールを追加

AD ユーザーエントリーに、証明書やマッピングデータが含まれていない場合に、コマンドラインを使用して証明書マッピングルールを追加するには、以下を実行します。
  1. 管理者の認証情報を取得します。
    # kinit admin
  2. マッピングルールを入力し、マッピングルールの基となっているマッチングルールを入力します。IdM の AD ユーザーエントリーのユーザー ID オーバーライドエントリーに保存されている証明書と比較する、認証用に提示される証明書全体を取得して、AD.EXAMPLE.COM ドメインの AD-ROOT-CA により発行された証明書のみを認証できるようにするには、以下のコマンドを実行します。
    # ipa certmaprule-add simpleADrule --matchrule '<ISSUER>CN=AD-ROOT-CA,DC=ad,DC=example,DC=com' --maprule '(userCertificate;binary={cert!bin})' --domain ad.example.com
    -------------------------------------------------------
    Added Certificate Identity Mapping Rule "simpleADrule"
    -------------------------------------------------------
      Rule name: simpleADrule
      Mapping rule: (userCertificate;binary={cert!bin})
      Matching rule: <ISSUER>CN=AD-ROOT-CA,DC=ad,DC=example,DC=com
      Domain name: ad.example.com
      Enabled: TRUE
  3. System Security Services Daemon (SSSD) は、証明書マッピングルールを定期的に再読み込みします。新たに作成したルールがすぐに読み込まれるようにする場合は、次のコマンドを実行して SSSD を再起動します。
    # systemctl restart sssd

23.2.5.3. Web UI を使用した AD ユーザーの ID オーバーライドへの証明書の追加

AD のユーザーエントリーに、証明書やマッピングデータが含まれていない場合に、Web UI を使用して AD ユーザーの ID オーバーライドに証明書を追加するには、次のコマンドを実行します。
  1. 管理者として IdM Web UI にログインします。
  2. IdentityID ViewsDefault Trust View に移動します。
  3. Add をクリックします。

    図23.11 IdM Web UI で新規ユーザー ID オーバーライドの追加

    IdM Web UI で新規ユーザー ID オーバーライドの追加
  4. User to override フィールドに、user_name@domain_nameの形式でユーザー名を入力します。
  5. このユーザーの証明書を、Certificate フィールドにコピーアンドペーストします。

    図23.12 AD ユーザーにユーザー ID オーバーライドの設定

    AD ユーザーにユーザー ID オーバーライドの設定
  6. 必要に応じて、ユーザーと証明書がリンクされていることを確認します。
    1. sss_cache ユーティリティーを使用して、SSSD キャッシュでユーザーのレコードを無効にし、ユーザーの情報を再読み込みします。
      # sss_cache -u ad_user@ad.example.com
    2. AD ユーザーの証明書が含まれるファイルの名前で、ipa certmap-match コマンドを実行します。
      # ipa certmap-match ad_user_cert.pem
      --------------
      1 user matched
      --------------
       Domain: AD.EXAMPLE.COM
       User logins: ad_user@ad.example.com
      ----------------------------
      Number of entries returned 1
      ----------------------------
      この出力では、証明書マッピングデータが ad_user@ad.example.com に追加され、対応するマッピングルールが存在することを確認します。これは、定義した証明書マッピングデータに一致する証明書を使用して、ad_user@ad.example.com として認証できることを意味します。

23.2.5.4. コマンドラインを使用した AD ユーザーの ID オーバーライドへの証明書の追加

AD のユーザーエントリーに、証明書やマッピングデータが含まれていない場合に、コマンドラインを使用して AD ユーザーの ID オーバーライドに証明書を追加するには、次のコマンドを実行します。
  1. 管理者の認証情報を取得します。
    # kinit admin
  2. ipa idoverrideuser-add-cert コマンドを使用して、ユーザーの証明書をユーザーアカウントに追加します。
    # CERT=`cat ad_user_cert.pem | tail -n +2 | head -n -1 | tr -d '\r\n'\`
    # ipa idoverrideuser-add-cert ad_user@ad.example.com --certificate $CERT
  3. 必要に応じて、ユーザーと証明書がリンクされていることを確認します。
    1. sss_cache ユーティリティーを使用して、SSSD キャッシュでユーザーのレコードを無効にし、ユーザーの情報を再読み込みします。
      # sss_cache -u ad_user@ad.example.com
    2. AD ユーザーの証明書が含まれるファイルの名前で、ipa certmap-match コマンドを実行します。
      # ipa certmap-match ad_user_cert.pem
      --------------
      1 user matched
      --------------
       Domain: AD.EXAMPLE.COM
       User logins: ad_user@ad.example.com
      ----------------------------
      Number of entries returned 1
      ----------------------------
      この出力では、証明書マッピングデータが ad_user@ad.example.com に追加され、対応するマッピングルールが存在することを確認します。これは、定義した証明書マッピングデータに一致する証明書を使用して、ad_user@ad.example.com として認証できることを意味します。

23.2.6. 複数のアイデンティティーマッピングルールを 1 つに結合

複数の ID マッピングルールを 1 つのルールに結合するには、個々のマッピングルールの前に | (or) 文字を追加し、括弧 () で区切ります。以下に例を示します。
$ ipa certmaprule-add ad_cert_for_ipa_and_ad_users \ --maprule='(|(ipacertmapdata=X509:<I>{issuer_dn!nss_x500}<S>{subject_dn!nss_x500})(altSecurityIdentities=X509:<I>{issuer_dn!ad_x500}<S>{subject_dn!ad_x500}))' \ --matchrule='<ISSUER>CN=AD-ROOT-CA,DC=ad,DC=example,DC=com' \ --domain=ad.example.com
上記の例では、--maprule オプションのフィルター定義には、以下の基準が含まれます。
--maprule オプションのフィルターの定義では、論理演算子 | (or) が使用できるため、複数の基準を指定できます。この場合、ルールは、1 つ以上の基準を満たすユーザーアカウントをすべてマップします。
$ ipa certmaprule-add ipa_cert_for_ad_users \
  --maprule='(|(userCertificate;binary={cert!bin})(ipacertmapdata=X509:<I>{issuer_dn!nss_x500}<S>{subject_dn!nss_x500})(altSecurityIdentities=X509:<I>{issuer_dn!ad_x500}<S>{subject_dn!ad_x500}))' \
  --matchrule='<ISSUER>CN=Certificate Authority,O=REALM.EXAMPLE.COM' \
  --domain=idm.example.com --domain=ad.example.com
上記の例では、--maprule オプションのフィルター定義には、以下の基準が含まれます。
--maprule オプションのフィルターの定義では、論理演算子 | (or) が使用できるため、複数の基準を指定できます。この場合、ルールは、1 つ以上の基準を満たすユーザーアカウントをすべてマップします。