情シスの味方・一時アクセスパスをPowerShellで簡単に生成する
2023-04-18
azblob://2023/03/13/eyecatch/2023-03-14-How-to-Easily-Generate-Temporary-Access-Pass-with-PowerShell-000.jpg

How to Easily Generate Temporary Access Pass with PowerShell

Azure ADでユーザーを作成・管理している環境では、ユーザーに対して一時アクセスパスを付与することが必要な場合があります。

一時アクセスパス(Temporary Access Pass)とはAzure ADの認証方法の一つで、名前の通り一時的に利用可能な(時間制限のある)認証方法のことです。

ユーザーのメールアドレスと一時アクセスパスのみで認証が実現できるため、主にモバイルデバイス紛失時のフォローなど、緊急時対応に活躍するほか、ユーザーの初期セットアップを効率化できるメリットがあります。

一時アクセスパスの作成方法は一般的には

  1. Azure Portalにログイン
  2. ユーザーを検索
  3. 認証方法の管理画面を表示
  4. 一時アクセスパスの作成条件を入力
  5. 出力された一時アクセスパスをコピー

といった流れになりますが、

  • 一時アクセスパスが表示されるのは作成直後の画面のみで、振り返り参照ができない
  • 複数のユーザーのために一括作成する機能は存在せず、1ユーザーごとに操作しなければならない

といった点に不満を感じていました。

今回は上記2点を解消するPowerShellスクリプトを作成したので紹介します。

対象読者

  • 既に一時アクセスパスを利用しているシステム管理者
  • PowerShellに興味がある方

事前に用意するもの

  • PowerShellがインストールされているコンピューター
  • スクリプトを実行するための管理者権限
  • 一時アクセスパスが利用可能となっているAzure AD環境

スクリプトとスクリプトの概要

スクリプトはこちらを参照してください。

このスクリプトは特定のユーザー、またはユーザーリストに対して一時アクセスパスを設定し、結果をCSVとして出力するものです。

このスクリプトを利用することでGUI(Azure Portal)を都度操作する手間が省けます。

スクリプトの使い方

このスクリプトは一時アクセスパスの開始日・終了日・割り当て対象のユーザー(またはユーザーリスト)を指定することで、同一条件の一時アクセスパスを生成することができます。

まずはローカルの作業フォルダにリンク先のスクリプト(New-TemporaryAccessPass.ps1)をダウンロードしてください。

PowerShellを起動してスクリプトを実行すると、対象ユーザーと一時アクセスパス、有効期間がGridviewで表示されるほか、CSVファイルが作業フォルダに保管されます。

具体的な実行例を紹介します。

<例1>

PS C:\> .\New-TemporaryAccessPass.ps1 -StartDate '2023-04-03' -EndDate '2023-04-04' -Users user1@example.com,user2@example.com
この例では、2023年4月3日から2023年4月4日までの期間、user1@example.com および user2@example.com のユーザーに対して一時アクセスパスが生成されます。
 

<例2>

PS C:\> .\New-TemporaryAccessPass.ps1 -StartDate '2023-04-03' -EndDate '2023-04-04' -UserListFile .\users.txt
この例では、2023年4月3日から2023年4月4日までの期間、users.txt ファイルに記載されたユーザーに対して一時アクセスパスが生成されます。
users.txtは下記のようなユーザーが改行で羅列されているファイルを想定しています。

user1@example.com
user2@example.com
user3@example.com

<例3>

PS C:\> .\New-TemporaryAccessPass.ps1 -Users user1@example.com
引数にユーザーのみを指定した場合、対象ユーザーの当日限りの一時アクセスパスが発行されます(緊急トラブル対応時に地味に便利)
 

スクリプトの注意事項 

このスクリプトはNew-MgUserAuthenticationTemporaryAccessPassMethodを利用した一括生成スクリプトです。

New-MgUserAuthenticationTemporaryAccessPassMethodの引数にはJST形式で日付を入力するのですが、現在の仕様では一時アクセスパスの有効期限の出力がUTC形式となってしまいます。

そのため、日本時間に合わせるためにCSV出力の際にAddHour(9)を入れています。

今後プログラムの処理内容が変わる場合は要注意です。

New-MgUserAuthenticationTemporaryAccessPassMethod (Microsoft.Graph.Identity.SignIns) | Microsoft Learn

まとめ

一時アクセスパスを活用した初期セットアップは結構便利です。

Windows AutoPilot(or Pre Provisioning)+Temporary Access Pass+Windows Hello for Business+パスワードレス認証を使うことでユーザーに初期パスワードを意識させないセットアップを実現することも可能です。(ググると日本語記事が数点出てくるので本記事では省略します)

最後に、一時アクセスパスは便利でもあり悪用すると大変危険なもの(なりすましログインなどが出来てしまう)となります。

発行できるユーザーやアプリ・発行した一時アクセスパスは用法・用量を正しく守って使いましょう。

おしまい

参考

パスワードレスの認証方法を登録するように Azure AD で一時アクセス パスを構成する - Microsoft Entra | Microsoft Learn