Skip to content

feat(finops-hub): add Azure Data Explorer encryption options - #2338

Open
Chaithanya Nallamothu (Chaithanyanallamothu) wants to merge 8 commits into
microsoft:devfrom
Chaithanyanallamothu:Chaithanyanallamothu/adx-double-encryption
Open

Chaithanya Nallamothu (Chaithanyanallamothu) wants to merge 8 commits into
microsoft:devfrom
Chaithanyanallamothu:Chaithanyanallamothu/adx-double-encryption

Conversation

@Chaithanyanallamothu

@Chaithanyanallamothu Chaithanya Nallamothu (Chaithanyanallamothu) commented Oct 5, 2026 •

Copy link
Copy Markdown

🛠️ Description

Adds Azure Data Explorer disk and double encryption options to FinOps Hub.

  • Added enableDataExplorerDiskEncryption and enableDataExplorerDoubleEncryption, both disabled by default.
  • Passed both settings through the FinOps Hub and Analytics modules.
  • Applied the settings to the corresponding Kusto cluster properties.
  • Added a test deployment with both encryption options enabled.
  • Updated the FinOps toolkit changelog.

Fixes #2196

📷 Screenshots

Not applicable. This change only updates the FinOps Hub deployment templates.

📋 Checklist

🔬 How did you test this change?

  • 🤏 Lint tests
  • 🤞 PS -WhatIf / az validate
  • 👍 Manually deployed + verified
  • 💪 Unit tests
  • 🙌 Integration tests

Validated the updated Bicep templates locally and successfully ran Build-Toolkit finops-hub.

📦 Deploy to test?

  • Hubs + ADX (managed)
  • Hubs + Fabric (manual) — URI:
  • Hubs (manual)
  • Hubs (no data)
  • Workbooks
  • Alerts

🙋‍♀️ Do any of the following that apply?

  • 🚨 This is a breaking change.
  • 🤏 The change is less than 20 lines of code.

📑 Did you update docs/changelog.md?

  • ✅ Updated changelog (required for dev PRs)
  • ➡️ Will add log in a future PR (feature branch PRs only)
  • ❎ Log not needed (small/internal change)

📖 Did you update documentation?

  • ✅ Public docs in docs (required for dev)
  • ✅ Public docs in docs-mslearn (required for dev)
  • ✅ Internal dev docs in docs-wiki (required for dev)
  • ✅ Internal dev docs in src (required for dev)
  • ➡️ Will add docs in a future PR (feature branch PRs only)
  • ❎ Docs not needed (small/internal change)

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Warning

Copilot couldn't run its full agentic review because it didn't start before the timeout. Make sure your repository has a runner available, or add a copilot-code-review.yml file specifying one with the runs-on attribute. See the docs for more details.

Copilot review overview

Review effort: Lite
Findings: 1 High severity

Open (1)
What changed in this PR

Adds configurable Azure Data Explorer (ADX) disk and double encryption options to the FinOps Hub Bicep templates and wires them through module boundaries to the ADX (Kusto) cluster resource.

Changes:

  • Introduced enableAdxDiskEncryption and enableAdxDoubleEncryption parameters (default false) in main.bicep, modules/hub.bicep, and Analytics/app.bicep.
  • Applied both flags to the Microsoft.Kusto/clusters resource properties.
  • Added a test deployment scenario enabling both encryption options and updated the toolkit changelog.
File Description
src/​templates/​finops-hub/​test/​main.test.bicep Adds a second test module deployment enabling both ADX encryption flags.
src/​templates/​finops-hub/​modules/​hub.bicep Adds params and forwards them into the Analytics module.
src/​templates/​finops-hub/​modules/​Microsoft.FinOpsHubs/​Analytics/​app.bicep Adds params and sets Kusto cluster encryption properties based on them.
src/​templates/​finops-hub/​main.bicep Adds top-level params and passes them to the hub module.
docs-mslearn/​toolkit/​changelog.md Notes the new ADX encryption options in the changelog.

💡 Add a code-review agent skill for context-aware, tailored reviews. Learn more in the docs.

Comment on lines 314 to 317
enableStreamingIngest: true
enableDiskEncryption: enableAdxDiskEncryption
enableDoubleEncryption: enableAdxDoubleEncryption
enableAutoStop: false

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Updated in f12bf19. The encryption properties are now conditionally added only when the corresponding option is enabled, so the default false values do not emit enableDiskEncryption or enableDoubleEncryption during redeployment. This follows the existing conditional property pattern used for storage infrastructure encryption.

@Chaithanyanallamothu

Copy link
Copy Markdown
Author

@microsoft-github-policy-service agree

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

Portal deployments cannot configure the options, and the default double-encryption value can cause invalid update attempts.

3 open findings

🧠 Review effort: Balanced

Comment thread src/templates/finops-hub/main.bicep Outdated
Comment on lines +54 to +58
@description('Optional. Enable disk encryption on the Azure Data Explorer cluster. Can only be enabled during cluster creation. Default: false.')
param enableAdxDiskEncryption bool = false

