前回の記事では、クライアント証明書に登録された「RFC822Name(メールアドレス)」と、ログインを実行するMicrosoft Entra IDユーザーに登録されたuserPrincipalNameをマッピングして認証を行う方法をご紹介しました。しかし、現在では高アフィニティなマッピング方法としてさらに新たな認証方法が選択可能になりました。
そこで、本記事ではMicrosoft Entra IDユーザーの「証明書ユーザーID」と、クライアント証明書の「発行者とシリアル番号(IssuerAndSerialNumber)」をマッピングして認証を行う方法をご紹介します。
※Microsoft Entra CBAを行うためには予めMicrosoft Entra IDユーザーのデバイスにクライアント証明書がインストールされている必要があります。弊社で提供している「マネージドPKI Lite byGMO」でのクライアント証明書の取得方法やインストール方法につきましては、前回の記事やサポートページをご参照ください。
高アフィニティなマッピング方法とは
高アフィニティとは、直訳で「高い親和性」となりますが、Microsoft Entra IDのユーザーが持つ属性情報とより強く結びつく証明書フィールドを利用するマッピング方法という意味と捉えて、本記事では解説します。
現在、Microsoft Entra CBAの認証マッピングは7つの方法が用意されています。
マッピングする証明書フィールド | アフィニティレベル |
---|---|
① PrincipalName | 低アフィニティ |
② RFC822Name | 低アフィニティ |
③ IssuerAndSubject | 低アフィニティ |
④ Subject | 低アフィニティ |
⑤ SubjectKeyIdentifire | 高アフィニティ |
⑥ SHA1PublicKey | 高アフィニティ |
⑦ IssuerAndSerialNumber | 高アフィニティ |
例えば、⑤⑥⑦は基本的に再利用できない識別子に基づいているため、高アフィニティな証明書フィールドであると考えられます。
Microsoft Entra CBAの設定
証明書による認証を行うためにMicrosoft Entra CBAの設定をします。
今回はユーザー名バインドの設定でMicrosoft Entra IDユーザーの「証明書ユーザーID」と、クライアント証明書の「発行者とシリアル番号(IssuerAndSerialNumber)」をマッピングするように設定します。
※ユーザー名バインドの設定以外の手順は前回の記事でご紹介している【Microsoft Entra CBAの設定】をご参照ください。
① 「Microsoft Entra ID(Azure Active Directory)」>「セキュリティ」>「認証方法」>「証明書ベースの認証」> 「構成」の画面にて、「保護レベル」で”多要素認証”、「必須のアフィニティバインド」で”高”を選択します。
② 「ユーザー名バインド」にて規則の追加をクリックします。
③ 「証明書フィールド」で”発行者とシリアル番号”を選択し、「ユーザー属性」で”CertificateUserIDs”を選択して「追加」をクリックします。
④ 以下のような設定になっていることを確認し、「保存」をクリックします。
⑤ 次に、認証を実施するMicrosoft Entra IDユーザーの証明書ユーザーID情報(CertificateUserIDs)に、マッピングする識別子を設定します。
「Microsoft Entra ID(Azure Active Directory)」>「ユーザー」に進み、対象のユーザーをクリックします。
⑥「プロパティの編集」をクリックします。
⑦ 認可情報の「+証明書ユーザーIDの編集」をクリックし、証明書ユーザーIDの編集画面の「+追加」をクリックします。
⑧ 証明書ユーザーID情報の入力フォームが表示されます。
手順③にて、バインドする証明書フィールドに「発行者とシリアル番号」を設定しているため、Microsoft Entra IDユーザーのデバイスにインストールされた証明書のシリアル番号と、その証明書の発行者である中間CA証明書のサブジェクト情報を記述します。
■記述例 ※余計なスペース等が入らないようにご注意ください。
X509:C=BE,O=GlobalSign nv-sa,OU=For Demo Use Only,
CN=GlobalSign Demo Issuing CAc7a83bbad6224e8b93c0132b
の後に発行者である中間CA証明書のサブジェクト情報を記述します。
発行者のサブジェクト情報は、証明書ビュアーの「発行者」から確認できます。
シリアル番号は証明書ビュアーからも確認できますが、ここで記述するシリアル番号はリトルエンディアン(最後から順番に記述)で記載する必要があることに注意してください。
正しい順番のシリアル番号はCertutilコマンドで取得可能です。
Certutil –dump –v [~certificate path~]
赤枠の箇所に表示されるシリアル番号を記述します。(スペースは削除します)
入力後、「保存」をクリックします。
⑨「認可情報」に証明書ユーザーID情報が反映されていることを確認し、保存をクリックします。
Windows PCで認証した場合の画面遷移
クライアント証明書をインストールしたWindows PCでMicrosoft365にログインしてみます。
※実際の画面遷移と異なる場合があります。
① Microsoft365のログイン画面へアクセスし、ユーザー名を入力し「次へ」をクリックします。
② 証明書の選択のポップアップから、インストールしたクライアント証明書を選択し「OK」をクリックします。
③ 証明書の発行者情報とシリアル番号が、当該ユーザーの証明書ユーザーID情報と一致するため、ログインに成功します。
誤ったクライアント証明書を選択した場合の画面遷移
① 設定した証明書ユーザーIDの条件と一致しない証明書を選択します。
② 証明書の発行者情報とシリアル番号が、当該ユーザーの証明書ユーザーID情報と一致しないため、「証明書の検証に失敗しました」と表示されます。詳細を開くと証明書情報が認証ポリシーの条件を満たしていない状態であることが確認できます。
まとめ
本例では証明書による認証において、より信頼性の高い識別子(発行者の情報や証明書のシリアル番号)を使用した認証の設定をご紹介しました。Microsoft社では、高アフィニティとして定義されている認証マッピングを使用することを推奨しております。
Microsoft Entra IDは、TeamsやOneDriveなどのOffice365サービスへのアクセスポイントとして普段の業務で使用されています。そのため、セキュリティ対策は極めて重要です。しかし、アクセスするユーザー目線での利便性も犠牲にしてはなりません。今回のクライアント証明書による認証方法は、パスワード入力の手間を解消しつつ、なりすまし耐性もある認証方法となりますのでMicrosoft Entra IDのセキュリティを大幅に強化することができます。
GMOグローバルサインでは、Microsoft Entra CBAでご利用いただけるクライアント証明書の発行・管理サービス「マネージドPKI Lite by GMO」を提供しております。ご紹介しましたMicrosoft Entra CBAの証明書認証にご興味を持たれましたらぜひお気軽にお問い合わせください。
関連する記事
Azure ADへのハードウェアセキュリティキーを利用した証明書認証の設定方法(2023.06.29)
Windows PCで証明書認証する場合のMicrosoft Entra CBAの設定方法(2023.10.05)