YubiKeyでの多要素認証:管理者による合鍵管理

YubiKeyでの運用で気を付けなければならないのは、キー自体を忘れたときの管理です。代替の方式として個人のスマートフォンでの電話やMicrosoft Authenticatorや固定電話などが設定できる環境であればそれで代替してもいいですが、今回はセキュリティの強度が高いとして推奨されている予備のYubiKeyを用意する方法について、どう利用するかの例を紹介します。

もちろん、各個人に2個ずつ YubiKey を配布し、一つは会社の机の中に入れておくなども可能かと思いますが、5000円程度するデバイスなので数がまとまると結構な「合鍵」代となってしまい、二の足を踏んでいるところをよく見かけます。

ただ、ここで合鍵代をケチったばかりに職場へのスマートフォン端末持ち込みを許可させたりというのも本末転倒ですよね。

そこで運用上の節約術なのですが、共通で合鍵を用意します。ちょうど、総務がロッカーや袖机の合鍵の束を管理してたりする事の YubiKey 版と思えばいいと思います。

YubiKeyは1本に複数の認証情報を保持できます。例えば、YubiKey 4では32個のOATH認証情報を保持することができます。つまり、1アカウントあたり 5000 / 32 ≒ 156円ほどで合鍵が作れることになります。

これくらいの値段であれば万が一のために作っておいて、IT管理部門や各部門の管理者などに預けておいても良いですよね。

作り方は、基本的には 以前の記事 と同じです。まずは、管理者が一括登録用のCSVを作成します。まずは PowerShell で必要な個数分の秘密鍵を生成します。例えば、32個生成するのであれば以下のようにします。

1..32 | % {
	[String]$randkey = ""
	1..32 | % { $randkey += $(Get-Random -InputObject a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,2,3,4,5,6,7) }
	$randkey
}

これを元にこんな感じのCSVを作成します。シリアル番号は重複できないので、適当に末尾にS00の通番を入れています。

これを Azure ポータルからアップロードします。

続いて、YubiKeyへの登録用のコマンドを作成します。合鍵を利用した際に他の人のOTPが見えてしまうのも何となく気持ち悪いので、 -t オプションをつけてこんな感じの物を作ってYubiKeyのコマンドラインツールを実行します。

.\ykman.exe oath uri -t 'otpauth://totp/ミロゴ商事:10101@mirogo-shoji.com?secret=54fuwns7bwoybvfdjpmpfnr4vwggplxm&issuer=Microsoft'
.\ykman.exe oath uri -t 'otpauth://totp/ミロゴ商事:10102@mirogo-shoji.com?secret=bl46n3bd3ypsuryaiblsovsuxp53zotv&issuer=Microsoft'
.\ykman.exe oath uri -t 'otpauth://totp/ミロゴ商事:10103@mirogo-shoji.com?secret=cafqhec7cflb265sn2ugkt2ae2gyvcti&issuer=Microsoft'
…

これを実行すると、Yubico Authenticatorに32個の認証情報が表示されます。他のユーザーのOTPも見ようと思えば見えますが、あくまでID/PASSを入力した後の+αの2要素目として利用しているので、セキュリティ上のリスクは、代替手段を会社の固定の内線電話とした場合と比べても高くありません。

最後に、これら32件それぞれのアカウントに対して、このキーを1個1個 [アクティブ化]していきます。 -t をつけているので、Yubico Authenticatorでキーを表示させる際には都度金属部分をタッチします。

面倒ですが、初回のみ頑張って実施して下さい。ユーザー数が多い場合はうまく検索やフィルタを使って作業するとやりやすいと思います。

他にもこんな運用上の工夫があるよ、などあったら教えて貰えると嬉しいです。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です