本連載は、PowerShellコマンドレットについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は「Add-MgApplicationPassword」コマンドレットを解説します。
この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
本連載では、Windows PowerShellの基本的なコマンドレットについて、基本的な書式からオプション、具体的な実行例までを分かりやすく紹介していきます。今回は、「Microsoft Entra ID」(旧称:Microsoft Azure Active Directory)の「アプリの登録」でクライアントシークレットを作成する「Add-MgApplicationPassword」コマンドレットです。
「Add-MgApplicationPassword」は、PowerShellを利用してMicrosoft Entra IDの「アプリの登録」にある「クライアントシークレット」を作成するためのコマンドレットです。クライアントシークレットは「アプリの登録」における“パスワード”の役割を担う文字列ですが、有効期限が「最大で2年間」に設定されているため、定期的に再作成する必要があります。そこでPowerShellを利用することで、クライアントシークレットを自動作成させることができます。
なお、Add-MgApplicationPasswordコマンドレットは、本連載第45回で解説した「Connect-MgGraph」コマンドレットで「Connect-MgGraph -Scopes "Application.ReadWrite.All"」と実行して、Microsoft Entra IDへの接続とアクセス許可を与えておくことが前提条件になります。
オプション | 意味 |
---|---|
-applicationId | 登録されたアプリケーションのIDを指定する |
-PasswordCredential | クライアントシークレットのパラメーターを指定する。省略可能 |
Add-MgApplicationPasswordコマンドレットを利用してクライアントシークレットを作成する場合、アプリケーションのIDがパラメーターとして必要になります。「アプリの登録」で登録されたアプリケーションはMicrosoft Entra IDのエンタープライズアプリケーションにも登録されるため、本連載第87回で解説した「Get-MgServicePrincipal」コマンドレットを利用してIDを確認します(画面1)。
Get-MgApplication -All |Where-Object {$_.displayname -match "AuditLog"}
上記コマンドレット実行例では、Get-MgApplicationコマンドレットで表示名(displayname)が「AuditLog」のアプリ情報を参照しています。実行結果のうち、アプリケーションのIDはId列に出力されています(「AppId」ではない点に注意)。
Add-MgApplicationPasswordコマンドレットでクライアントシークレットを作成する場合、アプリケーションのIDと同時に、クライアントシークレットを作成するためのパラメーターが必要になります。
表示名(displayName)とクライアントシークレットの有効期限(endDateTime)をそれぞれ設定した「$passwordCred」という変数を事前に定義した上で、Add-MgApplicationPasswordコマンドレットでパラメーターが入った変数とアプリケーションのIDを指定します(画面2)。
$app=Get-MgApplication -All |Where-Object {$_.displayname -match "AuditLog"} $passwordCred = @{ displayName = 'Created in PowerShell' endDateTime = (Get-Date).AddMonths(48) } $secret=Add-MgApplicationPassword -applicationId $app.Id -PasswordCredential $passwordCred
上記コマンドレット実行例では、1行目で「AuditLog」という名前のアプリケーションの情報取得し、$app変数に保存しています。2行目では、クライアントシークレットの表示名と有効期限(「AddMoths(48)」と設定しているので48カ月間有効なクライアントシークレットとなる)をそれぞれ設定し、$passwordCred変数に保存しました。
3行目では、Add-MgApplicationPasswordコマンドレットに続けて「-applicationId」オプションでアプリケーションのID、「-PasswordCredential」オプションでサービスプリンシパルID、「-AppRoleId」オプションでクライアントシークレットのパラメーターをそれぞれ指定しています。なお、3行目のコマンドレットは実行結果を$secret変数に保存しているため、後で「$secret |fl」と実行することで生成されたクライアントシークレットを確認できます(SecretText属性)(画面3)。
株式会社エストディアン代表取締役。1997年からマイクロソフト認定トレーナーとして、Azure Active DirectoryやMicrosoft 365 Defenderなど、クラウドセキュリティを中心としたトレーニングを提供している。2007年からMicrosoft MVP for Enterprise Mobilityを連続して受賞。なお、テストで作成するユーザーアカウントには必ずサッカー選手の名前が登場するほどのサッカー好き。
Copyright © ITmedia, Inc. All Rights Reserved.