【 Add-MgApplicationPassword 】コマンドレット――Microsoft Entra ID(旧Azure AD)の「アプリの登録」でクライアントシークレットを作成するWindows PowerShell基本Tips(89)

本連載は、PowerShellコマンドレットについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は「Add-MgApplicationPassword」コマンドレットを解説します。

» 2023年11月17日 05時00分 公開
[国井傑株式会社エストディアン]

この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。

「Windows PowerShell基本Tips」のインデックス

連載目次

 本連載では、Windows PowerShellの基本的なコマンドレットについて、基本的な書式からオプション、具体的な実行例までを分かりやすく紹介していきます。今回は、「Microsoft Entra ID」(旧称:Microsoft Azure Active Directory)の「アプリの登録」でクライアントシークレットを作成する「Add-MgApplicationPassword」コマンドレットです。

Add-MgApplicationPasswordコマンドレットとは?

 「Add-MgApplicationPassword」は、PowerShellを利用してMicrosoft Entra IDの「アプリの登録」にある「クライアントシークレット」を作成するためのコマンドレットです。クライアントシークレットは「アプリの登録」における“パスワード”の役割を担う文字列ですが、有効期限が「最大で2年間」に設定されているため、定期的に再作成する必要があります。そこでPowerShellを利用することで、クライアントシークレットを自動作成させることができます。

 なお、Add-MgApplicationPasswordコマンドレットは、本連載第45回で解説した「Connect-MgGraph」コマンドレットで「Connect-MgGraph -Scopes "Application.ReadWrite.All"」と実行して、Microsoft Entra IDへの接続とアクセス許可を与えておくことが前提条件になります。

Add-MgApplicationPasswordコマンドレットの書式

Add-MgApplicationPassword [オプション]


Add-MgApplicationPasswordコマンドレットの主なオプション

オプション 意味
-applicationId 登録されたアプリケーションのIDを指定する
-PasswordCredential クライアントシークレットのパラメーターを指定する。省略可能

登録されたアプリケーションのIDを参照する

 Add-MgApplicationPasswordコマンドレットを利用してクライアントシークレットを作成する場合、アプリケーションのIDがパラメーターとして必要になります。「アプリの登録」で登録されたアプリケーションはMicrosoft Entra IDのエンタープライズアプリケーションにも登録されるため、本連載第87回で解説したGet-MgServicePrincipal」コマンドレットを利用してIDを確認します(画面1)。

コマンドレット実行例

Get-MgApplication -All |Where-Object {$_.displayname -match "AuditLog"}

画面1 画面1 Get-MgApplicationコマンドレットで登録されたアプリケーションのIDを参照する

 上記コマンドレット実行例では、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

画面2 画面2 Add-MgApplicationPasswordコマンドレットでアプリケーションのクライアントシークレットを作成する

 上記コマンドレット実行例では、1行目で「AuditLog」という名前のアプリケーションの情報取得し、$app変数に保存しています。2行目では、クライアントシークレットの表示名と有効期限(「AddMoths(48)」と設定しているので48カ月間有効なクライアントシークレットとなる)をそれぞれ設定し、$passwordCred変数に保存しました。

 3行目では、Add-MgApplicationPasswordコマンドレットに続けて「-applicationId」オプションでアプリケーションのID、「-PasswordCredential」オプションでサービスプリンシパルID、「-AppRoleId」オプションでクライアントシークレットのパラメーターをそれぞれ指定しています。なお、3行目のコマンドレットは実行結果を$secret変数に保存しているため、後で「$secret |fl」と実行することで生成されたクライアントシークレットを確認できます(SecretText属性)(画面3)。

画面3 画面3 「$secret |fl」で生成されたクライアントシークレットを確認できる

筆者紹介

国井 傑(くにい すぐる)

株式会社エストディアン代表取締役。1997年からマイクロソフト認定トレーナーとして、Azure Active DirectoryやMicrosoft 365 Defenderなど、クラウドセキュリティを中心としたトレーニングを提供している。2007年からMicrosoft MVP for Enterprise Mobilityを連続して受賞。なお、テストで作成するユーザーアカウントには必ずサッカー選手の名前が登場するほどのサッカー好き。


Copyright © ITmedia, Inc. All Rights Reserved.

スポンサーからのお知らせPR

注目のテーマ

4AI by @IT - AIを作り、動かし、守り、生かす
Microsoft & Windows最前線2025
AI for エンジニアリング
ローコード/ノーコード セントラル by @IT - ITエンジニアがビジネスの中心で活躍する組織へ
Cloud Native Central by @IT - スケーラブルな能力を組織に
システム開発ノウハウ 【発注ナビ】PR
あなたにおすすめの記事PR

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。