Microsoft Entra ID(旧Azure AD)におけるアプリの登録は、Azureリソースやインフラとアプリケーションを安全に連携させるための重要な機能です。この記事では、インフラ管理者の視点からアプリの登録について詳しく解説します。
アプリの登録とは?
アプリの登録とは、Microsoft Entra IDにアプリケーションを認証対象として登録し、Azureリソースへのアクセスを制御するための機能です。
登録時には、下記のアプリケーションの基本情報を設定し、そのアプリケーションがどのようにAzureリソースにアクセスするかを定義します。
- 表示名
- サポートされるアカウントタイプ
- リダイレクトURL
これにより、アプリケーションはサービスプリンシパルとしてAzureリソースに対して認証を行い、適切な権限に基づいてリソースの操作が可能になります。
アプリケーションを認証対象として登録したら何がいいの?
アプリケーションを認証対象として登録することで、以下のようなメリットがあります:
人間のアカウントに依存しない自動化が可能
個人のユーザーアカウントではなく、専用のアプリケーション認証情報を使用することで、担当者の退職や異動に影響されずに継続的な運用ができます。
きめ細かなアクセス制御が実現できる
アプリケーションごとに必要最小限の権限のみを付与でき、セキュリティリスクを最小化できます。例えば、バックアップツールには読み取り専用権限、デプロイツールには特定のリソースグループへの書き込み権限のみを与えることができます。
複数環境での権限分離
従来の個人アカウントベースの運用では、開発者が本番環境にもアクセスできてしまうリスクがありました。アプリ登録を活用することで、環境ごとに異なるサービスプリンシパルを作成し、適切な権限分離が可能になります。
例:
- 開発環境用サービスプリンシパル:開発リソースグループのみに「Contributor」権限
- ステージング環境用サービスプリンシパル:ステージングリソースグループのみに「Contributor」権限
- 本番環境用サービスプリンシパル:本番リソースグループに限定された権限
これにより、同じTerraformスクリプトやCI/CDパイプラインを使いながら、環境ごとに異なる認証情報で実行することで、意図しない環境への影響を防げます。
サービスプリンシパルって何?
サービスプリンシパルとは、アプリケーションがAzureリソースにアクセスするためのアイデンティティです。人間のユーザーアカウントと同様に、Azureにおけるアクセス主体の一種ですが、アプリケーションやサービス専用に設計されています。
具体的には、アプリを登録すると自動的にサービスプリンシパルが作成され、以下の特徴を持ちます:
- 非対話的な認証:人間による手動ログインが不要で、プログラムが自動的に認証を行えます
- 長期間有効:適切に設定すれば24時間365日稼働するアプリケーションでも継続的にアクセス可能です
- ロールベースアクセス制御(RBAC)の対象:Azure RBACによって、必要な権限のみを付与できます
- 監査対象:すべてのアクティビティがログに記録され、追跡可能です
例えば、Terraformスクリプトを実行する際、TerraformはサービスプリンシパルとしてAzureに認証し、ARM APIを呼び出してリソースを作成・更新します。この時、Terraformには「Contributor」ロールが付与されているため、リソースの作成・変更は可能ですが、課金情報の閲覧などはできません。
どんなときに利用するのか?
アプリの登録は以下のようなAzureインフラ管理の場面で利用されます。
自動化スクリプトやCI/CDパイプライン
Azure DevOps、GitHub Actions、Jenkinsなどから自動的にAzureリソースをデプロイ・管理する際に、パイプライン用のサービスプリンシパルとしてアプリを登録します。これにより、人間のアカウントではなく専用の認証情報でリソース操作を実行できます。
Infrastructure as Code(IaC)ツールとの連携
Terraform、ARM Template、Bicepなどを使用してAzureリソースを管理する際、これらのツールがAzure Resource Manager APIにアクセスするためのサービスプリンシパルが必要になります。
監視・運用ツールの連携
Prometheus、Grafana、Datadogなどのサードパーティ監視ツールがAzure Monitor APIからメトリクスを取得したり、Log Analytics workspaceにアクセスしたりする場合に必要です。
カスタム管理ツールの開発
社内で開発したAzureリソース管理用のWebアプリケーションやコマンドラインツールが、プログラムからAzure APIを呼び出す際に使用されます。
Azureサーバーレス・コンテナサービスでの利用
Azure FunctionsやLogic Appsなどのサーバーレスアプリケーションが他のAzureサービスと連携する際や、Azure Kubernetes Service (AKS)のワークロードがAzure Key VaultやAzure Container Registryにアクセスする場合にも利用されます。
アプリの登録方法
Microsoft Entra IDでのアプリの登録は、Azure portalから実行できます。
まず、Azure portalにサインインし、「Microsoft Entra ID」サービスにアクセスします。
左側のナビゲーションメニューから「管理」セクション内の「アプリの登録」を選択します。
アプリの登録画面で、上部にある「新規登録」ボタンをクリックします。登録フォームでは以下の情報を入力します。
名前:アプリケーションの表示名を入力します。インフラ管理の場合、「terraform-prod」「ci-cd-pipeline」「monitoring-tool」などの用途が分かりやすい名前を推奨します。
サポートされているアカウントの種類:通常は「この組織ディレクトリのみに含まれるアカウント」を選択します。外部パートナーとの連携が必要な場合のみ、他のオプションを検討してください。
リダイレクトURI:Webアプリケーションの場合は設定が必要ですが、サービスプリンシパルとして使用する場合は通常空白のままで問題ありません。
登録が完了すると、アプリケーションの詳細画面が表示されます。ここで重要な情報を確認できます。
- アプリケーション(クライアント)ID:API呼び出し時の認証に使用
- オブジェクトID:Azure RBAC設定時に使用
- ディレクトリ(テナント)ID:マルチテナント環境での識別に使用
サービスプリンシパルとして使用する場合は、「証明書とシークレット」から新しいクライアントシークレットを作成するか、証明書をアップロードして認証情報を設定します。
利用する際に気をつけることは?
アプリの登録をインフラ管理で利用する際は、以下のセキュリティと運用の注意点があります。
最小権限の原則を徹底
サービスプリンシパルには必要最小限のAzure RBACロールのみを割り当て、リソースグループやサブスクリプションレベルでの過度な権限付与を避けてください。例えば、特定のストレージアカウントのみにアクセスが必要な場合は、そのリソースに対してのみ「Storage Blob Data Contributor」ロールを付与します。
クライアントシークレットのライフサイクル管理
シークレットには適切な有効期限を設定し、定期的にローテーションしてください。Azure Key Vaultを使用してシークレットを安全に保管し、アプリケーションからは Key Vault 経由でアクセスすることを推奨します。本番環境では証明書ベースの認証も検討してください。
ネットワークセキュリティを考慮する
可能な限り、特定のAzure仮想ネットワークやIPアドレス範囲からのアクセスのみを許可する条件付きアクセスポリシーを設定してください。
監査とログ記録を適切に設定
Azure Activity LogやEntra ID監査ログを確認し、サービスプリンシパルの活動を定期的に監視してください。異常なAPIコール数や想定外のリソースへのアクセスがないかチェックします。
まとめ
Microsoft Entra IDのアプリの登録は、Azureインフラの自動化と安全な管理を実現するための基盤となる重要な機能です。適切に設定することで、CI/CDパイプライン、IaCツール、監視システムなどとAzureリソースを安全に連携させることができます。
ただし、インフラ管理においては特にセキュリティリスクが高いため、最小権限の原則、定期的なシークレットローテーション、継続的な監査などのベストプラクティスを必ず遵守してください。計画的にアプリの登録を活用し、Azureインフラの運用効率化と自動化を安全に推進していきましょう。