@description('Optional. Enable double encryption on the Azure Data Explorer cluster. Can only be enabled during cluster creation. Default: false.')
param enableAdxDoubleEncryption bool = false

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Updated in f12bf19. Added both Data Explorer encryption options to the existing Data Explorer section in createUiDefinition.json and mapped them through the deployment outputs. The parameter names were subsequently aligned with the existing dataExplorer naming convention in 96bb058.


- **Added**
- Added VNet and private network modes, including opt-in NAT Gateway support for private mode; NAT Gateway incurs additional cost when enabled ([#2163](https://github.com/microsoft/finops-toolkit/pull/2163)).
- Added Azure Data Explorer disk and double encryption options for FinOps hub deployments ([#2196](https://github.com/microsoft/finops-toolkit/issues/2196)).

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Updated in f12bf19. Changed ms.date to 10/07/2026 to match the current changelog update.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤖 [AI][Claude] PR Review

Summary: Straightforward addition of two ADX encryption toggles, wired through all three Bicep layers with a test deployment and changelog entry. Existing Copilot review already caught the three biggest issues (immutable-property default risk, missing portal/createUiDefinition support, and the changelog ms.date not being bumped), so this review focuses on two naming/accuracy nits that weren't yet flagged.

⚠️ Should fix (1)

  1. New parameter names (enableAdxDiskEncryption/enableAdxDoubleEncryption) break from the established dataExplorer* naming convention used by every other related parameter in these files, and the shared description text overstates disk encryption's immutability.

No blockers or suggestions beyond this from an independent pass — bicep build on main.bicep succeeds with no new warnings/errors introduced by this change.

Comment thread src/templates/finops-hub/main.bicep Outdated
Comment on lines +54 to +58
@description('Optional. Enable disk encryption on the Azure Data Explorer cluster. Can only be enabled during cluster creation. Default: false.')
param enableAdxDiskEncryption bool = false

@description('Optional. Enable double encryption on the Azure Data Explorer cluster. Can only be enabled during cluster creation. Default: false.')
param enableAdxDoubleEncryption bool = false

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤖 [AI][Claude] ⚠️ Should fix

Two small issues with these two new parameters (same pattern repeats in modules/hub.bicep and modules/Microsoft.FinOpsHubs/Analytics/app.bicep):

  1. Naming convention: every other Data Explorer parameter in this template uses the dataExplorer prefix (dataExplorerName, dataExplorerSku, dataExplorerCapacity, dataExplorerRawRetentionInDays, dataExplorerFinalRetentionInMonths). enableAdxDiskEncryption/enableAdxDoubleEncryption introduce a new Adx abbreviation that doesn't appear anywhere else in the codebase. Consider enableDataExplorerDiskEncryption/enableDataExplorerDoubleEncryption for consistency.
  2. Description accuracy: per the Azure Data Explorer disk encryption docs, disk encryption can be toggled after cluster creation (it causes up to 20 minutes of unavailability while it applies) — only double encryption is actually create-time-only and irreversible once enabled (double encryption docs). "Can only be enabled during cluster creation" is accurate for enableAdxDoubleEncryption but misleading for enableAdxDiskEncryption.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Updated in 96bb058. Renamed the parameters to enableDataExplorerDiskEncryption and enableDataExplorerDoubleEncryption across the template, modules, portal definition, and test to match the existing Data Explorer naming convention. I also removed the creation-only wording from the disk encryption description and tooltip while keeping it for double encryption.

Signed-off-by: Chaithanya Nallamothu <chaithanyan5177@gmail.com>
@Chaithanyanallamothu

Copy link
Copy Markdown
Author

Hi Michael Flanakin (@flanakin) Brett Wilson (@MSBrett) ,

I've addressed the earlier review feedback and merged the latest dev branch to resolve the changelog conflict.

The PR diff remains focused on the Azure Data Explorer encryption changes. Please let me know if anything else needs adjustment.

Thanks!

@flanakin Michael Flanakin (flanakin) added this to the v16 milestone Oct 26, 2026

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤖 [AI][Claude] PR Review

Summary: Prior feedback is addressed (renamed params, emit-only-when-true avoids touching immutable properties, createUiDefinition wired). Remaining items:

⚠️ Should fix (2)

  1. Docs missing. The new parameters aren't in the hub template parameter table (docs-mslearn/toolkit/hubs/template.md, near dataExplorerName), and the checklist marks docs as not needed. Public docs are required for dev PRs; add both parameters, noting double encryption is create-time only.
  2. Merge conflict with dev. The PR is currently CONFLICTING. Merge origin/dev (merge commit, no rebase), keep both changelog entries, and set ms.date in docs-mslearn/toolkit/changelog.md to the merge date since the body changed.

@Chaithanyanallamothu

Copy link
Copy Markdown
Author

Updated the FinOps hub template documentation with both ADX encryption parameters and merged the latest upstream dev changes.

Resolved the changelog and deployment UI conflicts, keeping the updated upstream retention logic intact. Also updated the documentation dates.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Needs: Review 👀 PR that is ready to be reviewed

Projects

None yet

Development

Successfully merging this pull request may close these issues.

add support for Azure Data Explorer Encryption and Double Encryption

4 participants