23.2. Identity Management に証明書マッピングルールを設定
23.2.1. スマートカードにおける認証を設定するための証明書マッピングルール
証明書マッピングルールは、Identity Management (IdM) 管理者が特定のユーザーの証明書にアクセスしない場合に、シナリオで証明書を使用して認証できるため便利な方法です。通常、このようなアクセスがない理由は、証明書が外部認証局によって発行されたためです。特別なユースケースは、IdM ドメインが信頼関係にある Active Directory (AD) の証明書システムが発行した証明書によって表されます。
証明書マッピングルールは、スマートカードを使用するユーザーが多く、IdM 環境が大きい場合にも便利です。このような場合、完全な証明書を追加すると複雑になります。ほとんどの場合、発行先と発行者は予測可能であるため、完全な証明書よりも簡単に追加できます。システム管理者は、証明書マッピングルールを作成し、特定のユーザーに証明書を発行する前に、ユーザーエントリーに証明書マッピングデータを追加できます。証明書が発行されると、完全な証明書が自分のエントリーにアップロードされていなくても、ユーザーは証明書を使用してログインできるようになります。
さらに、証明書は一定間隔で更新する必要があるため、証明書マッピングルールは管理のオーバーヘッドを軽減します。ユーザーの証明書を更新する際に、管理者がユーザーエントリーを更新する必要がありません。たとえば、マッピングが
Subject
と Issuer
の値に基づいている場合、および新しい証明書の Subject と Issuer が以前と同じ場合は、マッピングは引き続き適用されます。一方で、完全な証明書を使用した場合、管理者は古い証明書に置き換わる新しい証明書をユーザーエントリーにアップロードする必要があります。
証明書マッピングを設定するには、以下を実行します。
- 管理者は、証明書マッピングデータ (通常は発行者と題名)、または完全な証明書をユーザーアカウントに読み込む必要があります。
- ユーザーが IdM へのログインを問題なく行えるようにするために、管理者が証明書マッピングルールを作成する必要があります。
- アカウントに、証明書マッピングデータエントリーが含まれる
- 証明書マッピングデータエントリーが、証明書の情報と一致する
マッピングルールを設定する個々のコンポーネントの詳細と、そのコンポーネントの取得方法および使用方法は、IdM での ID マッピングルールのコンポーネントおよび一致するルールで使用する証明書の発行者の取得を参照してください。
23.2.1.1. Active Directory ドメインとの信頼に対する証明書マッピングルール
本セクションでは、IdM デプロイメントが Active Directory (AD) ドメインと信頼関係にある場合に可能な、別の証明書マッピングのユースケースを簡単に説明します。
証明書マッピングルールは、信頼された AD 証明書システムが発行したスマートカード証明書を持つユーザーに対して、IdM リソースにアクセスするのに便利な方法です。AD 設定によっては、以下の状況が考えられます。
- 証明書が AD で発行され、ユーザーと証明書が IdM に保存されている場合、マッピングと、認証リクエストの全処理は IdM 側で行われます。このシナリオの設定に関する詳細は、「IdM に保存されたユーザーの証明書マッピングの設定」 を参照してください。
- ユーザーが AD に保存されている場合は、認証要求の処理が AD で実行されます。サブケースは 3 つあります。
- AD ユーザーエントリーに、証明書全体が含まれる場合。このシナリオで IdM を設定する方法は、「AD ユーザーエントリーに証明書全体が含まれるユーザーに証明書マッピングを設定」 を参照してください。
- AD が、ユーザー証明書をユーザーアカウントにマップするように設定されている場合。この場合、AD ユーザーエントリーには証明書全体が含まれず、代わりに
altSecurityIdentities
と呼ばれる属性が含まれます。このシナリオで IdM を設定する方法は、「ユーザー証明書をユーザーアカウントにマッピングするように AD が設定されている場合に、証明書マッピングの設定」 を参照してください。 - AD ユーザーエントリーに、証明書全体またはマッピングデータが含まれない場合。この場合の解決策として、ipa idoverrideuser-add コマンドを使用して、IdM で AD ユーザーの ID オーバーライドに証明書全体を追加します。詳細は、「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
形式のユーザー証明書がある。
手順
- 証明書からユーザー情報を取得します。以下のように、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
- 必要に応じて、証明書発行者が、
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 で証明書マッピングルールの追加
- 管理者として IdM Web UI にログインします。
に移動します。 図23.1 IdM Web UI で新しい証明書マッピングルールの追加
- ルール名を入力します。
- マッピングルールを入力します。たとえば、IdM に提示された証明書の
Issuer
エントリーおよびSubject
エントリーを IdM で検索し、提示された証明書に含まれるこの 2 つのエントリーで見つかった情報に基づいて認証するかどうかを決定するには、次のコマンドを実行します。(ipacertmapdata=X509:<I>{issuer_dn!nss_x500}<S>{subject_dn!nss_x500})
- マッチングルールを入力します。たとえば、
EXAMPLE.ORG
組織のスマートカード CA
が発行する証明書のみが IdM に対して認証できるようにするには、次のコマンドを実行します。<ISSUER>CN=Smart Card CA,O=EXAMPLE.ORG
図23.2 IdM Web UI への証明書マッピングルールの詳細の入力
- ダイアログボックスの下部にあるをクリックして、ルールを追加し、ダイアログボックスを閉じます。
- System Security Services Daemon (SSSD) は、証明書マッピングルールを定期的に再読み込みします。新たに作成したルールがすぐに読み込まれるようにする場合は、次のコマンドを実行して SSSD を再起動します。
# systemctl restart sssd
これで、証明書マッピングルールセットが設定され、スマートカードの証明書で検出されたマッピングルールで指定されたデータの種類と、IdM ユーザーエントリーの証明書マッピングデータを比較します。一致するファイルが見つかると、一致するユーザーが認証されます。
23.2.2.1.2. コマンドラインを使用した証明書マッピングルールの追加
- 管理者の認証情報を取得します。
# kinit admin
- マッピングルールを入力し、マッピングルールの基となっているマッチングルールを入力します。たとえば、提示する証明書の
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
- System Security Services Daemon (SSSD) は、証明書マッピングルールを定期的に再読み込みします。新たに作成したルールがすぐに読み込まれるようにする場合は、次のコマンドを実行して SSSD を再起動します。
# systemctl restart sssd
これで、証明書マッピングルールセットが設定され、スマートカードの証明書で検出されたマッピングルールで指定されたデータの種類と、IdM ユーザーエントリーの証明書マッピングデータを比較します。一致するファイルが見つかると、一致するユーザーが認証されます。
23.2.2.2. IdM のユーザーエントリーへの証明書マッピングデータの追加
本セクションでは、証明書マッピングデータエントリーで指定された値が含まれている場合に限り、ユーザーが複数の証明書を使用して認証できるように、IdM ユーザーエントリーへの証明書マッピングデータを入力する方法を説明します。
23.2.2.2.1. IdM Web UI のユーザーエントリーへの証明書マッピングデータの追加
- 管理者として IdM Web UI にログインします。
に移動し、ユーザーエントリーをクリックします。 - 利用できるユーザーの証明書がある場合は、次のコマンドを実行します。
- コマンドラインインターフェイスで、
cat
ユーティリティーまたはテキストエディターで証明書を表示します。# [root@server ~]# cat idm_user_certificate.pem -----BEGIN CERTIFICATE----- MIIFFTCCA/2gAwIBAgIBEjANBgkqhkiG9w0BAQsFADA6MRgwFgYDVQQKDA9JRE0u RVhBTVBMRS5DT00xHjAcBgNVBAMMFUNlcnRpZmljYXRlIEF1dGhvcml0eTAeFw0x ODA5MDIxODE1MzlaFw0yMDA5MDIxODE1MzlaMCwxGDAWBgNVBAoMD0lETS5FWEFN [...output truncated...]
- 証明書をコピーします。
- IdM Web UI で、Certificate の横にある をクリックして、開いたウィンドウに証明書を貼り付けます。
図23.3 ユーザーの証明書マッピングデータの追加 - 証明書
または、利用できるユーザーの証明書がなくても、証明書のIssuer
およびSubject
を知っている場合は、Issuer and subject のラジオボタンをオンにして、該当するボックスに値を入力します。図23.4 ユーザーの証明書マッピングデータの追加 - 発行者および発行先
- 必要に応じて、
.pem
形式の証明書全体へのアクセスがある場合は、ユーザーと証明書がリンクされていることを確認します。sss_cache
ユーティリティーを使用して、SSSD キャッシュでユーザーのレコードを無効にし、ユーザーの情報を再読み込みします。# sss_cache -u user_name
- 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. コマンドラインを使用したユーザーエントリーへの証明書マッピングデータの追加
- 管理者の認証情報を取得します。
# kinit admin
- 利用できるユーザーの証明書がある場合は、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
- 必要に応じて、
.pem
形式の証明書全体へのアクセスがある場合は、ユーザーと証明書がリンクされていることを確認します。sss_cache
ユーティリティーを使用して、SSSD キャッシュでユーザーのレコードを無効にし、ユーザーの情報を再読み込みします。# sss_cache -u user_name
- 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 で証明書マッピングルールを追加するには、以下のようにします。
- 管理者として IdM Web UI にログインします。
に移動します。 図23.5 IdM Web UI で新しい証明書マッピングルールの追加
- ルール名を入力します。
- マッピングルールを入力します。認証のために IdM に提示された証明書全体を、AD で利用可能な証明書全体と比較するには、次のコマンドを実行します。
(userCertificate;binary={cert!bin})
- マッチングルールを入力します。たとえば、
AD.EXAMPLE.COM
ドメインのAD-ROOT-CA
が発行する証明書のみを認証できるようにするには、次のコマンドを実行します。<ISSUER>CN=AD-ROOT-CA,DC=ad,DC=example,DC=com
図23.6 AD に保存されている証明書があるユーザーの証明書マッピングルール
- System Security Services Daemon (SSSD) は、証明書マッピングルールを定期的に再読み込みします。新たに作成したルールがすぐに読み込まれるようにする場合は、次のコマンドを実行して SSSD を再起動します。
# systemctl restart sssd
23.2.3.2. ユーザー選択の AD ユーザーエントリーに、コマンドラインを使用した Whole 証明書が含まれるに対する証明書マッピングルールの追加
コマンドラインで証明書マッピングルールを追加するには、以下を行います。
- 管理者の認証情報を取得します。
# kinit admin
- マッピングルールを入力し、マッピングルールの基となっているマッチングルールを入力します。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
- 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 ドメインがユーザー証明書をマッピングするように設定されている場合に、証明書マッピングルールを追加するには、以下を実行します。
- 管理者として IdM Web UI にログインします。
に移動します。 図23.7 IdM Web UI で新しい証明書マッピングルールの追加
- ルール名を入力します。
- マッピングルールを入力します。たとえば、提示された証明書で
Issuer
エントリーおよびSubject
エントリーを AD DC で検索し、提示された証明書に含まれるこの 2 つのエントリーで見つかった情報に基づいて認証するかどうかを決定するには、次のコマンドを実行します。(altSecurityIdentities=X509:<I>{issuer_dn!ad_x500}<S>{subject_dn!ad_x500})
- マッチングルールを入力します。たとえば、
AD.EXAMPLE.COM
ドメインのAD-ROOT-CA
が発行する証明書のみを許可し、IdM に対してユーザーを認証するには、次のコマンドを実行します。<ISSUER>CN=AD-ROOT-CA,DC=ad,DC=example,DC=com
- ドメインを入力します。
ad.example.com
図23.8 AD がマッピング用に設定されている場合の証明書マッピングルール
- System Security Services Daemon (SSSD) は、証明書マッピングルールを定期的に再読み込みします。新たに作成したルールがすぐに読み込まれるようにする場合は、次のコマンドを実行して SSSD を再起動します。
# systemctl restart sssd
23.2.4.2. 信頼された AD ドメインがユーザー証明書をマッピングするように設定されている場合にコマンドラインを使用した証明書マッピングルールの追加
コマンドラインで証明書マッピングルールを追加するには、以下を行います。
- 管理者の認証情報を取得します。
# kinit admin
- マッピングルールを入力し、マッピングルールの基となっているマッチングルールを入力します。たとえば、提示する証明書の
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
- 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
属性、IdMcertmapdata
属性で AD に相当するものがない。 - IdM 管理者が、IdM に、AD ユーザーの
ユーザー ID オーバーライド
に追加する AD ユーザー証明書全体を所有している。
23.2.5.1. AD ユーザーエントリーに証明書やマッピングデータが含まれていない場合に、Web UI を使用した証明書マッピングルールの追加
AD ユーザーエントリーに、証明書やマッピングデータが含まれていない場合に、Web UI を使用して証明書マッピングルールを追加するには、以下を実行します。
- 管理者として IdM Web UI にログインします。
に移動します。 図23.9 IdM Web UI で新しい証明書マッピングルールの追加
- ルール名を入力します。
- マッピングルールを入力します。認証するために IdM に提示された証明書全体を、IdM の AD ユーザーエントリーのユーザー ID オーバーライドエントリーに保存されている証明書と比較できるようにするには、次のコマンドを実行します。
(userCertificate;binary={cert!bin})
- マッチングルールを入力します。たとえば、
AD.EXAMPLE.COM
ドメインのAD-ROOT-CA
が発行する証明書のみを認証できるようにするには、次のコマンドを実行します。<ISSUER>CN=AD-ROOT-CA,DC=ad,DC=example,DC=com
- ドメイン名を入力します。たとえば、
ad.example.com
ドメインでユーザーを検索するには、以下を実行します。図23.10 AD に証明書やマッピングデータが保存されていないユーザーに対する証明書マッピングルール
- System Security Services Daemon (SSSD) は、証明書マッピングルールを定期的に再読み込みします。新たに作成したルールがすぐに読み込まれるようにする場合は、次のコマンドを実行して SSSD を再起動します。
# systemctl restart sssd
23.2.5.2. AD ユーザーエントリーに証明書やマッピングデータが含まれていない場合に、コマンドラインを使用して証明書マッピングルールを追加
AD ユーザーエントリーに、証明書やマッピングデータが含まれていない場合に、コマンドラインを使用して証明書マッピングルールを追加するには、以下を実行します。
- 管理者の認証情報を取得します。
# kinit admin
- マッピングルールを入力し、マッピングルールの基となっているマッチングルールを入力します。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
- System Security Services Daemon (SSSD) は、証明書マッピングルールを定期的に再読み込みします。新たに作成したルールがすぐに読み込まれるようにする場合は、次のコマンドを実行して SSSD を再起動します。
# systemctl restart sssd
23.2.5.3. Web UI を使用した AD ユーザーの ID オーバーライドへの証明書の追加
AD のユーザーエントリーに、証明書やマッピングデータが含まれていない場合に、Web UI を使用して AD ユーザーの ID オーバーライドに証明書を追加するには、次のコマンドを実行します。
- 管理者として IdM Web UI にログインします。
に移動します。 図23.11 IdM Web UI で新規ユーザー ID オーバーライドの追加
- User to override フィールドに、
user_name@domain_name
の形式でユーザー名を入力します。 - このユーザーの証明書を、Certificate フィールドにコピーアンドペーストします。
図23.12 AD ユーザーにユーザー ID オーバーライドの設定
- 必要に応じて、ユーザーと証明書がリンクされていることを確認します。
sss_cache
ユーティリティーを使用して、SSSD キャッシュでユーザーのレコードを無効にし、ユーザーの情報を再読み込みします。# sss_cache -u ad_user@ad.example.com
- 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 オーバーライドに証明書を追加するには、次のコマンドを実行します。
- 管理者の認証情報を取得します。
# kinit admin
- 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
- 必要に応じて、ユーザーと証明書がリンクされていることを確認します。
sss_cache
ユーティリティーを使用して、SSSD キャッシュでユーザーのレコードを無効にし、ユーザーの情報を再読み込みします。# sss_cache -u ad_user@ad.example.com
- 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
オプションのフィルター定義には、以下の基準が含まれます。
ipacertmapdata=X509:<I>{issuer_dn!nss_x500}<S>{subject_dn!nss_x500}
は、「IdM での証明書マッピングルールの追加」 の説明のとおりに、IdM ユーザーアカウントの ipacertmapdata 属性の値に、スマートカードの発行先および発行者をリンクさせるフィルターです。altSecurityIdentities=X509:<I>{issuer_dn!ad_x500}<S>{subject_dn!ad_x500}
は、スマートカード証明書から発行先および発行者を、AD ユーザーアカウントの altSecurityIdentities の値にリンクするフィルターです。これは、「ユーザー証明書をユーザーアカウントにマッピングするように AD が設定されている場合に、証明書マッピングの設定」 で説明されています。--domain=ad.example.com
オプションを追加すると、指定した証明書にマッピングされたユーザーが、ローカルのidm.example.com
ドメインだけでなく、ad.example.comad.example.com
ドメイン内でも検索されます。
--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
オプションのフィルター定義には、以下の基準が含まれます。
userCertificate;binary={cert!bin}
は、証明書全体を含むユーザーエントリーを返すフィルターです。AD ユーザーについては、このタイプのフィルターの作成については、「AD ユーザーエントリーに証明書やマッピングデータが含まれていない場合に、証明書マッピングの設定」 で詳細に説明されています。ipacertmapdata=X509:<I>{issuer_dn!nss_x500}<S>{subject_dn!nss_x500}
は、「IdM での証明書マッピングルールの追加」 の説明のとおりに、IdM ユーザーアカウントのipacertmapdata
属性の値に、スマートカードの発行先および発行者をリンクさせるフィルターです。altSecurityIdentities=X509:<I>{issuer_dn!ad_x500}<S>{subject_dn!ad_x500}
は、スマートカード証明書から発行先および発行者を、AD ユーザーアカウントのaltSecurityIdentities
の値にリンクするフィルターです。これは、「ユーザー証明書をユーザーアカウントにマッピングするように AD が設定されている場合に、証明書マッピングの設定」 で説明されています。
--maprule
オプションのフィルターの定義では、論理演算子 | (or) が使用できるため、複数の基準を指定できます。この場合、ルールは、1 つ以上の基準を満たすユーザーアカウントをすべてマップします。