Microsoft社は、米国のサイバーセキュリティに関する大統領令 14028への対応として、Azure ADへの認証方法としてクライアント証明書による認証が正式版(GA)になったことを発表しました。これに伴い、モバイル端末でもクライアント証明書を格納した外部ハードウェアセキュリティキーを用意することで、証明書認証が可能になっています。
そこで今回は、外部ハードウェアセキュリティキーとしてYubiKeyを用いて、ios端末でクライアント証明書による認証を実施する場合の方法をご紹介します。
目次
YubiKeyでCSRを生成
① 「YubiKey Manager」を起動し、「Application」から「PIV」をクリックします。
② 「Configure Certificates」をクリックします。
③ 「Generate」をクリックします。
④ 「Certificate Signing Request(CSR)」を選択します。
⑤ 「RSA2048」を選択します。
⑥ 「Subject Name」を入力します。
⑦ 「Generate」をクリックします。
⑧ 表示されるポップアップへ「Management Key」と「PIN」を入力します。
⑨ CSRの出力が完了します。
管理者による証明書申請
以下の点に注意してGSパネルにて証明書申請を行います。
・「ユーザープリンシパル名」には、Azure ADのユーザープリンシパル名(もしくはオンプレミスのユーザープリンシパル名)と一致する値を入力します。
・鍵生成オプションは、「CSRによる発行」を選択します。
ユーザーによる証明書発行
① 証明書取得のメールを受信後、記載されたURLにアクセスし、管理者が指定し通知された「証明書取得用パスワード」を入力します。
② YubiKeyで作成したCSRをメモ帳などのテキストエディタで開き、そのテキストデータを「CSR入力」の項目にコピー&ペーストします。 利用規約の確認後、チェックを入れて「次へ」をクリックします。
③ 「証明書ダウンロード」をクリックして、証明書ファイルをダウンロードします。 [MPSxxxxxxxxxxxxxx.cer]というファイルがダウンロードされますので、この拡張子を.cerから.crtに変更します。
発行後の証明書をYubiKeyに取り込む
① 「YubiKey Manager」で「Import」をクリックし、保存した証明書ファイルを選択します。
② 表示されるポップアップへ「Management Key」を入力します。
③ YubiKeyへの証明書のインポートが完了します。
※PKCS#12形式で発行された証明書ファイルの場合も同様の手順でインポ―トが可能です。
ios端末に証明書を取り込む
① App Storeで「YubiKey Authenticator」をインストールします。
② YubiKey デバイスを準備して、「YubiKey Manager」を起動します。 画面右上の「…」より「Configuration」 をタップします。
③ 「Smart card extension」 をタップします。
④ 画面を下方向にプルダウンすると、スキャンしようとします。 YubiKey をiPhoneにかざします(NFC通信を行います)。
⑤ 証明書の読み込みが完了します。
⑥ YubiKeyの中にある証明書が表示されるので、⊕ボタンをタップします。
⑦ iPhoneに証明書が追加され、他のアプリで使えるようになりました。
※秘密鍵はYubiKeyの中にあるので、iPhone単体で証明書は利用できません。
Azure AD CBAの設定
① Azure ADに認証局証明書をアップロードします。
「Azure Active Directory」>「セキュリティ」>「証明機関」>「アップロード」に進みます。
※本例では当社の「マネージドPKI Lite by GMO」のルート証明書と中間CA証明書をアップロードします。
② アップロードする証明書を選択します。ルート証明書と中間CA証明書をそれぞれアップロードする必要があるため、この手順は2回実施します。 ルート証明書をアップロードする場合、「ルートCA証明書である」で「はい」を選択します。中間CA証明書をアップロードする場合は「いいえ」を選択します。
③ 「証明書失効リストのURL」と「デルタ証明書失効リストのURL」を設定します。 入力完了後、「追加」をクリックします。
※ブランクで設定することで失効確認をスキップすることも可能ですが、実運用の際はセキュリティの観点からCRLのURLを設定し、失効確認を実施することを推奨します。
ルート証明書をアップロードする場合、中間CA証明書のCRL配布ポイントに記載されている下記URLを「証明書失効リストのURL」と「デルタ証明書失効リストのURL」にそれぞれ入力します。
http://crl.globalsign.com/root-r3.crl
中間CA証明書をアップロードする場合、エンドエンティティ証明書のCRL配布ポイントに記載されている下記URLを「証明書失効リストのURL」と「デルタ証明書失効リストのURL」にそれぞれ入力します。
http://crl.globalsign.com/gsgccr3personalsign2ca2020.crl
④ ルート証明書と中間CA証明書が正常にアップロードされると、アップロード済みの認証局証明書の一覧が表示されます。
⑤ Azure AD CBAの認証を有効化します。
「Azure Active Directory」>「セキュリティ」>「認証方法」>「証明書ベースの認証」に進みます。
⑥ 「基本」画面にて、「有効にする」で「はい」を選択し「保存」します。 「ターゲット」では「すべてのユーザー」を選択します。ユーザーやグループを設定することも可能です。
⑦ 「構成」画面にて、認証設定を行います。 証明書認証をすることで多要素認証となるように設定し、ユーザー名バインドの証明書フィールドではuserPrincipalNameを設定します。 この設定により、ユーザーから提示されるクライアント証明書のサブジェクト代替名ユーザプリンシパル名フィールドが、ログインユーザーのuserPrincipalNameと一致しているか、認証時にチェックされるようになります。
⑧ 設定を確認し、「保存」をクリックします。 証明書ベースの認証が有効化され、画像のような表示になります。
以上で、Azure ADでクライアント証明書認証が行えるようになりました。
⑨ 続いて、Office 365などのクラウドアプリへのログインに証明書認証を強制するための設定をします。
「Azure Active Directory」>「セキュリティ」>「条件付きアクセス」>「認証強度」に進みます。「+新しい認証強度」をクリックします。
⑩ 認証強度を定義します。「証明書ベースの認証(多要素)」にチェックを入れます。
⑪ 「Azure Active Directory」>「セキュリティ」>「条件付きアクセス」>「ポリシー」に進みます。
「+新しいポリシー」をクリックします。
⑫ 条件付きアクセスポリシーを作成します。 「許可」の画面では、⑩で定義した認証強度を選択します。
⑬ 認証強度の一覧画面を確認すると、条件付きアクセスポリシーに紐づいていることが分かります。
この設定により、条件にマッチするログインについては証明書認証が必須になります。
まとめ
本記事でご紹介しました設定により、クライアント証明書が格納されたYubiKeyを所持していることで、PC端末・モバイル端末のどちらからでも、Azure ADへのクライアント証明書による認証が可能になります。
Azure ADではTeamsやOneDriveなど普段の業務で使用されているOffice365サービスへ繋がるため、不正アクセスによる影響を大きく受けやすいことから、Azure ADに対するセキュリティ対策は非常に重要な課題になります。そのため、クライアント証明書(なりすまし耐性のある認証方法)+ハードウェアベースの暗号化認証装置、でのセキュアな認証を是非ご検討ください。