この記事では、アプリの登録、セキュリティの強化、パフォーマンスの最適化、メンテナンス戦略など、Microsoft Entra PowerShell のベスト プラクティスを実装する方法について説明します。
これらのプラクティスを理解することは、セキュリティ リスクを最小限に抑え、パフォーマンスを最適化し、up-to-date システムを維持するために重要です。 機密データを保護し、あらゆる組織で円滑な運用を実現するために不可欠です。
エンタープライズ アプリを使用する代わりにアプリを登録する
マーケティングチームやヘルプ デスク チームなど、特定のアクセス許可を持つさまざまなユース ケースに合わせた独自のアプリケーションを登録できます。 この方法により、より詳細なアクセス許可管理が可能になり、アプリが侵害された場合のセキュリティへの影響を最小限に抑えることができます。 登録済みアプリを作成するには、「 カスタム アプリケーションの作成」を参照してください。
次のコマンドを実行して、登録したアプリケーションを使用してサインインします。
Connect-Entra -ClientId <your-custom-app-id> -TenantId <your-tenant-id>
AppIdの代わりにエイリアスApplicationIdまたはClientIdを使用することもできます。
セキュリティ
セキュリティを強化するために、アプリに次の同意と承認のベスト プラクティスを適用します。
最小特権の適用: Microsoft Entra リソースを呼び出すために必要な最小の特権アクセス許可のみをユーザーとアプリに付与します。 最小特権のアクセス許可を選択します。 たとえば、アプリが現在サインインしているユーザーのプロファイルのみを読み取る場合は、
User.ReadではなくUser.ReadBasic.Allを付与します。 アクセス許可の完全な一覧については、 アクセス許可のリファレンスを参照してください。Disconnect-Entra を使用する: アカウントに関連付けられているすべての資格情報とコンテキストを削除するには、常に Disconnect-Entra を実行します。 このコマンドレットは、不要になった接続を適切にクリーンアップして閉じます。 セッションが開いたままになっている場合や、他のユーザーが PowerShell 環境にアクセスした場合に、不正アクセスのリスクが軽減されます。
シナリオに基づいて適切なアクセス許可の種類を使用する: 同じアプリでアプリケーションと委任されたアクセス許可の両方を使用しないでください。 サインインしているユーザーが存在する対話型アプリケーションをビルドする場合は、 アプリケーションで委任されたアクセス許可を使用する必要があります。 ただし、バックグラウンド サービスやデーモンなど、サインインしているユーザーなしでアプリケーションを実行する場合は、アプリケーションで アプリケーションのアクセス許可を使用する必要があります。
アプリケーションのアクセス許可に注意する: ユーザーの特権を意図せずに昇格させ、管理者ポリシーをバイパスする可能性があるため、セキュリティとコンプライアンスのリスクを防ぐために、対話型のシナリオでアプリケーションのアクセス許可を使用しないようにします。
アプリを構成するときは注意が必要です。この構成は、アプリケーションの導入とセキュリティに加えて、エンド ユーザーと管理者のエクスペリエンスにも影響します。 例えば次が挙げられます。
- アプリケーションの名前、ロゴ、ドメイン、発行元の確認状態、プライバシーに関する声明、使用条件は、同意やその他のエクスペリエンスに表示されます。 エンド ユーザーがこれらの設定を理解できるように、これらの設定を慎重に構成します。
- アプリケーションに同意するユーザー (エンド ユーザーまたは管理者) を検討し、 アクセス許可を適切に要求するようにアプリケーションを構成します。
- 静的、動的、増分の同意の違いを理解していることを確認します。
権限の肥大化に注意 - 時間の経過とともに登録済みのアプリに付与されていくアクセス許可を常に確認してください。
セキュリティの既定値と条件付きアクセスを活用する - 条件付きアクセス (ライセンス付与された組織の場合) とセキュリティの既定値 (ライセンスのない組織の場合) を使用して、Microsoft Entra多要素認証でユーザーを保護します。
Microsoft Entra の推奨事項を活用する - Microsoft Entra の推奨事項機能はテナントの状態を継続的に監視し、安全で正常な状態を維持できるようにします。 使用中のアプリ、有効期限切れの資格情報、特権を超えるアプリケーションなどを可視化できます。
アプリのサインインを割り当てられた ID のみに制限 する -
Assignment Requiredプロパティは、割り当てられたユーザーのみがサインインできるようにすることで、アプリケーションへのアクセスを管理するのに役立ちます。
Connect-Entra -Scopes 'Application.ReadWrite.All'
Get-EntraServicePrincipal -Filter "DisplayName eq 'Contoso Demo App'" | Set-EntraServicePrincipal -AppRoleAssignmentRequired $true
パフォーマンスの最適化
次のプラクティスは、Microsoft Entra PowerShell を使用する場合のパフォーマンスの最適化に役立ちます。
フィルターを使用する
フィルター処理は、コレクションのサブセットを取得するように選択を制限することでサーバー側で行われます。これにより、不要なネットワーク トラフィックとデータ処理を減らすことができます。
Get-EntraUser -Filter "startsWith(DisplayName,'Ada')"
必須プロパティのみを選択する
必須プロパティのみを取得するために、 -Property パラメーターを使用して必須プロパティを選択します。
ページ サイズを定義する
多数のオブジェクトを返す要求の場合は、 パラメーターを使用して、ページ サイズを最大値-top増やします。
Get-EntraUser -All -Top 999
Maintenance
次のメンテナンスのベスト プラクティスを適用して、Microsoft Entra PowerShell モジュールとスクリプトが最新で、最適に機能していることを確認します。
Microsoft Entra PowerShell モジュールを最新の状態に保つ
モジュールを最新の状態に保つことは、いくつかの理由で非常に重要です。 まず、最新の機能と拡張機能を利用して、最新のコマンドレットと機能にアクセスできます。 さらに重要なのは、定期的な更新によってセキュリティ体制が向上することです。 Microsoft のチームは、セキュリティ修正プログラムとパッチを一貫して実装し、脆弱性からシステムを保護します。
Tip
Azure Automationで Microsoft Entra PowerShell を使用する場合は、Azure Automation アカウントの PowerShell モジュールも更新します。
Update-Module -Name Microsoft.Entra
モジュールを更新した後、古いバージョンを削除します。
Get-Help を使用する
Get-Help は、コマンド ラインで直接包括的なドキュメントを提供します。 使用例、受け入れられたパラメーター、出力など、Microsoft Entra PowerShell コマンドレット、関数、スクリプト、概念に関する詳細情報が提供されます。 Get-Help は、効率的なスクリプト作成を促進し、一般的な間違いを回避するのに役立ちます。
Get-Help Get-EntraUser -Detailed
デバッグ オプションを使用する
-Debugは、Microsoft Entra PowerShell を操作するときに詳細な診断情報を提供することで、トラブルシューティングに役立ちます。 スクリプトがどのように機能し、開発とテストの段階で問題が発生する可能性があるかを正確に理解するのに役立ちます。
Get-EntraUser -Top 1 -Debug
デバッグ出力ストリームをログ ファイルに送信するには、次のコマンドを使用します。
Get-EntraUser -Top 1 -Debug 5>> <your-log-filepath>
-
5- ストリーム番号 (Debug Stream) を表します。 ストリームの詳細については、「 出力ストリーム」を参照してください。 -
>>- リダイレクト演算子を表します。 リダイレクト演算子の詳細については、「リダイレクト 演算子」を参照してください。