AZ−500受験に向けた知識メモ

# AZ-500試験に向けた詳細知識メモ

今回は、AZ-500（Microsoft Azure セキュリティ テクノロジ）の受験の時に自分がこんがらがってしまったものについて、ChatGPTやMSlearnなどで調べたAzureの認証とアクセス管理に関連する主要なトピックについて、少し説明しようと思います。**マネージドID**、**サービス プリンシパル**、そして**アプリの登録**は、Azure上でセキュリティを管理する際に不可欠な概念です。それぞれの仕組みの違いや使用シナリオについて掘り下げて解説していきます。

:::note warn
情報が誤っている可能性もゼロではないので、あくまで参考程度として、詳しくは公式ドキュメントを参照してください。
:::

## 1. マネージドID（Managed Identity）

### 概要
**マネージドID**は、Azureが特定のリソースに対して自動でIDを割り当てる機能です。このIDを使って、Azureリソースは他のAzureサービスにアクセスできます。**手動で認証情報を管理する必要がない**ため、パスワード漏洩のリスクや更新作業を避けられます。

### 特徴
- **Azureによる自動管理**: AzureがIDの作成、更新、削除などを自動で行うため、開発者や運用担当者はパスワードや証明書を意識する必要がありません。
- **システム割り当てID**と**ユーザー割り当てID**の2種類:  
  - **システム割り当てID**は特定のAzureリソース（例: VMやApp Service）に1つだけ自動的に割り当てられます。
  - **ユーザー割り当てID**は複数のリソースで使いまわすことができ、IDを手動で割り当てます。
- **最小特権アクセスの実現**: 必要なリソースに対して最低限の権限のみを付与し、セキュリティリスクを最小限に抑えます。

### 利用シナリオ
- **Azure Key Vaultからのシークレットや証明書の取得**: Azure VMがKey Vaultのシークレットにアクセスし、機密情報を安全に使用するシナリオが一般的です。
- **App Serviceからストレージアクセス**: WebアプリがAzure Blob Storageに対して直接アクセスする際に、パスワードを使わずにセキュアなアクセスを実現します。

### メリット
- **パスワードや証明書不要**: パスワードの更新や管理ミスによるセキュリティリスクを軽減。
- **Azureリソース内で完結**: Azureサービス間のアクセスを安全に管理しやすい。

---

## 2. サービス プリンシパル（Service Principal）

### 概要
**サービス プリンシパル**は、Azure Active Directory (Azure AD) 内でアプリケーションや自動化プロセスがリソースにアクセスするために使われるIDです。手動で管理されるため、**クライアントシークレットや証明書**を自分で設定・更新する必要があります。

### 特徴
- **手動管理が必要**: マネージドIDとは異なり、クライアントID、シークレット、証明書を自分で管理しなければなりません。
- **外部アクセスのサポート**: 主に、**外部アプリケーションやサービス**がAzureにアクセスする場合に利用されます。Azure外のサービスがリソースを操作するための認証に使われることが多いです。
- **ロールベースアクセス制御（RBAC）**に基づいてアクセス権を付与: サービス プリンシパルには、特定のAzureリソースへのアクセス権限がロールとして割り当てられます。

### 利用シナリオ
- **CI/CDパイプライン**: JenkinsやGitHub Actionsなどの外部のCI/CDツールがAzureにデプロイを行う際に、サービス プリンシパルを使って認証します。
- **サードパーティのサービス連携**: 例えば、SalesforceやServiceNowがAzureリソースにアクセスする際、サービス プリンシパルを使用してセキュアに接続します。

### メリット
- **細かいアクセス制御**: サービスごとに必要なアクセス権限を設定し、きめ細かな権限管理が可能です。
- **外部システムと連携しやすい**: 外部サービスがAzureリソースにアクセスする際に非常に便利です。

---

## 3. アプリの登録（App Registration）

### 概要
**アプリの登録**は、Azure Active Directoryにアプリケーションを登録するプロセスで、**サービス プリンシパル**を作成するためのベースとなります。登録されたアプリは、**クライアントID**や**クライアントシークレット**を通じてAzureリソースにアクセスできます。アプリの登録によって、Azure内外のサービスがAzure ADを使って認証を行えるようになります。

### 特徴
- **認証情報のベースを提供**: クライアントIDやシークレットを作成し、Azure ADを使用してアプリの認証を管理します。
- **マルチテナント対応**: 複数のAzureテナントに対してサービスを提供するアプリをサポート。各テナントで別々のサービス プリンシパルが作成されます。
- **OAuth 2.0やOpenID Connectに対応**: 標準的な認証プロトコルをサポートしており、他のクラウドサービスやオンプレミスシステムとの認証統合が可能です。

### 利用シナリオ
- **カスタムアプリの認証**: 独自に開発したWebアプリケーションやモバイルアプリをAzure ADに登録し、Azureリソースに安全にアクセスさせます。
- **サードパーティアプリの認証**: Office 365やSalesforceのような外部アプリケーションがAzure ADを使って認証する際に必要です。
- **シングルサインオン（SSO）**: アプリ登録を通じて、ユーザーが一度サインインするだけで複数のアプリケーションにアクセスできるSSOを実装します。

---

## マネージドIDとサービス プリンシパルの違い

| 比較項目            | マネージドID                              | サービス プリンシパル                          |
|---------------------|------------------------------------------|----------------------------------------------|
| 管理方法            | Azureが自動管理                          | 手動で管理（クライアントID、シークレットが必要） |
| 利用シナリオ        | Azureリソース同士のアクセス                | 外部サービスやカスタムアプリケーションのアクセス |
| 設定の手間          | 自動化されており簡単                      | 手動で設定や管理が必要                          |
| 対象リソース        | Azure内のリソース                         | Azure外のサービスやアプリケーション                |

---

## SAS（Shared Access Signature）

### 概要
**SAS (Shared Access Signature)**は、Azure Storageリソースへの一時的なアクセス許可を発行するトークンです。これにより、特定の期間、特定のリソースに対して読み取りや書き込み権限を提供できます。

### 主なタイプ
1. **アカウントSAS**: ストレージアカウント全体へのアクセス権限を発行します。
2. **サービスSAS**: 特定のサービス（例: Blob、Queue）に対してのみアクセス許可を付与します。
3. **ユーザー委任SAS**: Azure ADベースの認証を利用して、より細かいアクセス制御を行います。

### 利用シナリオ
- **一時的なデータ共有**: 特定の期間だけ外部のユーザーやサービスにストレージリソースへのアクセス権限を提供したい場合に利用します。
- **開発環境でのデータアクセス制限**: 開発チームや外部パートナーに限られた期間、限られたリソースへのアクセスを許可する際に役立ちます。

---

## まとめ

- **マネージドID**は、Azureリソース同士のセキュアなアクセスに最適で、自動管理されるため運用が簡単です。
- **サービス プリンシパル**は、外部サービスやカスタムアプリケーションがAzureリソースにアクセスする際に利用されますが、手動での管理が必要です。
- **アプリの登録**は、Azure ADを利用

してアプリケーションを認証し、カスタムアプリやサードパーティアプリケーションがAzureと連携できるようにする仕組みです。
- **SAS**は、Azure Storageリソースへの一時的で限定的なアクセス権限を提供するトークンで、データのセキュアな共有に便利です。

これらの概念を理解することで、Azure上でのセキュリティやアクセス管理がより強固で効率的になります。