一定期間だけ使えるパスワード ~ Azure AD一時アクセスパス

皆さんこんにちは。国井です。
今めちゃくちゃ忙しくてブログを書く時間がなかなか取れないでいるのですが、
ちょっと気になったAzure ADの機能があったので共有しておきます。

Azure ADに「一時アクセスパス」というサービスがあるのをご存知でしょうか?

パスワードレスでAzure ADの認証を行う場合、Microsoft Authenticatorを利用する場合でも、FIDO2.0を利用する場合でも、最初に登録をしなければなりません。じゃあ、最初の登録を行うときのサインインには何を使うのか?という問題があります。
ここでパスワードを使ったら、結局パスワードレスじゃないのかい!と突っ込みたくなるでしょう。

そこでAzure ADでは一定期間のみ利用可能なパスワードとして一時アクセスパスというものを提供しています。

一時アクセスパスの設定方法

設定はAzure AD管理センターの[Azure Active Directory]-[セキュリティ]-[認証方法]-[ポリシー]から[一時アクセスパス]を選択して行います。一時アクセスパスの設定画面ではあらかじめ

・利用するユーザー
・一時パスワードの利用可能な期間
・一時パスワードの強度(文字数)

を設定しておきます。

image

こちらの設定ではtempという名前のユーザーだけ一時アクセスパスを使えるようにして、一時アクセスパスで発行するパスワードは1~8時間だけ利用可能と設定しています。

この設定ができたら、個別のユーザーで一時アクセスパスのパスワードを発行します。
こちらの設定はAzure AD管理センターから特定のユーザーを選択して、[認証方法]から[認証方法の追加]をクリックして一時アクセスパスを選択します。

image

image

すると、ここではアクティブ化時間を1時間と設定したので、1時間だけ有効なパスワードが生成されます。

image

このパスワードを本人に伝えて、その本人が https://aka.ms/mysecurityinfo にアクセスしようとすると、一時アクセスパスとして設定したパスワードを入力してサインインできるようになります。

image

サインインが完了すると、認証方法としてMicrosoft Authenticatorなどが選べるようになるので、ここでパスワードレスのための設定を行います。そして、一時アクセスパスを削除すれば一時アクセスパスはもう使えなくなり、パスワードレスでの認証が唯一の認証方法となるのです。

image

複数ユーザーの一時アクセスパスをまとめて発行したい

現時点で一時アクセスパスはPowerShellから発行できないので、Microsoft Graphを使うことになります。

https://graph.microsoft.com/beta/users/<ユーザーのオブジェクトID>/authentication/temporaryAccessPassMethods

に対してPOSTすれば(要求本文に {} と入れておきます)発行できます。
発行に当たってはUserAuthenticationMethod.ReadWrite.All アクセス許可を承諾するようにしておいてください。
image

参考:Checking out the new Azure AD Temporary Access Pass preview feature – Good Workaround!

おまけ

Azure AD管理センターの[Azure Active Directory]-[セキュリティ]-[認証方法]-[ポリシー]から[一時アクセスパス]を選択すると、一時アクセスパスを利用するユーザーを選択できますが、一時アクセスパスを利用するユーザーは必ずここで指定しておいてください。
指定しなくても各ユーザーの[認証方法]画面から一時アクセスパスを発行できますが、それを使ってサインインしようとすると、、

image

一時アクセスパスを発行するときに言ってほしかったな..