この blog は Office 365 Advent Calendar 2018 に参加しています。
Office 365の管理者アカウントの利用に多要素認証を検討されている(もしくは既に実装済み)というユーザーは多いかと思います。
現状、Microsoftでは利便性を重視してスマートフォンでのアプリケーション Microsoft Authenticator を利用したアプリ通知による認証を推していますが、環境によっては利用が難しいケースがあります。

そもそもBYODが認められていない組織での利用(Authenticatorを入れた自分のスマートフォンを業務利用できない)であったり、管理用端末がセキュリティ管理エリアにあってスマートフォン自体が持ち込み不可のような場合です。
私も、委託を受けてお客様の導入を支援したり運用を代行することがあるのですが、その際はお客様環境のルールに応じた対応をしなくてはなりません。作業場所でスマートフォンを持ち込めるか、直通の電話が受けられる固定電話があるかどうかなどを事前に調整するのも限度があるので、最近はAuthenticatorの他にハードウェアトークンも併用するようにしています。
ハードウェアトークンも色々と使える物が増えてきてますが、個人的に一番使い勝手が良い(専用のAuthenticatorのインストールが必要だが、ユーザー側作業のみで設定可能、電池交換が不要など)のでYubiKeyを使っています。
現在日本で簡単に購入できる物は YubiKey 4かYubico Security Key by Yubicoですが、今回紹介する方法で利用できるのは YubiKey4 の方のみです。

左の青がSecurity Key by Yubico
それでは、YubiKey 4での Office 365 への多要素認証の設定について紹介します。まずは、ワンタイムパスワードを生成するためのアプリケーション Yubico Authenticator をYubicoのページからダウンロードしてインストールします。
インストールが完了して起動すると、こんな画面になります。

続いて、認証する Azure AD 側での設定です。うまくQRコードを読み込めない事があるので Yubico Authenticator を起動した状態でブラウザを開き、Office 365にログインし、右上の顔写真のところから [マイアカウント]を選択し、[セキュリティとプライバシー] – [追加のセキュリティ検証]を開き、[アカウントのセキュリティに使用する電話番号を更新します]をクリックします。

現在登録されている多要素認証の要素の一覧が表示されますので、[認証アプリまたはトークン]にチェックを入れ[Authenticatorアプリの設定]をクリックします。(※なお、初回のアクセスの場合は、最初から登録を促される画面が表示されます)

Microsoft Authenticatorに登録する際と同じ画面が表示されます。ここで表示されるQRコードは、既定であるアプリケーション通知の設定になりますので、QRコードの横にある [通知をオフにしてアプリを構成] をクリックします。

これで、Yubico Authenticator が設定できるQRコードが表示されます。

続いて、PCのUSBインターフェイスにYubiKey を差し込みます。
Yubico Authenticator の [No YubiKey detected.] の表示が [No credentials found.]に変わります。

画面にブラウザのQRコードが表示されている状態で [File]メニューから[Scan QR Code…]を選択します。

上手く読み込めると、以下の様にアカウント名と Security keyなどを含めたワンタイムパスワード生成用の情報が Yubico Authenticator に表示されます。[Save credential] を押すとYubiKey にこれらの情報が書き込まれます。(読み込めなかった場合は、再度ブラウザを起動し直すか、画面に表示されている内容を参考に手動で [New credential] で構成することもできます)

OTP生成用の情報が保存されると、Yubico Authenticatorには次のような6桁のパスワードと残り時間を示す緑色のバーが表示されるようになります。

なお、前の登録画面のところで[Require touch]のチェックボックスを付けると、Yubico Authenticator上では通常時アカウント情報のみ表示されるようになります。

OTPを表示させるには、アカウント名をダブルクリック、または[Edit]メニューもしくは右クリックから[Generate code]を選択します。画面に [Touch your YubiKey to generate the code.]とダイアログが表示されている間にYubiKey本体の金色の y の部分を物理的に触ることにより表示されます。

これにより、多少手順は面倒になりますが、[物理的にハードウェアトークンを持っている]ということが証明され、より強固な多要素認証を保証することが可能です。(例えば、YubiKeyが差し込まれたままのPCにリモートデスクトップで接続して表示させたのではないと証明できる)
元のブラウザに戻り、[次へ] を選択します。[確認が必要です] と表示されるので、[今すぐ確認] をクリックします。

確認コードを入力する画面になりますので、Yubico Authenticator に今表示されている6桁の確認コードを入力します。

これで認証アプリの欄に新しい物が追加されました。既定の確認オプションが変更されるので、必要に応じてアプリの通知に戻します。[認証アプリ] の横にデバイス名が表示されないことからも推測できるかと思いますが、Yubico Authenticator はモバイルのMicrosoft Authenticatorと違ってデバイスが固定ではなく、可搬性があります。

ワンタイムパスワードの生成に必要な情報は YubiKey 側に格納されているので、どの端末でもYubico Authenticatorがインストールしてあれば特に追加で設定する必要無く利用できます。
YubiKey を忘れた場合や無くした場合に代替できるように、通常は電話番号での認証、もしくはスマートフォンのMicrosoft Authenticatorなども合わせて設定しますが、最も強いレベルの保護はもう1本 YubiKeyを設定しておいて、合鍵として利用することが推奨されています。
こういった運用フェーズでの話も、また別の機会に少しまとめて書きたいと思います。
また、Security Key by Yubico(青い方)で FIDO2を使ったWindows 10 / Azure ADへのパスワードレスログインなどもそろそろ登場してくる予定のようですので追って紹介していきたいと思います。
Pingback: Yubikeyでの多要素認証:管理者による登録 | 日々徒然
Pingback: Token2でのAzure ADの多要素認証 | 日々徒然