diff --git a/src/pentesting-cloud/azure-security/az-basic-information/README.md b/src/pentesting-cloud/azure-security/az-basic-information/README.md index 83547b102..0c91d3855 100644 --- a/src/pentesting-cloud/azure-security/az-basic-information/README.md +++ b/src/pentesting-cloud/azure-security/az-basic-information/README.md @@ -38,11 +38,11 @@ Azureのすべてのリソースには、それを識別するAzureリソースIDがあります。 -AzureリソースIDの形式は次のとおりです。 +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` @@ -54,7 +54,7 @@ Azureは、Microsoftの包括的な**クラウドコンピューティングプ ### 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) @@ -77,15 +77,15 @@ Entraドメインサービスは、従来のWindows Active Directory環境と互 ### メンバーとゲストのデフォルト権限 -[https://learn.microsoft.com/en-us/entra/fundamentals/users-default-permissions](https://learn.microsoft.com/en-us/entra/fundamentals/users-default-permissions) で確認できますが、メンバーは以下のアクションを実行できます。 +[https://learn.microsoft.com/en-us/entra/fundamentals/users-default-permissions](https://learn.microsoft.com/en-us/entra/fundamentals/users-default-permissions) で確認できますが、メンバーは以下のアクションを実行できます: -- すべてのユーザー、グループ、アプリケーション、デバイス、ロール、サブスクリプション、およびその公開プロパティを読み取る +- すべてのユーザー、グループ、アプリケーション、デバイス、役割、サブスクリプション、およびその公開プロパティを読み取る - ゲストを招待する(_オフにすることが可能_) - セキュリティグループを作成する - 非表示のグループメンバーシップを読み取る - 所有グループにゲストを追加する - 新しいアプリケーションを作成する(_オフにすることが可能_) -- Azureに最大50デバイスを追加する(_オフにすることが可能_) +- Azureに最大50台のデバイスを追加する(_オフにすることが可能_) > [!NOTE] > Azureリソースを列挙するには、ユーザーに明示的な権限の付与が必要です。 @@ -93,49 +93,49 @@ Entraドメインサービスは、従来のWindows Active Directory環境と互 ### ユーザーのデフォルト設定可能権限 - **メンバー(**[**ドキュメント**](https://learn.microsoft.com/en-gb/entra/fundamentals/users-default-permissions#restrict-member-users-default-permissions)**)** -- アプリケーションの登録: デフォルトは**はい** -- 非管理者ユーザーによるテナントの作成を制限: デフォルトは**いいえ** -- セキュリティグループの作成: デフォルトは**はい** -- Microsoft Entra管理ポータルへのアクセスを制限: デフォルトは**いいえ** +- アプリケーションの登録:デフォルトは**はい** +- 非管理者ユーザーによるテナントの作成を制限:デフォルトは**いいえ** +- セキュリティグループの作成:デフォルトは**はい** +- Microsoft Entra管理ポータルへのアクセスを制限:デフォルトは**いいえ** - これはポータルへのAPIアクセスを制限しません(ウェブのみ) -- ユーザーがLinkedInと仕事または学校のアカウントを接続できるようにする: デフォルトは**はい** -- ユーザーをサインインしたままにする: デフォルトは**はい** -- ユーザーが所有するデバイスのBitLockerキーを回復することを制限: デフォルトは**いいえ**(デバイス設定で確認) -- 他のユーザーを読み取る: デフォルトは**はい**(Microsoft Graph経由) +- ユーザーがLinkedInと仕事または学校のアカウントを接続できるようにする:デフォルトは**はい** +- ユーザーをサインインしたままにする:デフォルトは**はい** +- ユーザーが所有するデバイスのBitLockerキーを回復することを制限:デフォルトは**いいえ**(デバイス設定で確認) +- 他のユーザーを読み取る:デフォルトは**はい**(Microsoft Graph経由) - **ゲスト** -- **ゲストユーザーアクセス制限**オプション: +- **ゲストユーザーアクセス制限**オプション: - **ゲストユーザーはメンバーと同じアクセス権を持ちます**。 - **ゲストユーザーはディレクトリオブジェクトのプロパティとメンバーシップへのアクセスが制限されています(デフォルト)**。これにより、デフォルトでゲストは自分のユーザープロファイルのみへのアクセスが許可されます。他のユーザーやグループ情報へのアクセスは許可されません。 -- **ゲストユーザーアクセスは、自分のディレクトリオブジェクトのプロパティとメンバーシップに制限されています**が、最も制限が厳しいです。 -- **ゲストを招待できる**オプション: +- **ゲストユーザーアクセスは自分のディレクトリオブジェクトのプロパティとメンバーシップに制限されています**が最も制限的です。 +- **ゲストを招待できる**オプション: - **組織内の誰でもゲストユーザーを招待できます(最も包括的) - デフォルト** -- **メンバーユーザーおよび特定の管理ロールに割り当てられたユーザーは、メンバー権限を持つゲストを含むゲストユーザーを招待できます** -- **特定の管理ロールに割り当てられたユーザーのみがゲストユーザーを招待できます** +- **メンバーユーザーおよび特定の管理役割に割り当てられたユーザーは、メンバー権限を持つゲストを含むゲストユーザーを招待できます** +- **特定の管理役割に割り当てられたユーザーのみがゲストユーザーを招待できます** - **組織内の誰もゲストユーザーを招待できません(最も制限的)** -- **外部ユーザーの退会**: デフォルトは**真** +- **外部ユーザーの退会**:デフォルトは**真** - 外部ユーザーが組織を離れることを許可 > [!TIP] -> デフォルトで制限されていても、権限が付与されたユーザー(メンバーおよびゲスト)は、前述のアクションを実行できます。 +> デフォルトで制限されていても、権限が付与されたユーザー(メンバーおよびゲスト)は前述のアクションを実行できます。 ### **グループ** -**2種類のグループ**があります。 +**2種類のグループ**があります: -- **セキュリティ**: このタイプのグループは、メンバーにアプリケーション、リソースへのアクセスを提供し、ライセンスを割り当てるために使用されます。ユーザー、デバイス、サービスプリンシパル、他のグループがメンバーになれます。 -- **Microsoft 365**: このタイプのグループは、コラボレーションのために使用され、メンバーに共有メールボックス、カレンダー、ファイル、SharePointサイトなどへのアクセスを提供します。グループメンバーはユーザーのみです。 +- **セキュリティ**:このタイプのグループは、メンバーにアプリケーション、リソースへのアクセスを提供し、ライセンスを割り当てるために使用されます。ユーザー、デバイス、サービスプリンシパル、他のグループがメンバーになれます。 +- **Microsoft 365**:このタイプのグループは、コラボレーションのために使用され、メンバーに共有メールボックス、カレンダー、ファイル、SharePointサイトなどへのアクセスを提供します。グループメンバーはユーザーのみです。 - これは、EntraIDテナントのドメインを持つ**メールアドレス**を持ちます。 -**2種類のメンバーシップ**があります。 +**2種類のメンバーシップ**があります: -- **割り当てられた**: 特定のメンバーを手動でグループに追加することを許可します。 -- **動的メンバーシップ**: ルールを使用してメンバーシップを自動的に管理し、メンバーの属性が変更されるとグループの含有を更新します。 +- **割り当てられた**:特定のメンバーを手動でグループに追加することを許可します。 +- **動的メンバーシップ**:ルールを使用してメンバーシップを自動的に管理し、メンバーの属性が変更されるとグループの含有を更新します。 ### **サービスプリンシパル** -**サービスプリンシパル**は、**アプリケーション**、ホスティングサービス、および自動化ツールがAzureリソースにアクセスするために**使用**するために作成された**アイデンティティ**です。このアクセスは、サービスプリンシパルに割り当てられたロールによって**制限され**、**どのリソースにアクセスできるか**とそのレベルを制御します。セキュリティ上の理由から、**ユーザーアイデンティティでログインするのではなく、自動化ツールとともにサービスプリンシパルを使用することを常に推奨します**。 +**サービスプリンシパル**は、**アプリケーション**、ホスティングサービス、および自動化ツールがAzureリソースにアクセスするために**使用**される**アイデンティティ**です。このアクセスは、サービスプリンシパルに割り当てられた役割によって**制限され**、**どのリソースにアクセスできるか**を制御します。セキュリティ上の理由から、**ユーザーアイデンティティでログインさせるのではなく、自動化ツールとともにサービスプリンシパルを使用することを常に推奨します**。 -サービスプリンシパルとして**直接ログインする**ことも可能で、**シークレット**(パスワード)、**証明書**、または第三者プラットフォーム(例: Github Actions)への**フェデレーテッド**アクセスを付与することができます。 +サービスプリンシパルとして**直接ログイン**することも可能で、**シークレット**(パスワード)、**証明書**を生成するか、第三者プラットフォーム(例:Github Actions)への**フェデレーテッド**アクセスを付与することができます。 - **パスワード**認証を選択した場合(デフォルト)、**生成されたパスワードを保存**してください。再度アクセスすることはできません。 - 証明書認証を選択した場合、**アプリケーションがプライベートキーにアクセスできることを確認**してください。 @@ -144,16 +144,15 @@ Entraドメインサービスは、従来のWindows Active Directory環境と互 **アプリ登録**は、アプリケーションがEntra IDと統合し、アクションを実行できるようにするための構成です。 -#### 主要コンポーネント: +#### 主要コンポーネント: -1. **アプリケーションID(クライアントID)**: Azure AD内のアプリの一意の識別子。 -2. **リダイレクトURI**: Azure ADが認証応答を送信するURL。 -3. **証明書、シークレット、およびフェデレーテッド資格情報**: アプリケーションのサービスプリンシパルとしてログインするためにシークレットまたは証明書を生成することが可能で、またそれにフェデレーテッドアクセスを付与することもできます(例: Github Actions)。 -1. **証明書**または**シークレット**が生成された場合、**アプリケーションID**、**シークレット**または**証明書**、および**テナント**(ドメインまたはID)を知っていることで、CLIツールを使用して**サービスプリンシパルとしてログイン**することが可能です。 -4. **API権限**: アプリがアクセスできるリソースまたはAPIを指定します。 -5. **認証設定**: アプリのサポートされている認証フローを定義します(例: OAuth2、OpenID Connect)。 -6. **サービスプリンシパル**: アプリが作成されると(ウェブコンソールから行われた場合)、サービスプリンシパルが作成されます。 -1. **サービスプリンシパル**は、要求されたすべての権限を取得します。 +1. **アプリケーションID(クライアントID):** Azure AD内のアプリの一意の識別子。 +2. **リダイレクトURI:** Azure ADが認証応答を送信するURL。 +3. **証明書、シークレット、フェデレーテッド資格情報:** アプリケーションのサービスプリンシパルとしてログインするためにシークレットまたは証明書を生成するか、フェデレーテッドアクセスを付与することができます(例:Github Actions)。 +4. **API権限:** アプリがアクセスできるリソースまたはAPIを指定します。 +5. **認証設定:** アプリがサポートする認証フローを定義します(例:OAuth2、OpenID Connect)。 +6. **サービスプリンシパル**:アプリが作成されるとサービスプリンシパルが作成されます(ウェブコンソールから行った場合)または新しいテナントにインストールされたとき。 +7. **サービスプリンシパル**は、構成されたすべての要求された権限を取得します。 ### デフォルト同意権限 @@ -161,9 +160,9 @@ Entraドメインサービスは、従来のWindows Active Directory環境と互 - **ユーザー同意を許可しない** - すべてのアプリに対して管理者が必要です。 -- **確認されたパブリッシャーからのアプリに対して、選択された権限のユーザー同意を許可する(推奨)** -- すべてのユーザーは、「低影響」と分類された権限に対して同意でき、確認されたパブリッシャーからのアプリまたはこの組織に登録されたアプリに対して同意できます。 -- **デフォルトの**低影響権限(ただし、低影響として追加するには同意が必要): +- **確認されたパブリッシャーからのアプリに対するユーザー同意を許可する、選択された権限について(推奨)** +- すべてのユーザーは、「低影響」と分類された権限について、確認されたパブリッシャーからのアプリまたはこの組織に登録されたアプリに同意できます。 +- **デフォルト**の低影響権限(ただし、低影響として追加するには同意が必要): - User.Read - サインインしてユーザープロファイルを読み取る - offline_access - ユーザーがアクセスを許可したデータへのアクセスを維持する - openid - ユーザーをサインインさせる @@ -172,99 +171,93 @@ Entraドメインサービスは、従来のWindows Active Directory環境と互 - **アプリに対するユーザー同意を許可する(デフォルト)** - すべてのユーザーは、組織のデータにアクセスするために任意のアプリに同意できます。 -**管理者同意要求**: デフォルトは**いいえ** +**管理者同意要求**:デフォルトは**いいえ** - ユーザーは、同意できないアプリに対して管理者同意を要求できます。 -- **はい**の場合: 同意要求を行うことができるユーザー、グループ、ロールを指定できます。 +- **はい**の場合:同意要求を行うことができるユーザー、グループ、役割を指定できます。 - ユーザーがメール通知や期限切れリマインダーを受け取るかどうかも設定できます。 -### **マネージドアイデンティティ(メタデータ)** +### **管理されたアイデンティティ(メタデータ)** -Azure Active Directoryのマネージドアイデンティティは、アプリケーションの**アイデンティティを自動的に管理する**ためのソリューションを提供します。これらのアイデンティティは、Azure Active Directory(**Azure AD**)認証と互換性のある**リソース**に接続するためにアプリケーションによって使用されます。これにより、アプリケーションは**メタデータ**サービスに連絡して、Azureで指定されたマネージドアイデンティティとして**アクションを実行する**ための有効なトークンを取得できるため、クラウド資格情報をコードにハードコーディングする必要がなくなります。 +Azure Active Directoryの管理されたアイデンティティは、アプリケーションの**アイデンティティを自動的に管理する**ためのソリューションを提供します。これらのアイデンティティは、Azure Active Directory(**Azure AD**)認証と互換性のある**リソース**に接続するためにアプリケーションによって使用されます。これにより、アプリケーションは**メタデータ**サービスに連絡して、Azureで指定された管理されたアイデンティティとして**アクションを実行する**ための有効なトークンを取得できるため、クラウド資格情報をコードにハードコーディングする必要がなくなります。 -マネージドアイデンティティには2種類あります。 +管理されたアイデンティティには2種類あります: -- **システム割り当て**。一部のAzureサービスでは、**サービスインスタンスに直接マネージドアイデンティティを有効にする**ことができます。システム割り当てマネージドアイデンティティを有効にすると、リソースが存在するサブスクリプションによって信頼されるEntra IDテナントに**サービスプリンシパル**が作成されます。**リソース**が**削除される**と、Azureは自動的に**アイデンティティ**を削除します。 -- **ユーザー割り当て**。ユーザーがマネージドアイデンティティを生成することも可能です。これらは、サブスクリプション内のリソースグループ内に作成され、サブスクリプションによって信頼されるEntraIDにサービスプリンシパルが作成されます。その後、マネージドアイデンティティを1つまたは**複数のAzureサービスのインスタンス**(複数のリソース)に割り当てることができます。ユーザー割り当てマネージドアイデンティティの場合、**アイデンティティはそれを使用するリソースとは別に管理されます**。 +- **システム割り当て**。一部のAzureサービスでは、**サービスインスタンスに直接管理されたアイデンティティを有効にする**ことができます。システム割り当ての管理されたアイデンティティを有効にすると、**サービスプリンシパル**がリソースが存在するサブスクリプションで信頼されるEntra IDテナントに作成されます。**リソース**が**削除される**と、Azureは自動的に**アイデンティティ**を削除します。 +- **ユーザー割り当て**。ユーザーが管理されたアイデンティティを生成することも可能です。これらは、サブスクリプション内のリソースグループ内に作成され、サブスクリプションで信頼されるEntraIDにサービスプリンシパルが作成されます。その後、管理されたアイデンティティを1つまたは**複数のインスタンス**のAzureサービスに割り当てることができます(複数のリソース)。ユーザー割り当ての管理されたアイデンティティの場合、**アイデンティティはそれを使用するリソースとは別に管理されます**。 -マネージドアイデンティティは、サービスプリンシパルに付随する**永続的な資格情報**(パスワードや証明書など)を生成しません。 +管理されたアイデンティティは、サービスプリンシパルに付随する**永続的な資格情報**(パスワードや証明書など)を生成しません。 ### エンタープライズアプリケーション これは、サービスプリンシパルをフィルタリングし、割り当てられたアプリケーションを確認するための**Azure内のテーブル**です。 -**「エンタープライズアプリケーション」という別のタイプの「アプリケーション」ではありません**。Azure内に「エンタープライズアプリケーション」というオブジェクトは存在せず、サービスプリンシパル、アプリ登録、マネージドアイデンティティを確認するための抽象化に過ぎません。 +**「エンタープライズアプリケーション」という別のタイプの「アプリケーション」ではありません**。Azure内に「エンタープライズアプリケーション」というオブジェクトは存在せず、サービスプリンシパル、アプリ登録、管理されたアイデンティティを確認するための抽象化に過ぎません。 -### 管理ユニット +### 管理単位 -管理ユニットは、**組織の特定の部分に対してロールから権限を付与する**ことを可能にします。 +管理単位は、**組織の特定の部分に対して役割から権限を付与する**ことを可能にします。 -例: +例: -- シナリオ: 会社が地域のIT管理者に自分の地域のユーザーのみを管理させたい。 -- 実装: -- 各地域のために管理ユニットを作成します(例: "北米AU"、"ヨーロッパAU")。 +- シナリオ:ある会社が地域のIT管理者に自分の地域のユーザーのみを管理させたい。 +- 実装: +- 各地域のために管理単位を作成します(例:「北米AU」、「ヨーロッパAU」)。 - 各地域のユーザーでAUを構成します。 -- AUは**ユーザー、グループ、またはデバイスを含むことができます**。 -- AUは**動的メンバーシップをサポート**します。 -- AUは**AUを含むことができません**。 -- 管理ロールを割り当てます: -- 地域のITスタッフに「ユーザー管理者」ロールを付与し、その地域のAUにスコープを設定します。 -- 結果: 地域のIT管理者は、他の地域に影響を与えることなく、自分の地域内のユーザーアカウントを管理できます。 +- AUは**ユーザー、グループ、またはデバイスを含むことができます** +- 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) でロールを確認できます。 -- 最も特権のあるロールは**グローバル管理者**です。 -- ロールの説明には、その**詳細な権限**が表示されます。 +- 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の役割と権限 -**ロール**は**プリンシパル**に**スコープ**で割り当てられます: `principal -[HAS ROLE]->(scope)` +- **役割**は、**スコープ**で**プリンシパル**に**割り当てられます**: `principal -[HAS ROLE]->(scope)` +- **グループに割り当てられた役割**は、グループのすべての**メンバー**に**継承されます**。 +- 役割が割り当てられたスコープに応じて、**役割**はスコープコンテナ内の**他のリソース**に**継承される**可能性があります。たとえば、ユーザーAが**サブスクリプション**に役割を持っている場合、彼はその**サブスクリプション内のすべてのリソースグループ**および**リソースグループ内のすべてのリソース**にその役割を持ちます。 -**グループ**に割り当てられた**ロール**は、グループのすべての**メンバー**に**継承**されます。 +### 組み込みの役割 -ロールが割り当てられたスコープに応じて、**ロール**はスコープコンテナ内の**他のリソース**に**継承**される可能性があります。たとえば、ユーザー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)を作成できます。 -### クラシックロール +**組み込みの**役割は、**意図された**リソースにのみ適用されます。たとえば、次の2つの**組み込みの役割**の例を確認してください: -| **オーナー** | | すべてのリソースタイプ | -| ----------------------------- | ---------------------------------------------------------------------------------------- | ------------------ | -| **寄稿者** | | すべてのリソースタイプ | -| **リーダー** | • すべてのリソースを表示 | すべてのリソースタイプ | -| **ユーザーアクセス管理者** | | すべてのリソースタイプ | - -### 組み込みロール - -[ドキュメントから: ](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つの**組み込みロール**の例を確認してください。 - -| [ディスクバックアップリーダー](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#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`は、ロールを割り当てることができるスコープの配列です(管理グループ、サブスクリプション、リソースグループなど)。 +- `dataActions`は、リソース内のデータ操作に対する権限であり、リソース内の実際のデータを読み取ったり、書き込んだり、削除したりすることを許可します。 +- `notActions`および`notDataActions`は、役割から特定の権限を除外するために使用されます。ただし、**それらを拒否するわけではありません**。別の役割がそれらを付与する場合、プリンシパルはそれらを持ちます。 +- `assignableScopes`は、役割を割り当てることができるスコープの配列です(管理グループ、サブスクリプション、リソースグループなど)。 -カスタムロールの権限JSONの例: +カスタム役割の権限JSONの例: ```json { "properties": { @@ -303,9 +296,9 @@ Azure Active Directoryのマネージドアイデンティティは、アプリ ### Global Administrator -Global Administratorは、**Entra IDテナントに対する完全な制御を付与する**Entra IDの役割です。ただし、デフォルトではAzureリソースに対する権限は付与されません。 +Global Administratorは、**Entra IDテナントに対する完全な制御を付与する**役割です。しかし、デフォルトではAzureリソースに対する権限は付与されません。 -Global Administratorの役割を持つユーザーは、**Root Management Group内でUser Access Administrator Azure役割に「昇格」する能力を持っています**。したがって、Global Administratorsは**すべての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)
@@ -316,22 +309,22 @@ Global Administratorの役割を持つユーザーは、**Root Management Group ### Deny Assignments -役割の割り当てと同様に、**deny assignments**は**Azureリソースへのアクセスを制御するために使用されます**。ただし、**deny assignments**は、ユーザーが役割の割り当てを通じてアクセスを付与されている場合でも、リソースへのアクセスを**明示的に拒否するために使用されます**。**Deny assignments**は**役割の割り当てよりも優先され**、ユーザーが役割の割り当てを通じてアクセスを付与されている場合でも、拒否の割り当てが優先されます。 +役割の割り当てと同様に、**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** 1. **Policy Definition**: 許可または要求されることを指定するJSONで書かれたルール。 2. **Policy Assignment**: 特定のスコープ(例: サブスクリプション、リソースグループ)にポリシーを適用すること。 3. **Initiatives**: より広範な強制のためにグループ化されたポリシーのコレクション。 -4. **Effect**: ポリシーがトリガーされたときに何が起こるかを指定します(例: "Deny"、"Audit"、または "Append")。 +4. **Effect**: ポリシーがトリガーされたときに何が起こるかを指定します(例: "Deny," "Audit," または "Append")。 **いくつかの例:** @@ -339,7 +332,7 @@ Azure Policiesは**プロアクティブ**です: 非準拠のリソースが作 2. **命名基準の強制**: ポリシーはAzureリソースの命名規則を強制できます。これにより、大規模な環境でリソースを整理し、名前に基づいて簡単に識別するのに役立ちます。 3. **特定のリソースタイプの制限**: このポリシーは、特定のタイプのリソースの作成を制限できます。たとえば、コストを制御するために、特定のVMサイズのような高価なリソースタイプの作成を防ぐポリシーを設定できます。 4. **タグ付けポリシーの強制**: タグは、リソース管理に使用されるAzureリソースに関連付けられたキーと値のペアです。ポリシーは、すべてのリソースに特定のタグが存在するか、特定の値を持つことを強制できます。これは、コスト追跡、所有権、またはリソースの分類に役立ちます。 -5. **リソースへの公共アクセスの制限**: ポリシーは、ストレージアカウントやデータベースのような特定のリソースが公共エンドポイントを持たないことを強制し、組織のネットワーク内でのみアクセスできるようにします。 +5. **リソースへの公共アクセスの制限**: ポリシーは、ストレージアカウントやデータベースのような特定のリソースが公共エンドポイントを持たないことを強制し、組織のネットワーク内でのみアクセス可能であることを保証できます。 6. **セキュリティ設定の自動適用**: ポリシーは、すべてのVMに特定のネットワークセキュリティグループを適用したり、すべてのストレージアカウントが暗号化を使用することを保証するなど、リソースにセキュリティ設定を自動的に適用するために使用できます。 Azure PoliciesはAzure階層の任意のレベルに添付できますが、**一般的にはルート管理グループ**または他の管理グループで使用されます。 @@ -364,7 +357,7 @@ Azure policy json example: ``` ### 権限の継承 -Azure **権限は階層の任意の部分に割り当てることができます**。これには管理グループ、サブスクリプション、リソースグループ、および個々のリソースが含まれます。権限は、割り当てられたエンティティの**リソース**によって**継承**されます。 +Azureでは**権限は階層の任意の部分に割り当てることができます**。これには管理グループ、サブスクリプション、リソースグループ、および個々のリソースが含まれます。権限は、割り当てられたエンティティの**リソース**によって**継承**されます。 この階層構造は、アクセス権限の効率的かつスケーラブルな管理を可能にします。 @@ -372,11 +365,11 @@ Azure **権限は階層の任意の部分に割り当てることができます ### Azure RBAC と ABAC -**RBAC**(ロールベースのアクセス制御)は、前のセクションで見たものです:**リソースへのアクセスを付与するために、プリンシパルにロールを割り当てる**こと。\ -しかし、場合によっては、**より細かいアクセス管理**を提供したり、**数百の**ロール**割り当て**の管理を**簡素化**したいことがあります。 +**RBAC**(ロールベースのアクセス制御)は、前のセクションで見たものです:**リソースへのアクセスを付与するために、プリンシパルにロールを割り当てる**ことです。\ +しかし、場合によっては**より細かいアクセス管理**を提供したり、**数百の**ロール**割り当て**の管理を**簡素化**したいことがあります。 -Azure **ABAC**(属性ベースのアクセス制御)は、特定のアクションの文脈における**属性に基づくロール割り当て条件**を追加することでAzure RBACを拡張します。_ロール割り当て条件_は、**より細かいアクセス制御を提供するためにオプションでロール割り当てに追加できる追加のチェック**です。条件は、ロール定義およびロール割り当ての一部として付与される権限を絞り込みます。たとえば、**オブジェクトを読み取るために特定のタグを持つ必要がある条件を追加できます**。\ -特定のリソースへの**アクセスを明示的に拒否することはできません**が、**条件を使用して**。 +Azure **ABAC**(属性ベースのアクセス制御)は、特定のアクションの文脈における**属性に基づくロール割り当て条件**を追加することでAzure RBACを拡張します。_ロール割り当て条件_は、**より細かいアクセス制御を提供するためにロール割り当てにオプションで追加できる追加のチェック**です。条件は、ロール定義およびロール割り当ての一部として付与される権限を絞り込みます。たとえば、**オブジェクトを読み取るために特定のタグを持つ必要がある条件を追加できます**。\ +特定のリソースへの**アクセスを明示的に拒否する**ことは**条件を使用してはできません**。 ## 参考文献 diff --git a/src/pentesting-cloud/azure-security/az-services/az-azuread.md b/src/pentesting-cloud/azure-security/az-services/az-azuread.md index 8278af9c9..71ab3f1e5 100644 --- a/src/pentesting-cloud/azure-security/az-services/az-azuread.md +++ b/src/pentesting-cloud/azure-security/az-services/az-azuread.md @@ -6,7 +6,7 @@ Azure Active Directory (Azure AD) は、Microsoft のクラウドベースのアイデンティティおよびアクセス管理サービスです。これは、従業員がサインインし、Microsoft 365、Azure ポータル、その他の多くの SaaS アプリケーションを含む、組織内外のリソースにアクセスするのを可能にする上で重要です。Azure AD の設計は、**認証、承認、およびユーザー管理**を主に含む、基本的なアイデンティティサービスを提供することに焦点を当てています。 -Azure AD の主な機能には、**多要素認証**と**条件付きアクセス**が含まれ、他の Microsoft セキュリティサービスとのシームレスな統合が行われています。これらの機能は、ユーザーのアイデンティティのセキュリティを大幅に向上させ、組織がアクセスポリシーを効果的に実施および強制するのを可能にします。Microsoft のクラウドサービスエコシステムの基本的なコンポーネントとして、Azure AD はユーザーアイデンティティのクラウドベースの管理において重要です。 +Azure AD の主な機能には、**多要素認証**と**条件付きアクセス**が含まれ、他の Microsoft セキュリティサービスとのシームレスな統合が行われています。これらの機能は、ユーザーのアイデンティティのセキュリティを大幅に向上させ、組織がアクセスポリシーを効果的に実施および強制するのを支援します。Microsoft のクラウドサービスエコシステムの基本的なコンポーネントとして、Azure AD はユーザーアイデンティティのクラウドベースの管理において重要です。 ## 列挙 @@ -184,7 +184,7 @@ Connect-AzureAD -AccountId test@corp.onmicrosoft.com -AadAccessToken $token {{#endtab }} {{#endtabs }} -Azureに**CLI**を介してログインするとき、あなたは**Microsoft**に属する**テナント**からの**Azureアプリケーション**を使用しています。これらのアプリケーションは、あなたのアカウントで作成できるもののように、**クライアントID**を持っています。**コンソールで見ることができる許可されたアプリケーションのリスト**にはすべて表示されませんが、**デフォルトで許可されています**。 +Azureに**CLI**を介してログインするとき、あなたは**Microsoft**に属する**テナント**からの**Azureアプリケーション**を使用しています。これらのアプリケーションは、あなたのアカウントで作成できるものと同様に、**クライアントID**を持っています。**コンソールで見ることができる許可されたアプリケーションのリスト**にはすべて表示されませんが、**デフォルトで許可されています**。 例えば、**認証**を行う**PowerShellスクリプト**は、クライアントID **`1950a258-227b-4e31-a9cf-717495945fc2`**を持つアプリを使用します。アプリがコンソールに表示されなくても、システム管理者は**そのアプリケーションをブロック**して、ユーザーがそのアプリを介して接続できないようにすることができます。 @@ -482,12 +482,12 @@ Get-AzureADGroup -ObjectId | Get-AzureADGroupAppRoleAssignment | fl * #### グループにユーザーを追加 -グループのオーナーは新しいユーザーをグループに追加できます +グループの所有者は、新しいユーザーをグループに追加できます。 ```bash Add-AzureADGroupMember -ObjectId -RefObjectId -Verbose ``` > [!WARNING] -> グループは動的であり、基本的には**ユーザーが特定の条件を満たすとグループに追加される**ことを意味します。もちろん、条件が**ユーザー**が**制御**できる**属性**に基づいている場合、彼はこの機能を悪用して**他のグループに入る**ことができます。\ +> グループは動的であり、基本的に**ユーザーが特定の条件を満たすとグループに追加される**ことを意味します。もちろん、条件が**ユーザー**が**制御**できる**属性**に基づいている場合、彼はこの機能を悪用して**他のグループに入る**ことができます。\ > 動的グループを悪用する方法については、次のページを確認してください: {{#ref}} @@ -601,7 +601,7 @@ Get-AzureADServicePrincipal -ObjectId | Get-AzureADServicePrincipalMembersh
-各エンタープライズアプリにクライアントシークレットを追加しようとするリスト +各エンタープライズアプリにクライアントシークレットをリストして追加しようとする ```bash # Just call Add-AzADAppSecret Function Add-AzADAppSecret @@ -735,6 +735,13 @@ az ad app owner list --id --query "[].[displayName]" -o table az ad app list --show-mine # Get apps with generated secret or certificate az ad app list --query '[?length(keyCredentials) > `0` || length(passwordCredentials) > `0`].[displayName, appId, keyCredentials, passwordCredentials]' -o json +# Get Global Administrators (full access over apps) +az rest --method GET --url "https://graph.microsoft.com/v1.0/directoryRoles/1b2256f9-46c1-4fc2-a125-5b2f51bb43b7/members" +# Get Application Administrators (full access over apps) +az rest --method GET --url "https://graph.microsoft.com/v1.0/directoryRoles/1e92c3b7-2363-4826-93a6-7f7a5b53e7f9/members" +# Get Cloud Applications Administrators (full access over apps) +az rest --method GET --url "https://graph.microsoft.com/v1.0/directoryRoles/0d601d27-7b9c-476f-8134-8e7cd6744f02/members" + ``` {{#endtab }} @@ -792,14 +799,14 @@ Get-AzureADApplication -ObjectId | Get-AzureADApplicationOwner |fl * > アプリケーションがトークンを要求する際にそのアイデンティティを証明するために使用する秘密の文字列は、アプリケーションパスワードです。\ > したがって、この **パスワード** を見つけると、**テナント** 内の **サービスプリンシパル** としてアクセスできます。\ > このパスワードは生成時にのみ表示されることに注意してください(変更することはできますが、再取得することはできません)。\ -> **アプリケーション** の **所有者** は、(彼がそれを偽装できるように)**パスワード** を追加できます。\ +> **アプリケーション** の **所有者** は、(そのアプリケーションを偽装できるように)**パスワード** を追加できます。\ > これらのサービスプリンシパルとしてのログインは **リスクあり** としてマークされず、**MFA** はありません。 -一般的に使用される Microsoft のアプリ ID のリストは、[https://learn.microsoft.com/en-us/troubleshoot/entra/entra-id/governance/verify-first-party-apps-sign-in#application-ids-of-commonly-used-microsoft-applications](https://learn.microsoft.com/en-us/troubleshoot/entra/entra-id/governance/verify-first-party-apps-sign-in#application-ids-of-commonly-used-microsoft-applications) で見つけることができます。 +一般的に使用される Microsoft のアプリ ID のリストは [https://learn.microsoft.com/en-us/troubleshoot/entra/entra-id/governance/verify-first-party-apps-sign-in#application-ids-of-commonly-used-microsoft-applications](https://learn.microsoft.com/en-us/troubleshoot/entra/entra-id/governance/verify-first-party-apps-sign-in#application-ids-of-commonly-used-microsoft-applications) で見つけることができます。 ### Managed Identities -Managed Identities についての詳細は、以下を確認してください: +Managed Identities についての詳細は以下を確認してください: {{#ref}} ../az-basic-information/ @@ -993,7 +1000,7 @@ Get-AzureADMSScopedRoleMembership -Id | fl * {{#tab name="az cli" }} ```bash -# これを行う方法を知っている場合は、PRを送信してください! +# これを行う方法がわかる場合は、PRを送信してください! ``` {{#endtab }} @@ -1030,7 +1037,7 @@ Get-AzureADDevice -All $true | %{if($user=Get-AzureADDeviceRegisteredOwner -Obje # すべてのデバイスの登録ユーザー Get-AzureADDevice -All $true | Get-AzureADDeviceRegisteredUser Get-AzureADDevice -All $true | %{if($user=Get-AzureADDeviceRegisteredUser -ObjectId $_.ObjectID){$_;$user.UserPrincipalName;"`n"}} -# Intuneで管理されているデバイスを取得 +# Intuneを使用して管理されているデバイスを取得 Get-AzureADDevice -All $true | ?{$_.IsCompliant -eq "True"} # ユーザーが所有するデバイスを取得 Get-AzureADUserOwnedDevice -ObjectId test@corp.onmicrosoft.com @@ -1057,13 +1064,13 @@ For more information about administrative units check: {{#tab name="az cli" }} ```bash -# すべての管理ユニットをリストする +# 管理単位の一覧を表示 az rest --method GET --uri "https://graph.microsoft.com/v1.0/directory/administrativeUnits" -# AU 情報を取得する +# AU情報を取得 az rest --method GET --uri "https://graph.microsoft.com/v1.0/directory/administrativeUnits/a76fd255-3e5e-405b-811b-da85c715ff53" -# メンバーを取得する +# メンバーを取得 az rest --method GET --uri "https://graph.microsoft.com/v1.0/directory/administrativeUnits/a76fd255-3e5e-405b-811b-da85c715ff53/members" -# AU に対するロールを持つプリンシパルを取得する +# AUに対するロールを持つプリンシパルを取得 az rest --method GET --uri "https://graph.microsoft.com/v1.0/directory/administrativeUnits/a76fd255-3e5e-405b-811b-da85c715ff53/scopedRoleMembers" ```