-
Notifications
You must be signed in to change notification settings - Fork 5
BED-6715: AzureHound managed identity authentication #118
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
WalkthroughDocumentation for AzureHound installation and configuration restructured to support multi-path authentication (Azure Managed Identity and Certificate-based). Version references updated from v2.0.5 to v2.8.1, prerequisites expanded, and content reorganized with new UI components and managed identity recommendation snippets integrated. Changes
Estimated code review effort🎯 2 (Simple) | ⏱️ ~8 minutes
Possibly related PRs
Suggested reviewers
Poem
Pre-merge checks and finishing touches✅ Passed checks (3 passed)
✨ Finishing touches
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 3
🧹 Nitpick comments (2)
docs/install-data-collector/install-azurehound/azure-configuration.mdx (1)
156-172: Clarify that Microsoft Graph permissions require admin consent.While the steps correctly guide users through granting admin consent, the learning preferences indicate that documentation should explicitly state that Microsoft Graph application permissions (Directory.Read.All and RoleManagement.Read.All) require admin consent.
Consider adding a clarifying note before this step to emphasize that admin consent is a required next step after adding permissions.
Based on learnings, add an explicit note like:
<Step title="Grant admin consent"> + + The Microsoft Graph API permissions (Directory.Read.All and RoleManagement.Read.All) require admin consent to function correctly. + After adding the required permissions, you must grant admin consent for the application to use them.docs/install-data-collector/install-azurehound/create-configuration.mdx (1)
2-2: Update title to include "Enterprise" for consistency.The page title "Create an AzureHound Configuration" should be "Create an AzureHound Enterprise Configuration" to match terminology conventions used elsewhere in the documentation and to be explicit that this is an Enterprise-specific feature.
-title: Create an AzureHound Configuration +title: Create an AzureHound Enterprise Configuration
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
⛔ Files ignored due to path filters (20)
docs/assets/azurehound-install-app-registrations.pngis excluded by!**/*.pngdocs/assets/azurehound-install-branding-result.pngis excluded by!**/*.pngdocs/assets/azurehound-install-branding.pngis excluded by!**/*.pngdocs/assets/azurehound-install-upload-logo.pngis excluded by!**/*.pngdocs/assets/image-103.pngis excluded by!**/*.pngdocs/assets/image-106.pngis excluded by!**/*.pngdocs/assets/image-108.pngis excluded by!**/*.pngdocs/assets/image-110.pngis excluded by!**/*.pngdocs/assets/image-111.pngis excluded by!**/*.pngdocs/assets/image-113.pngis excluded by!**/*.pngdocs/images/data_collectors/azurehound/admin-consent-granted.pngis excluded by!**/*.pngdocs/images/data_collectors/azurehound/app-registration-details.pngis excluded by!**/*.pngdocs/images/data_collectors/azurehound/directory-read-all.pngis excluded by!**/*.pngdocs/images/data_collectors/azurehound/grant-admin-consent.pngis excluded by!**/*.pngdocs/images/data_collectors/azurehound/ms-graph-api-permission-type.pngis excluded by!**/*.pngdocs/images/data_collectors/azurehound/register-app.pngis excluded by!**/*.pngdocs/images/data_collectors/azurehound/remove-default-permission.pngis excluded by!**/*.pngdocs/images/data_collectors/azurehound/rolemanagement-read-all.pngis excluded by!**/*.pngdocs/images/data_collectors/grant_admin_consent.pngis excluded by!**/*.pngdocs/images/data_collectors/rolemanagement_read_all.pngis excluded by!**/*.png
📒 Files selected for processing (3)
docs/install-data-collector/install-azurehound/azure-configuration.mdx(1 hunks)docs/install-data-collector/install-azurehound/create-configuration.mdx(4 hunks)docs/snippets/hounds/manged-id-recommendation.mdx(1 hunks)
🧰 Additional context used
🧠 Learnings (3)
📓 Common learnings
Learnt from: StephenHinck
Repo: SpecterOps/bloodhound-docs PR: 42
File: docs/install-data-collector/install-azurehound/system-requirements.mdx:70-73
Timestamp: 2025-08-08T15:57:55.743Z
Learning: For AzureHound docs (docs/install-data-collector/install-azurehound/system-requirements.mdx), prefer explicitly stating:
- Directory Reader must be permanently active (not PIM-eligible only).
- Microsoft Graph application permissions (Directory.Read.All, RoleManagement.Read.All) require admin consent.
- Azure Reader role phrasing: “on all Azure subscriptions, ideally assigned at the tenant root group (root management group) scope.”
📚 Learning: 2025-08-08T15:57:55.743Z
Learnt from: StephenHinck
Repo: SpecterOps/bloodhound-docs PR: 42
File: docs/install-data-collector/install-azurehound/system-requirements.mdx:70-73
Timestamp: 2025-08-08T15:57:55.743Z
Learning: For AzureHound docs (docs/install-data-collector/install-azurehound/system-requirements.mdx), prefer explicitly stating:
- Directory Reader must be permanently active (not PIM-eligible only).
- Microsoft Graph application permissions (Directory.Read.All, RoleManagement.Read.All) require admin consent.
- Azure Reader role phrasing: “on all Azure subscriptions, ideally assigned at the tenant root group (root management group) scope.”
Applied to files:
docs/install-data-collector/install-azurehound/azure-configuration.mdxdocs/snippets/hounds/manged-id-recommendation.mdxdocs/install-data-collector/install-azurehound/create-configuration.mdx
📚 Learning: 2025-10-02T18:01:39.059Z
Learnt from: StephenHinck
Repo: SpecterOps/bloodhound-docs PR: 67
File: docs/collect-data/enterprise-collection/privileged-collection.mdx:7-7
Timestamp: 2025-10-02T18:01:39.059Z
Learning: In the BloodHound documentation repository, "BloodHound" as a standalone name refers to the entire product family and is appropriate to use when content applies to all products in the family (Enterprise and Community Edition). "BloodHound Enterprise" should be used only when referring specifically to Enterprise-only features or capabilities.
Applied to files:
docs/install-data-collector/install-azurehound/create-configuration.mdx
🔇 Additional comments (5)
docs/install-data-collector/install-azurehound/azure-configuration.mdx (2)
334-334: Excellent explicit coverage of permanent assignment requirement.Line 334 correctly and explicitly states "Ensure that the Assignment type is Active and the Permanently assigned box is checked." This properly addresses the requirement that Directory Reader must be permanently active (not PIM-eligible only), as noted in prior documentation guidance.
197-234: Well-structured Managed Identity configuration section.The new Managed Identity subsection provides clear step-by-step guidance that:
- References Microsoft documentation for detailed context
- Explicitly recommends User-Assigned Managed Identity (reinforced via imported recommendation component)
- Includes proper links and navigation hints for users
The structure using Steps component makes the flow easy to follow.
docs/install-data-collector/install-azurehound/create-configuration.mdx (3)
10-22: Excellent prerequisites table expansion.The prerequisites table properly documents all required information for both authentication paths:
- Existing prerequisites are clearly explained with links
- New Managed Identity and Certificate prerequisites are properly scoped (lines 21-22) with accurate field names and references
- Prerequisite descriptions correctly link to their configuration sections
The organization makes it clear which items are conditionally required based on the chosen authentication method.
102-201: Excellent dual-path authentication flow with tab interface.The multi-tab authentication structure (lines 107-201) provides:
- Clear guidance to select between Azure Managed Identity (recommended) and Certificate
- Strong recommendation for Managed Identity at line 105
- Comprehensive step-by-step instructions for each path with expected CLI prompts and outputs
- Proper emphasis on User-Assigned Managed Identity type with helpful note on locating the Client ID (line 140)
- Proper context about certificate characteristics (lines 174-180)
- Consistent structure and formatting within both tabs
The tabbed interface makes both paths equally discoverable while still guiding users toward the recommended Managed Identity approach.
67-77: Version references correctly updated.CLI version references are properly updated from v2.0.5 to v2.8.1 at lines 67 and 77, with consistent formatting throughout the configuration flow examples.
docs/install-data-collector/install-azurehound/azure-configuration.mdx
Outdated
Show resolved
Hide resolved
docs/install-data-collector/install-azurehound/create-configuration.mdx
Outdated
Show resolved
Hide resolved
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 1
🧹 Nitpick comments (2)
docs/install-data-collector/install-azurehound/azure-configuration.mdx (2)
334-334: Add explicit clarification that Directory Reader must not be PIM-eligible only.Line 334 correctly specifies "Permanently assigned" but per learnings from prior reviews, the documentation should explicitly clarify that the Directory Reader role must be permanently active and not assigned as PIM-eligible only. This distinction helps avoid misconfiguration.
Consider adding a note before or after line 334:
1. Ensure that the Assignment type is **Active** and the **Permanently assigned** box is checked. Enter a justification and click **Assign**. + + <Note>The Directory Reader role must be permanently assigned, not PIM-eligible only. Ensure **Permanently assigned** is selected to avoid authentication failures.</Note>Based on learnings, this explicit guidance reduces support burden.
347-368: Clarify Azure Reader role assignment guidance to align with best practices.Lines 347–368 guide assigning the Reader role at the Tenant Root Group scope, which aligns with best practices. However, the language could be more explicit about this being the recommended approach, per established guidance. Currently, line 347 says "If you do not have any management groups, you may either create your Tenant Root Group..." which sounds optional rather than recommended.
Consider revising line 347 to explicitly recommend assignment at the tenant root group scope:
-If you do not have any management groups, you may either create your Tenant Root Group following the prompts in the middle of the screen to ensure future visibility if another administrator begins use of subscriptions, or you may skip this section altogether. +The Reader role should be assigned on all Azure subscriptions, ideally at the Tenant Root Group (root management group) scope to ensure visibility of all current and future subscriptions. If you do not have a Tenant Root Group configured, create one following the prompts in the Azure portal. Skipping this step may result in missing data during collection.Based on learnings, this guidance is preferred for AzureHound docs.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (3)
docs/install-data-collector/install-azurehound/azure-configuration.mdx(1 hunks)docs/install-data-collector/install-azurehound/create-configuration.mdx(4 hunks)docs/snippets/hounds/managed-id-recommendation.mdx(1 hunks)
✅ Files skipped from review due to trivial changes (1)
- docs/snippets/hounds/managed-id-recommendation.mdx
🧰 Additional context used
🧠 Learnings (3)
📓 Common learnings
Learnt from: StephenHinck
Repo: SpecterOps/bloodhound-docs PR: 42
File: docs/install-data-collector/install-azurehound/system-requirements.mdx:70-73
Timestamp: 2025-08-08T15:57:55.743Z
Learning: For AzureHound docs (docs/install-data-collector/install-azurehound/system-requirements.mdx), prefer explicitly stating:
- Directory Reader must be permanently active (not PIM-eligible only).
- Microsoft Graph application permissions (Directory.Read.All, RoleManagement.Read.All) require admin consent.
- Azure Reader role phrasing: “on all Azure subscriptions, ideally assigned at the tenant root group (root management group) scope.”
📚 Learning: 2025-08-08T15:57:55.743Z
Learnt from: StephenHinck
Repo: SpecterOps/bloodhound-docs PR: 42
File: docs/install-data-collector/install-azurehound/system-requirements.mdx:70-73
Timestamp: 2025-08-08T15:57:55.743Z
Learning: For AzureHound docs (docs/install-data-collector/install-azurehound/system-requirements.mdx), prefer explicitly stating:
- Directory Reader must be permanently active (not PIM-eligible only).
- Microsoft Graph application permissions (Directory.Read.All, RoleManagement.Read.All) require admin consent.
- Azure Reader role phrasing: “on all Azure subscriptions, ideally assigned at the tenant root group (root management group) scope.”
Applied to files:
docs/install-data-collector/install-azurehound/create-configuration.mdxdocs/install-data-collector/install-azurehound/azure-configuration.mdx
📚 Learning: 2025-10-02T18:01:39.059Z
Learnt from: StephenHinck
Repo: SpecterOps/bloodhound-docs PR: 67
File: docs/collect-data/enterprise-collection/privileged-collection.mdx:7-7
Timestamp: 2025-10-02T18:01:39.059Z
Learning: In the BloodHound documentation repository, "BloodHound" as a standalone name refers to the entire product family and is appropriate to use when content applies to all products in the family (Enterprise and Community Edition). "BloodHound Enterprise" should be used only when referring specifically to Enterprise-only features or capabilities.
Applied to files:
docs/install-data-collector/install-azurehound/create-configuration.mdx
🔇 Additional comments (5)
docs/install-data-collector/install-azurehound/create-configuration.mdx (2)
102-202: Dual-path authentication flow is well-structured.The tab-based separation of Managed Identity (recommended, lines 108–153) and Certificate (lines 155–200) authentication methods provides clear guidance. Both paths include:
- Clear prompts showing expected CLI output
- Step-by-step navigation
- Links to supporting documentation (e.g., line 140, 174–180)
- Consistent BloodHound Enterprise URL entry (lines 148–152, 195–199)
The Managed Identity tab appropriately emphasizes that configuration requires prior identity creation (line 112), and both tabs flow naturally into the collector client configuration step that follows.
6-6: Import verified and file is correctly available.The managed identity recommendation snippet at
/snippets/hounds/managed-id-recommendation.mdxexists and is properly imported. The component is correctly rendered at line 110 in the Managed Identity tab. No issues found.docs/install-data-collector/install-azurehound/azure-configuration.mdx (3)
42-51: Strong role-based access guidance for app registration creation.Lines 42–51 clearly specify required Microsoft Entra admin center roles (Global Administrator, or Privileged Role Administrator + Application Administrator/Cloud Application Administrator) with inline links to Microsoft role definitions. This guidance prevents common permission-related configuration failures.
93-184: API permissions assignment section is clear and well-structured.The steps correctly guide users to:
- Remove the unnecessary default User.Read permission (lines 106–117)
- Add both required Microsoft Graph permissions with visual aids (lines 119–154)
- Grant admin consent and verify completion (lines 156–182)
The guidance aligns with learnings that Microsoft Graph permissions require admin consent, and includes frames showing expected UI state at each step, which reduces configuration errors.
6-6: Managed identity recommendation snippet is correctly referenced and rendered.The import at line 6 correctly references
/snippets/hounds/managed-id-recommendation.mdx, the file exists with appropriate content, and the component is properly rendered at line 206 in the Managed Identity subsection. The snippet content aligns with the intended recommendation about User-Assigned Managed Identity.
Purpose
This pull request (PR) adds documentation for configuring the Azure Managed Identity authentication option for AzureHound data collection (introduced in v8.3.0).
Some end-to-end testing is still required to validate, but I may need some help from Engineering with that (or someone who has configured an AzureHound collector before).
Note
The new section intentionally directs users to the relevant Microsoft docs rather than reproducing that content in our docs because I didn't identify any unique BloodHound nuances that would otherwise require it.
Additional info
StepcomponentStaging
Summary by CodeRabbit
✏️ Tip: You can customize this high-level summary in your review settings.