Translated ['src/pentesting-cloud/azure-security/az-basic-information/RE

This commit is contained in:
Translator
2025-02-10 23:33:05 +00:00
parent 8225031e4f
commit 6ff84dfb75
2 changed files with 88 additions and 80 deletions

View File

@@ -15,7 +15,7 @@
- 各管理グループとサブスクリプションは**1つの親**のみをサポートできます。
- 複数の管理グループを作成できる場合でも、**ルート管理グループは1つだけ**です。
- ルート管理グループは**すべての他の管理グループとサブスクリプションを含み**、**移動または削除することはできません**。
- 単一の管理グループ内のすべてのサブスクリプションは**同じEntra IDテナントを信頼**しなければなりません。
- 単一の管理グループ内のすべてのサブスクリプションは**同じEntra IDテナントを信頼**しなければなりません。
<figure><img src="../../../images/image (147).png" alt=""><figcaption><p><a href="https://td-mainsite-cdn.tutorialsdojo.com/wp-content/uploads/2023/02/managementgroups-768x474.png">https://td-mainsite-cdn.tutorialsdojo.com/wp-content/uploads/2023/02/managementgroups-768x474.png</a></p></figcaption></figure>
@@ -28,7 +28,7 @@
### リソースグループ
[ドキュメントから:](https://learn.microsoft.com/en-us/azure/azure-resource-manager/management/manage-resource-groups-python?tabs=macos#what-is-a-resource-group) リソースグループは、Azureソリューションのための**関連リソース**を保持する**コンテナ**です。リソースグループには、ソリューションのすべてのリソースを含めることも、管理したい**リソースのみ**を含めることもできます。一般的に、**同じライフサイクル**を共有する**リソース**を同じリソースグループに追加することで、グループとして簡単に展開、更新、削除できます。
[ドキュメントから:](https://learn.microsoft.com/en-us/azure/azure-resource-manager/management/manage-resource-groups-python?tabs=macos#what-is-a-resource-group) リソースグループは、Azureソリューションのための**関連リソース**を保持する**コンテナ**です。リソースグループには、ソリューションのすべてのリソースを含めることも、管理したい**リソースのみ**を含めることもできます。一般的に、**同じライフサイクル**を共有する**リソース**を同じリソースグループに追加することで、グループとして簡単にデプロイ、更新、削除できます。
すべての**リソース**は**リソースグループ内**に存在し、グループにのみ属することができ、リソースグループが削除されると、その中のすべてのリソースも削除されます。
@@ -42,19 +42,19 @@ AzureリソースIDの形式は次のとおりです
- `/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}`
サブスクリプションID `12345678-1234-1234-1234-123456789012` のリソースグループ `myResourceGroup` にある仮想マシン名 myVM のAzureリソースIDは次のようになります
サブスクリプションID `12345678-1234-1234-1234-123456789012` のリソースグループ `myResourceGroup` にある仮想マシン名myVMのAzureリソースIDは次のようになります
- `/subscriptions/12345678-1234-1234-1234-123456789012/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachines/myVM`
## Azure vs Entra ID vs Azure ADドメインサービス
## AzureEntra IDAzure ADドメインサービス
### Azure
Azureは、Microsoftの包括的な**クラウドコンピューティングプラットフォームであり、幅広いサービスを提供**しています。これには、仮想マシン、データベース、人工知能、ストレージが含まれます。Azureは、アプリケーションのホスティングと管理、スケーラブルなインフラストラクチャの構築、クラウドでの最新のワークロードの実行の基盤として機能します。Azureは、開発者やIT専門家がアプリケーションやサービスをシームレスに作成、展開、管理できるツールを提供し、スタートアップから大企業までさまざまなニーズに対応します。
Azureは、Microsoftの包括的な**クラウドコンピューティングプラットフォームであり、幅広いサービスを提供**しています。これには、仮想マシン、データベース、人工知能、ストレージが含まれます。Azureは、アプリケーションのホスティングと管理、スケーラブルなインフラストラクチャの構築、クラウドでの最新のワークロードの実行の基盤として機能します。Azureは、開発者やIT専門家がアプリケーションやサービスをシームレスに作成、デプロイ、管理できるツールを提供し、スタートアップから大企業までさまざまなニーズに対応します。
### Entra ID旧Azure Active Directory
Entra IDは、認証、承認、ユーザーアクセス制御を処理するために設計されたクラウドベースの**アイデンティティおよびアクセス管理サービス**です。これは、Office 365、Azure、その他の多くのサードパーティのSaaSアプリケーションへの安全なアクセスを提供します。シングルサインオンSSO、多要素認証MFA、条件付きアクセスポリシーなどの機能を備えています。
Entra IDは、認証、承認、ユーザーアクセス制御を処理するために設計されたクラウドベースの**アイデンティティおよびアクセス管理サービス**です。これは、Office 365、Azure、および多くのサードパーティのSaaSアプリケーションへの安全なアクセスを提供します。シングルサインオンSSO、多要素認証MFA、条件付きアクセスポリシーなどの機能を備えています。
### Entraドメインサービス旧Azure AD DS
@@ -65,21 +65,21 @@ Entraドメインサービスは、従来のWindows Active Directory環境と互
### ユーザー
- **新しいユーザー**
- 選択したテナントからのメール名とドメインを示す
- 表示名を示す
- パスワードを示す
- プロパティ(名、職名、連絡先情報など)を示す
- 選択したテナントからのメール名とドメインを指定
- 表示名を指定
- パスワードを指定
- プロパティを指定(名、職名、連絡先情報など)
- デフォルトのユーザータイプは「**メンバー**」
- **外部ユーザー**
- 招待するメールと表示名を示すMicrosoft以外のメールも可
- プロパティを示す
- 招待するメールと表示名を指定Microsoft以外のメールも可
- プロパティを指定
- デフォルトのユーザータイプは「**ゲスト**」
### メンバーとゲストのデフォルト権限
[https://learn.microsoft.com/en-us/entra/fundamentals/users-default-permissions](https://learn.microsoft.com/en-us/entra/fundamentals/users-default-permissions) で確認できますが、メンバーは以下のアクションを実行できます:
- すべてのユーザー、グループ、アプリケーション、デバイス、役割、サブスクリプション、およびその公開プロパティを読み取る
- すべてのユーザー、グループ、アプリケーション、デバイス、ロール、サブスクリプション、およびその公開プロパティを読み取る
- ゲストを招待する_オフにすることが可能_
- セキュリティグループを作成する
- 非表示のグループメンバーシップを読み取る
@@ -109,8 +109,8 @@ Entraドメインサービスは、従来のWindows Active Directory環境と互
- **ゲストユーザーアクセスは自分のディレクトリオブジェクトのプロパティとメンバーシップに制限されています**が最も制限的です。
- **ゲストを招待できる**オプション:
- **組織内の誰でもゲストユーザーを招待できます(最も包括的) - デフォルト**
- **メンバーユーザーおよび特定の管理役割に割り当てられたユーザーは、メンバー権限を持つゲストを含むゲストユーザーを招待できます**
- **特定の管理役割に割り当てられたユーザーのみがゲストユーザーを招待できます**
- **メンバーユーザーおよび特定の管理ロールに割り当てられたユーザーは、メンバー権限を持つゲストを含むゲストユーザーを招待できます**
- **特定の管理ロールに割り当てられたユーザーのみがゲストユーザーを招待できます**
- **組織内の誰もゲストユーザーを招待できません(最も制限的)**
- **外部ユーザーの退会**:デフォルトは**真**
- 外部ユーザーが組織を離れることを許可
@@ -133,26 +133,27 @@ Entraドメインサービスは、従来のWindows Active Directory環境と互
### **サービスプリンシパル**
**サービスプリンシパル**は、**アプリケーション**、ホスティングサービス、および自動化ツールがAzureリソースにアクセスするために**使用**される**アイデンティティ**です。このアクセスは、サービスプリンシパルに割り当てられた役割によって**制限され**、**どのリソースにアクセスできるか**を制御します。セキュリティ上の理由から、**ユーザーアイデンティティでログインさせるのではなく、自動化ツールとともにサービスプリンシパルを使用することを常に推奨します**。
**サービスプリンシパル**は、**アプリケーション**、ホスティングサービス、および自動化ツールがAzureリソースにアクセスするために**使用**される**アイデンティティ**です。このアクセスは、サービスプリンシパルに割り当てられたロールによって**制限され**、**どのリソースにアクセスできるか**を制御します。セキュリティ上の理由から、**ユーザーアイデンティティでログインさせるのではなく、自動化ツールとともにサービスプリンシパルを使用することを常に推奨します**。
サービスプリンシパルとして**直接ログイン**することも可能で、**シークレット**(パスワード)、**証明書**を生成するか、第三者プラットフォームGithub Actionsへの**フェデレーテッド**アクセスを付与することができます。
サービスプリンシパルとして**直接ログインする**ことも可能で、**シークレット**(パスワード)、**証明書**、または第三者プラットフォームGithub Actionsへの**フェデレーテッド**アクセスを付与することができます。
- **パスワード**認証を選択した場合(デフォルト)、**生成されたパスワードを保存**してください。再度アクセスすることはできません。
- 証明書認証を選択した場合、**アプリケーションがプライベートキーにアクセスできることを確認**してください。
### アプリ登録
**アプリ登録**は、アプリケーションがEntra IDと統合し、アクションを実行できるようにするための構成です。
**アプリ登録**は、アプリケーションがEntra IDと統合し、アクションを実行するための構成です。
#### 主要コンポーネント:
1. **アプリケーションIDクライアントID** Azure AD内のアプリの一意の識別子。
2. **リダイレクトURI** Azure ADが認証応答を送信するURL。
3. **証明書、シークレット、フェデレーテッド資格情報:** アプリケーションのサービスプリンシパルとしてログインするためにシークレットまたは証明書を生成するか、フェデレーテッドアクセスを付与することできますGithub Actions
3. **証明書、シークレット、フェデレーテッド資格情報:** アプリケーションのサービスプリンシパルとしてログインするためにシークレットまたは証明書を生成することが可能で、またそれにフェデレーテッドアクセスを付与することできますGithub Actions
1. **証明書**または**シークレット**が生成された場合、**アプリケーションID**、**シークレット**または**証明書**、および**テナント**ドメインまたはIDを知っていることで、CLIツールを使用して**サービスプリンシパルとしてログイン**できます。
4. **API権限** アプリがアクセスできるリソースまたはAPIを指定します。
5. **認証設定:** アプリがサポートする認証フローを定義しますOAuth2、OpenID Connect
6. **サービスプリンシパル**:アプリが作成されるとサービスプリンシパルが作成されます(ウェブコンソールから行た場合)または新しいテナントにインストールされたとき
7. **サービスプリンシパル**は、構成されたすべての要求された権限を取得します。
6. **サービスプリンシパル**:アプリが作成されると(ウェブコンソールから行われた場合)、サービスプリンシパルが作成されます
1. **サービスプリンシパル**は、構成されたすべての要求された権限を取得します。
### デフォルト同意権限
@@ -160,8 +161,8 @@ Entraドメインサービスは、従来のWindows Active Directory環境と互
- **ユーザー同意を許可しない**
- すべてのアプリに対して管理者が必要です。
- **確認されたパブリッシャーからのアプリに対するユーザー同意を許可する、選択された権限について(推奨)**
- すべてのユーザーは、低影響」と分類された権限について、確認されたパブリッシャーからのアプリまたはこの組織に登録されたアプリに同意できます。
- **確認されたパブリッシャーからのアプリ、内部アプリ、および選択された権限のみを要求するアプリに対してユーザー同意を許可する(推奨)**
- すべてのユーザーは、"低影響"として分類された権限のみを要求するアプリ、確認されたパブリッシャーからのアプリ、およびテナントに登録されたアプリに同意できます。
- **デフォルト**の低影響権限(ただし、低影響として追加するには同意が必要):
- User.Read - サインインしてユーザープロファイルを読み取る
- offline_access - ユーザーがアクセスを許可したデータへのアクセスを維持する
@@ -174,7 +175,7 @@ Entraドメインサービスは、従来のWindows Active Directory環境と互
**管理者同意要求**:デフォルトは**いいえ**
- ユーザーは、同意できないアプリに対して管理者同意を要求できます。
- **はい**の場合:同意要求を行うことができるユーザー、グループ、役割を指定できます。
- **はい**の場合:同意要求を行うことができるユーザー、グループ、ロールを指定できます。
- ユーザーがメール通知や期限切れリマインダーを受け取るかどうかも設定できます。
### **管理されたアイデンティティ(メタデータ)**
@@ -183,7 +184,7 @@ Azure Active Directoryの管理されたアイデンティティは、アプリ
管理されたアイデンティティには2種類あります
- **システム割り当て**。一部のAzureサービスでは、**サービスインスタンスに直接管理されたアイデンティティを有効にする**ことができます。システム割り当ての管理されたアイデンティティを有効にすると、**サービスプリンシパル**がリソースが存在するサブスクリプションで信頼されるEntra IDテナントに作成されます。**リソース**が**削除される**と、Azureは自動的に**アイデンティティ**を削除します。
- **システム割り当て**。一部のAzureサービスでは、**サービスインスタンスに直接管理されたアイデンティティを有効にする**ことができます。システム割り当ての管理されたアイデンティティを有効にすると、リソースが存在するサブスクリプションで信頼されるEntra IDテナントに**サービスプリンシパル**が作成されます。**リソース**が**削除される**と、Azureは自動的に**アイデンティティ**を削除します。
- **ユーザー割り当て**。ユーザーが管理されたアイデンティティを生成することも可能です。これらは、サブスクリプション内のリソースグループ内に作成され、サブスクリプションで信頼されるEntraIDにサービスプリンシパルが作成されます。その後、管理されたアイデンティティを1つまたは**複数のインスタンス**のAzureサービスに割り当てることができます複数のリソース。ユーザー割り当ての管理されたアイデンティティの場合、**アイデンティティはそれを使用するリソースとは別に管理されます**。
管理されたアイデンティティは、サービスプリンシパルに付随する**永続的な資格情報**(パスワードや証明書など)を生成しません。
@@ -192,11 +193,11 @@ Azure Active Directoryの管理されたアイデンティティは、アプリ
これは、サービスプリンシパルをフィルタリングし、割り当てられたアプリケーションを確認するための**Azure内のテーブル**です。
**「エンタープライズアプリケーション」という別のタイプの「アプリケーション」ではありません**。Azureに「エンタープライズアプリケーション」というオブジェクトは存在せず、サービスプリンシパル、アプリ登録、管理されたアイデンティティを確認するための抽象化に過ぎません。
**別のタイプの「アプリケーション」ではありません。** Azureに「エンタープライズアプリケーション」というオブジェクトは存在せず、サービスプリンシパル、アプリ登録、管理されたアイデンティティを確認するための抽象化に過ぎません。
### 管理単位
管理単位は、**組織の特定の部分に対して役割から権限を付与する**ことを可能にします。
管理単位は、**組織の特定の部分に対してロールから権限を付与する**ことを可能にします。
例:
@@ -206,58 +207,58 @@ Azure Active Directoryの管理されたアイデンティティは、アプリ
- 各地域のユーザーでAUを構成します。
- AUは**ユーザー、グループ、またはデバイスを含むことができます**
- AUは**動的メンバーシップ**をサポートします。
- AUは**AUを含むことできません**。
- 管理役割を割り当てます:
- 地域のITスタッフに「ユーザー管理者」役割を付与し、その地域のAUにスコープを設定します。
- AUは**AUを含むことできません**。
- 管理ロールを割り当てます:
- 地域のITスタッフに「ユーザー管理者」ロールを付与し、その地域のAUにスコープを設定します。
- 結果地域のIT管理者は、他の地域に影響を与えることなく、自分の地域内のユーザーアカウントを管理できます。
### Entra IDの役割と権限
### Entra IDロールと権限
- Entra IDを管理するために、Entra IDプリンシパルに割り当てることができる**組み込みの役割**があります。
- 役割は[https://learn.microsoft.com/en-us/entra/identity/role-based-access-control/permissions-reference](https://learn.microsoft.com/en-us/entra/identity/role-based-access-control/permissions-reference)確認できます。
- EntraIDによって**`PRIVILEGED`**とマークされた役割は、注意して割り当てるべきです。なぜなら、Microsoftが[ドキュメントで説明しているように](https://learn.microsoft.com/en-us/entra/identity/role-based-access-control/permissions-reference):特権役割の割り当ては、安全で意図された方法で使用されない場合、特権の昇格につながる可能性があります。
- 最も特権のある役割は**グローバル管理者**です。
- 役割は**詳細な権限**をグループ化しており、その説明で見つけることができます。
- 希望する権限を持つ**カスタム役割**を作成すること可能です。ただし、何らかの理由で、すべての詳細な権限が管理者によるカスタム役割の作成に利用できるわけではありません。
- Entra IDの役割は、Azureの役割とは完全に**独立しています**。唯一の関係は、Entra IDで**グローバル管理者**の役割を持つプリンシパルが、Azureで**ユーザーアクセス管理者**の役割に昇格できることです。
- Entra IDの役割でワイルドカードを使用することは**できません**。
- Entra IDを管理するために、Entra IDプリンシパルに割り当てることができる**組み込みロール**があります。
- [https://learn.microsoft.com/en-us/entra/identity/role-based-access-control/permissions-reference](https://learn.microsoft.com/en-us/entra/identity/role-based-access-control/permissions-reference) でロールを確認できます。
- EntraIDによって**`PRIVILEGED`**とマークされたロールは、Microsoftが[ドキュメントで説明しているように](https://learn.microsoft.com/en-us/entra/identity/role-based-access-control/permissions-reference):特権ロールの割り当ては、安全で意図された方法で使用されない場合、特権の昇格につながる可能性があるため、注意して割り当てるべきです。
- 最も特権のあるロールは**グローバル管理者**です。
- ロールグループは**詳細な権限**をまとめており、それらは説明に記載されています。
- 希望する権限を持つ**カスタムロール**を作成すること可能です。ただし、何らかの理由で、すべての詳細な権限が管理者によるカスタムロールの作成に利用できるわけではありません。
- Entra IDのロールはAzureのロールとは完全に**独立しています**。唯一の関係は、Entra IDで**グローバル管理者**のロールを持つプリンシパルが、Azureで**ユーザーアクセス管理者**のロールに昇格できることです。
- Entra IDのロールでワイルドカードを使用することは**できません**。
## Azureの役割と権限
## Azureロールと権限
- **役割**は**スコープ**で**プリンシパル**に**割り当てられます** `principal -[HAS ROLE]->(scope)`
- **グループに割り当てられた役割**、グループのすべての**メンバー**に**継承されます**。
- 役割が割り当てられたスコープに応じて、**役割**はスコープコンテナ内の**他のリソース**に**継承される**可能性があります。たとえば、ユーザーAが**サブスクリプション**に役割を持っている場合、彼はその**サブスクリプション内のすべてのリソースグループ**および**リソースグループ内のすべてのリソース**にその役割を持ちます。
- **ロール**は**スコープ**で**プリンシパル**に**割り当てられます** `principal -[HAS ROLE]->(scope)`
- **グループに割り当てられたロールは**、グループのすべての**メンバー継承されます**。
- ロールが割り当てられたスコープに応じて、**ロール**はスコープコンテナ内の**他のリソース**に**継承される**可能性があります。たとえば、ユーザーAが**サブスクリプション**にロールを持っている場合、彼はその**サブスクリプション内のすべてのリソースグループ**および**リソースグループ内のすべてのリソース**にそのロールを持ちます。
### 組み込みの役割
### 組み込みロール
[ドキュメントから: ](https://learn.microsoft.com/en-us/azure/role-based-access-control/built-in-roles)[Azureロールベースアクセス制御Azure RBAC](https://learn.microsoft.com/en-us/azure/role-based-access-control/overview)には、**ユーザー、グループ、サービスプリンシパル、管理されたアイデンティティ**に**割り当てることができる**いくつかのAzureの**組み込みの役割**があります。役割の割り当ては、**Azureリソースへのアクセスを制御する方法**です。組み込みの役割が組織の特定のニーズを満たさない場合は、独自の[**Azureカスタム役割**](https://learn.microsoft.com/en-us/azure/role-based-access-control/custom-roles)を作成できます。
[ドキュメントから: ](https://learn.microsoft.com/en-us/azure/role-based-access-control/built-in-roles)[Azureロールベースアクセス制御Azure RBAC](https://learn.microsoft.com/en-us/azure/role-based-access-control/overview)には、**ユーザー、グループ、サービスプリンシパル、および管理されたアイデンティティ**に**割り当てることができる**いくつかのAzureの**組み込みロール**があります。ロールの割り当ては、**Azureリソースへのアクセスを制御する方法**です。組み込みロールが組織の特定のニーズを満たさない場合は、独自の[**Azureカスタムロール**](https://learn.microsoft.com/en-us/azure/role-based-access-control/custom-roles)を作成できます。
**組み込み**役割は、**意図された**リソースにのみ適用されます。たとえば、の2つの**組み込みの役割**の例を確認してください:
**組み込み**ロールは、**意図されたリソース**にのみ適用されます。たとえば、以下の2つの**組み込みロール**の例を確認してください:
| [ディスクバックアップリーダー](https://learn.microsoft.com/en-us/azure/role-based-access-control/built-in-roles#disk-backup-reader) | バックアップボールトにディスクバックアップを実行する権限を提供します。 | 3e5e47e6-65f7-47ef-90b5-e5dd4d455f24 |
| ----------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------- | ------------------------------------ |
| [仮想マシンユーザーログイン](https://learn.microsoft.com/en-us/azure/role-based-access-control/built-in-roles#virtual-machine-user-login) | ポータルで仮想マシンを表示し、通常のユーザーとしてログインします。 | fb879df8-f326-4884-b1cf-06f3ad86be52 |
これらの役割は、**管理グループ、サブスクリプション、リソースグループ**などの論理コンテナにも割り当てることができ、影響を受けるプリンシパルは**それらのコンテナ内のリソースに対して役割を持ちます**。
これらのロールは、**論理コンテナ**管理グループ、サブスクリプション、リソースグループなど)にも**割り当てることができ**、影響を受けるプリンシパルは**それらのコンテナ内のリソースに対してロールを持ちます**。
- ここに[**すべてのAzure組み込みの役割**](https://learn.microsoft.com/en-us/azure/role-based-access-control/built-in-roles)のリストがあります。
- ここに[**すべてのEntra ID組み込みの役割**](https://learn.microsoft.com/en-us/azure/active-directory/roles/permissions-reference)のリストがあります。
- ここに[**すべてのAzure組み込みロール**](https://learn.microsoft.com/en-us/azure/role-based-access-control/built-in-roles)のリストがあります。
- ここに[**すべてのEntra ID組み込みロール**](https://learn.microsoft.com/en-us/azure/active-directory/roles/permissions-reference)のリストがあります。
### カスタム役割
### カスタムロール
- [**カスタム役割**](https://learn.microsoft.com/en-us/azure/role-based-access-control/custom-roles)を作成することも可能です。
- これらはスコープ内に作成されますが、役割は複数のスコープ(管理グループ、サブスクリプション、リソースグループ)に存在できます。
- カスタム役割が持つすべての詳細な権限を構成できます。
- [**カスタムロール**](https://learn.microsoft.com/en-us/azure/role-based-access-control/custom-roles)を作成することも可能です。
- これらはスコープ内に作成されますが、ロールは複数のスコープ(管理グループ、サブスクリプション、リソースグループ)に存在できます。
- カスタムロールが持つすべての詳細な権限を構成することが可能です。
- 権限を除外することも可能です。
- 除外された権限を持つプリンシパルは、他の場所で権限が付与されていてもその権限を使用できません。
- ワイルドカードを使用すること可能です。
- ワイルドカードを使用すること可能です。
- 使用される形式はJSONです。
- `actions`は、リソースの作成、更新、削除などの管理操作に対する権限を指します。
- `dataActions`は、リソース内のデータ操作に対する権限であり、リソース内の実際のデータを読み取ったり、書き込んだり、削除したりすることを許可します。
- `notActions`および`notDataActions`は、役割から特定の権限を除外するために使用されます。ただし、**それらを拒否するわけではありません**。別の役割がそれらを付与する場合、プリンシパルはそれらを持ちます。
- `assignableScopes`は、役割を割り当てることができるスコープの配列です(管理グループ、サブスクリプション、リソースグループなど)。
- `notActions`および`notDataActions`は、ロールから特定の権限を除外するために使用されます。ただし、**それらを拒否するわけではなく**、異なるロールがそれらを付与する場合、プリンシパルはそれらを持ちます。
- `assignableScopes`は、ロールを割り当てることができるスコープの配列です(管理グループ、サブスクリプション、リソースグループなど)。
カスタム役割の権限JSONの例
カスタムロールの権限JSONの例
```json
{
"properties": {
@@ -296,7 +297,7 @@ Azure Active Directoryの管理されたアイデンティティは、アプリ
### Global Administrator
Global Administratorは、**Entra IDテナントに対する完全な制御を付与する**役割です。しかし、デフォルトではAzureリソースに対する権限は付与されません。
Global Administratorは、**Entra IDテナントに対する完全な制御を付与する**Entra IDの役割です。ただし、デフォルトではAzureリソースに対する権限は付与されません。
Global Administratorの役割を持つユーザーは、**Root Management Group内でUser Access Administrator Azure役割に「昇格」する能力を持っています**。したがって、Global Administratorsは**すべてのAzureサブスクリプションおよび管理グループでアクセスを管理できます。**\
この昇格はページの下部で行うことができます: [https://portal.azure.com/#view/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/\~/Properties](https://portal.azure.com/#view/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/~/Properties)
@@ -309,15 +310,15 @@ Global Administratorの役割を持つユーザーは、**Root Management Group
### Deny Assignments
役割の割り当てと同様に、**deny assignments**は**Azureリソースへのアクセスを制御するために使用されます**。しかし、**deny assignments**は、ユーザーが役割の割り当てを通じてアクセスを付与されている場合でも、リソースへのアクセスを**明示的に拒否するために使用されます**。**Deny assignments**は**役割の割り当てよりも優先され**、つまり、ユーザーが役割の割り当てを通じてアクセスを付与されていても、deny assignmentを通じて明示的にアクセス拒否されている場合、deny assignmentが優先されます。
役割の割り当てと同様に、**deny assignments**は**Azureリソースへのアクセスを制御するために使用されます**。ただし、**deny assignments**は、ユーザーが役割の割り当てを通じてアクセスを付与されている場合でも、リソースへのアクセスを**明示的に拒否するために使用されます**。**Deny assignments**は**役割の割り当てよりも優先され**、つまり、ユーザーが役割の割り当てを通じてアクセスを付与されているが、同時にdeny assignmentを通じて明示的にアクセス拒否されている場合、deny assignmentが優先されます。
役割の割り当てと同様に、**deny assignments**は、影響を受けるprincipalと拒否される権限を示すスコープに適用されます。さらに、deny assignmentsの場合、子リソースによって拒否が継承されるのを**防ぐことが可能です**。
役割の割り当てと同様に、**deny assignments**は、影響を受けるprincipalと拒否される権限を示すスコープに対して適用されます。さらに、deny assignmentsの場合、子リソースによって拒否が継承されるのを**防ぐことが可能です**。
### Azure Policies
**Azure Policies**は、組織がリソースが特定の基準およびコンプライアンス要件を満たすことを保証するためのルールです。これにより、**Azure内のリソースに設定を強制または監査することができます**。たとえば、許可されていない地域での仮想マシンの作成を防止したり、すべてのリソースに特定のタグを付けて追跡を確実にすることができます。
**Azure Policies**は、組織がリソースが特定の基準およびコンプライアンス要件を満たすことを保証するためのルールです。これにより、Azure内のリソースに対して**設定を強制または監査**することができます。たとえば、許可されていない地域での仮想マシンの作成を防止したり、すべてのリソースに特定のタグを付けて追跡を確実にすることができます。
Azure Policiesは**積極的**です: 非準拠のリソースが作成または変更されるのを防ぐことができます。また、**反応的**でもあり、既存の非準拠リソースを見つけて修正することができます。
Azure Policiesは**積極的**です: 非準拠のリソースが作成または変更されるのを防ぐことができます。また、**反応的**でもあり、既存の非準拠リソースを見つけて修正することができます。
#### **Key Concepts**
@@ -357,7 +358,7 @@ Azure policy json example:
```
### 権限の継承
Azureでは**権限は階層の任意の部分に割り当てることができます**。これには管理グループ、サブスクリプション、リソースグループ、および個々のリソースが含まれます。権限は、割り当てられたエンティティの**リソース**によって**継承**されます。
Azure **権限は階層の任意の部分に割り当てることができます**。これには管理グループ、サブスクリプション、リソースグループ、および個々のリソースが含まれます。権限は、割り当てられたエンティティの**リソース**によって**継承**されます。
この階層構造は、アクセス権限の効率的かつスケーラブルな管理を可能にします。
@@ -366,10 +367,10 @@ Azureでは**権限は階層の任意の部分に割り当てることができ
### Azure RBAC と ABAC
**RBAC**(ロールベースのアクセス制御)は、前のセクションで見たものです:**リソースへのアクセスを付与するために、プリンシパルにロールを割り当てる**ことです。\
しかし、場合によっては**より細かいアクセス管理**を提供したり、**数百の**ロール**割り当て**の管理を**簡素化**したいことがあります。
しかし、場合によっては**より細かいアクセス管理**を提供したり、**数百の**ロール**割り当て**の管理を**簡素化**したいことがあります。
Azure **ABAC**(属性ベースのアクセス制御)は、特定のアクションの文脈における**属性に基づくロール割り当て条件**を追加することでAzure RBACを拡張します。_ロール割り当て条件_は、**より細かいアクセス制御を提供するためにロール割り当てにオプションで追加できる追加のチェック**です。条件は、ロール定義およびロール割り当ての一部として付与される権限を絞り込みます。たとえば、**オブジェクトを読み取るために特定のタグを持つ必要がある条件を追加できます**。\
特定のリソースへの**アクセスを明示的に拒否する**ことは**条件を使用してはできません**
Azure **ABAC**(属性ベースのアクセス制御)は、特定のアクションの文脈における**属性に基づくロール割り当て条件**を追加することでAzure RBACを拡張します。_ロール割り当て条件_は、**より細かいアクセス制御を提供するためにオプションでロール割り当てに追加できる追加のチェック**です。条件は、ロール定義およびロール割り当ての一部として付与される権限を絞り込みます。たとえば、**オブジェクトを読み取るために特定のタグを持つ必要がある条件を追加できます**。\
特定のリソースへの**アクセスを明示的に** **拒否**することは**条件を使用して**はできません。
## 参考文献

View File

@@ -8,7 +8,7 @@
### アプリの同意権限
デフォルトでは、**ユーザーはアプリに同意できます**が、これは設定可能で、ユーザーが**選択された権限のために確認済みのパブリッシャーからのアプリにのみ同意できる**ようにすることや、ユーザーがアプリケーションに同意する権限を**削除する**こともできます。
デフォルトでは、**ユーザーはアプリに同意できます**が、これは設定可能で、ユーザーが**選択された権限の検証されたパブリッシャーのアプリにのみ同意できる**ようにすることや、**アプリケーションへの同意権限を削除する**こともできます。
<figure><img src="../../../images/image.png" alt=""><figcaption></figcaption></figure>
@@ -34,7 +34,7 @@
az rest --method GET --url "https://graph.microsoft.com/v1.0/policies/authorizationPolicy"
```
- ユーザーはすべてのアプリに同意できます: **`permissionGrantPoliciesAssigned`** 内に `ManagePermissionGrantsForSelf.microsoft-user-default-legacy` が見つかる場合、ユーザーはすべてのアプリケーションを受け入れることができます。
- ユーザーは確認済みのパブリッシャーまたは自組織のアプリに同意できますが、選択した権限のみ: **`permissionGrantPoliciesAssigned`** 内に `ManagePermissionGrantsForOwnedResource.microsoft-dynamically-managed-permissions-for-team` が見つかる場合、ユーザーはすべてのアプリケーションを受け入れることができます。
- ユーザーは確認済みのパブリッシャーまたは自組織からのアプリに同意できますが、選択した権限に対してのみ: **`permissionGrantPoliciesAssigned`** 内に `ManagePermissionGrantsForOwnedResource.microsoft-dynamically-managed-permissions-for-team` が見つかる場合、ユーザーはすべてのアプリケーションを受け入れることができます。
- **ユーザーの同意を無効にする**: **`permissionGrantPoliciesAssigned`** 内に `ManagePermissionGrantsForOwnedResource.microsoft-dynamically-managed-permissions-for-chat``ManagePermissionGrantsForOwnedResource.microsoft-dynamically-managed-permissions-for-team` のみが見つかる場合、ユーザーは同意できません。
コメントされたポリシーの意味を見つけることができます:
@@ -64,12 +64,12 @@ az rest --method GET --url "https://graph.microsoft.com/v1.0/directoryRoles/0d60
1. **ドメイン登録とアプリケーションホスティング**: 攻撃者は、信頼できるサイトに似たドメイン(例:"safedomainlogin.com")を登録します。このドメインの下に、認証コードをキャプチャし、アクセストークンを要求するために設計されたアプリケーションをホストするサブドメイン(例:"companyname.safedomainlogin.com")を作成します。
2. **Azure ADでのアプリケーション登録**: 攻撃者は、ターゲット企業の名前を付けて、正当性を装ったマルチテナントアプリケーションを自分のAzure ADテナントに登録します。彼らは、悪意のあるアプリケーションをホストするサブドメインを指すようにアプリケーションのリダイレクトURLを設定します。
3. **権限の設定**: 攻撃者は、さまざまなAPI権限`Mail.Read``Notes.Read.All``Files.ReadWrite.All``User.ReadBasic.All``User.Read`)を持つアプリケーションを設定します。これらの権限は、ユーザーによって付与されると、攻撃者がユーザーの代わりに機密情報を抽出できるようにします。
4. **悪意のあるリンクの配布**: 攻撃者は、悪意のあるアプリケーションのクライアントIDを含むリンクを作成し、ターゲットユーザーと共有して、同意をるように騙します。
4. **悪意のあるリンクの配布**: 攻撃者は、悪意のあるアプリケーションのクライアントIDを含むリンクを作成し、ターゲットユーザーと共有して、同意を与えるように騙します。
## 例の攻撃
1. **新しいアプリケーション**を登録します。攻撃されたディレクトリのユーザーを使用している場合は現在のディレクトリのみに、外部攻撃の場合は任意のディレクトリに対して行うことができます(次の画像のように)。
1. また、**リダイレクトURI**、トークンを取得するためのコードを受け取る予定のURL(デフォルトでは`http://localhost:8000/callback`に設定します
1. **新しいアプリケーションを登録**します。攻撃されたディレクトリのユーザーを使用している場合は現在のディレクトリのみにすることができますが、外部攻撃の場合は任意のディレクトリにすることができます(次の画像のように)。
1. **リダイレクトURI**、トークンを取得するためのコードを受け取ることを期待するURLに設定します(デフォルトでは`http://localhost:8000/callback`)。
<figure><img src="../../../images/image (1).png" alt=""><figcaption></figcaption></figure>
@@ -86,9 +86,9 @@ az rest --method GET --url "https://graph.microsoft.com/v1.0/directoryRoles/0d60
# From https://github.com/carlospolop/azure_oauth_phishing_example
python3 azure_oauth_phishing_example.py --client-secret <client-secret> --client-id <client-id> --scopes "email,Files.ReadWrite.All,Mail.Read,Notes.Read.All,offline_access,openid,profile,User.Read"
```
5. **URLを犠牲者に送信する**
5. **URLを被害者に送信する**
1. この場合 `http://localhost:8000`
6. **犠牲者**は**プロンプトを受け入れる必要があります:**
6. **被害者**は**プロンプトを受け入れる必要があります:**
<figure><img src="../../../images/image (4).png" alt=""><figcaption></figcaption></figure>
@@ -114,18 +114,25 @@ https://graph.microsoft.com/v1.0/me/onenote/notebooks \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-H "Accept: application/json"
```
## その他のツール
## Other Tools
- [**365-Stealer**](https://github.com/AlteredSecurity/365-Stealer)**:** [https://www.alteredsecurity.com/post/introduction-to-365-stealer](https://www.alteredsecurity.com/post/introduction-to-365-stealer) を確認して、設定方法を学んでください。
- [**365-Stealer**](https://github.com/AlteredSecurity/365-Stealer)**:** [https://www.alteredsecurity.com/post/introduction-to-365-stealer](https://www.alteredsecurity.com/post/introduction-to-365-stealer)を確認して、設定方法を学んでください。
- [**O365-Attack-Toolkit**](https://github.com/mdsecactivebreach/o365-attack-toolkit)
## ポストエクスプロイト
## Post-Exploitation
### フィッシングポストエクスプロイト
### Phishing Post-Exploitation
要求された権限に応じて、**テナントの異なるデータにアクセスできる可能性があります**(ユーザー、グループのリスト...または設定変更)および**ユーザーの情報**(ファイル、ノート、メール...)。その後、これらの権限を使用してこれらのアクションを実行できます。
要求された権限に応じて、**テナントの異なるデータにアクセスできる**(ユーザー、グループのリスト...または設定変更することさえ)と、**ユーザーの情報**(ファイル、ノート、メール...にアクセスできるかもしれません。その後、これらの権限を使用してこれらのアクションを実行できます。
### アプリケーションポストエクスプロイト
### Entra ID Applications Admin
もし、Entra IDでアプリケーションを管理できるEntra IDプリンシパルを何らかの方法で侵害できた場合、テナントのユーザーによって使用されているアプリケーションがあります。管理者は**アプリが要求している権限を変更し、トークンを盗むための新しい許可されたリダイレクトアドレスを追加できる**でしょう。
- リダイレクトURIを**追加することが可能**です本物のものを削除する必要はありませんそして、攻撃者のリダイレクトURIを使用してHTTPリンクを送信することができるので、ユーザーがリンクをたどると認証が自動的に行われ、攻撃者がトークンを受け取ります。
- アプリが要求する権限を変更して、ユーザーからより多くの権限を取得することも可能ですが、その場合、ユーザーは**再度プロンプトを承認する必要があります**(すでにログインしていても)。
- この攻撃を実行するために、攻撃者は**アプリケーションコードを制御する必要はありません**。彼は単に新しいURLを**`redirect_uri`**パラメータに持つアプリへのログインリンクをユーザーに送信することができます。
### Application Post Exploitation
ページのアプリケーションとサービスプリンシパルのセクションを確認してください:
@@ -133,7 +140,7 @@ https://graph.microsoft.com/v1.0/me/onenote/notebooks \
../az-privilege-escalation/az-entraid-privesc/
{{#endref}}
## 参考文献
## References
- [https://www.alteredsecurity.com/post/introduction-to-365-stealer](https://www.alteredsecurity.com/post/introduction-to-365-stealer)
- [https://swisskyrepo.github.io/InternalAllTheThings/cloud/azure/azure-phishing/](https://swisskyrepo.github.io/InternalAllTheThings/cloud/azure/azure-phishing/)