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

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

前提条件

  • IdM にユーザーアカウントがない。
  • ユーザーのアカウントがある AD に、証明書全体、または altSecurityIdentities 属性、IdM certmapdata 属性で AD に相当するものがない。
  • IdM 管理者は次のいずれかを実行しました。

    • AD ユーザー証明書全体を IdM の AD ユーザーの user ID override に追加しました。
    • サブジェクト代替名やユーザーの SID など、証明書内の代替フィールドにマップする証明書マッピングルールを作成しました。

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

  1. 管理者として IdM Web UI にログインします。
  2. AuthenticationCertificate Identity Mapping RulesCertificate Identity Mapping Rules の順に移動します。
  3. Add をクリックします。

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

    IdM Web UI のスクリーンショット。Authentication タブの Certificate Identity Mapping Rules サブページが表示されています。右側にある "Add" ボタンが強調表示されています。
  4. ルール名を入力します。
  5. マッピングルールを入力します。認証するために IdM に提示された証明書全体を、IdM の AD ユーザーエントリーのユーザー ID オーバーライドエントリーに保存されている証明書と比較できるようにするには、次のコマンドを実行します。

    (userCertificate;binary={cert!bin})
    注記

    証明書には SAN としてのユーザープリンシパル名も含まれており、最新の更新では証明書の SID 拡張子にユーザーの SID も含まれているため、これらのフィールドを使用して証明書をユーザーにマップすることもできます。たとえば、ユーザーの SID を使用する場合は、このマッピングルールを LDAPU1:(objectsid={sid}) に置き換えます。証明書マッピングの詳細は、sss-certmap の man ページを参照してください。

  6. マッチングルールを入力します。たとえば、AD.EXAMPLE.COM ドメインの AD-ROOT-CA が発行する証明書のみを認証できるようにするには、次のコマンドを実行します。

    <ISSUER>CN=AD-ROOT-CA,DC=ad,DC=example,DC=com
  7. ドメイン名を入力します。たとえば、ad.example.com ドメインでユーザーを検索するには、以下を実行します。

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

    Rule name (必須) - Mapping rule - Matching rule のフィールドに入力済みの Add Certificate Identity Mapping Rule ポップアップウィンドウのスクリーンショット。"Priority" のフィールドは空白で、"Domain name" のラベルの横に Add ボタンがあります。
  8. Add をクリックします。
  9. System Security Services Daemon (SSSD) は、証明書マッピングルールを定期的に再読み込みします。新たに作成したルールがすぐに読み込まれるようにするには、CLI で SSSD を再起動します。

    # systemctl restart sssd

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

  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
    注記

    証明書には SAN としてのユーザープリンシパル名も含まれており、最新の更新では証明書の SID 拡張子にユーザーの SID も含まれているため、これらのフィールドを使用して証明書をユーザーにマップすることもできます。たとえば、ユーザーの SID を使用する場合は、このマッピングルールを LDAPU1:(objectsid={sid}) に置き換えます。証明書マッピングの詳細は、sss-certmap の man ページを参照してください。

  3. System Security Services Daemon (SSSD) は、証明書マッピングルールを定期的に再読み込みします。新たに作成したルールがすぐに読み込まれるようにする場合は、次のコマンドを実行して SSSD を再起動します。

    # systemctl restart sssd

9.8.3. IdM Web UI で、AD ユーザーの ID オーバーライドに証明書を追加

  1. IdentityID ViewsDefault Trust View の順に選択します。
  2. Add をクリックします。

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

    IdM Web UI のスクリーンショット。Identity タブの ID Views ページが表示されています。右側の追加ボタンが強調表示されています。
  3. User to override フィールドに、ad_user@ad.example.com と入力します。
  4. ad_user の証明書を、Certificate フィールドにコピーアンドペーストします。

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

    Add User ID override ポップアップウィンドウと、User to override (必須) - User login - GECOS - UID - GID - Certificate (プレーンテキスト形式の証明書が入力されている) のフィールドが表示されているスクリーンショット。
  5. Add をクリックします。

検証手順

ユーザーと証明書がリンクしていることを確認します。

  1. sss_cache ユーティリティーを使用して、SSSD キャッシュで ad_user@ad.example.com のレコードを無効にし、ad_user@ad.example.com 情報の再読み込みを強制します。

    # 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 に追加した証明書マッピングデータがあり、Adding a certificate mapping rule if the AD user entry contains no certificate or mapping data で定義した対応するマッピングルールが存在することを確認します。これは、定義した証明書マッピングデータに一致する証明書を使用して、ad_user@ad.example.com として認証できることを意味します。

9.8.4. IdM CLI で、AD ユーザーの ID オーバーライドに証明書を追加する

  1. 管理者の認証情報を取得します。

    # kinit admin
  2. 証明書 blob を CERT という新しい変数に格納します。

    # CERT=$(openssl x509 -in /path/to/certificate -outform der|base64 -w0)
  3. ipa idoverrideuser-add-cert コマンドを使用して、ad_user@ad.example.com の証明書をユーザーアカウントに追加します。

    # ipa idoverrideuser-add-cert ad_user@ad.example.com --certificate $CERT

検証手順

ユーザーと証明書がリンクしていることを確認します。

  1. sss_cache ユーティリティーを使用して、SSSD キャッシュで ad_user@ad.example.com のレコードを無効にし、ad_user@ad.example.com 情報の再読み込みを強制します。

    # 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 に追加した証明書マッピングデータがあり、Adding a certificate mapping rule if the AD user entry contains no certificate or mapping data で定義した対応するマッピングルールが存在することを確認します。これは、定義した証明書マッピングデータに一致する証明書を使用して、ad_user@ad.example.com として認証できることを意味します。