Skip to content

Add Azure CMEK support and improve documentation structure #20022

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

Merged
merged 8 commits into from
Aug 4, 2025
Merged

Conversation

mikeCRL
Copy link
Contributor

@mikeCRL mikeCRL commented Jul 30, 2025

DOC-9889

Summary:

This PR documents the new Customer-Managed Encryption Keys (CMEK) support for CockroachDB Cloud Advanced clusters on Microsoft Azure, enabling customers to use their own encryption keys stored in Azure Key Vault.

To preview the updated pages:

Changes:

  • managing-cmek.md
    • Added Azure filter tab to existing AWS/GCP cloud provider options
    • Added full Azure workflow documentation with OAuth consent flow, cluster identity retrieval, and Key Vault setup
    • Added Azure configuration manifest with AZURE_KEY_VAULT type and tenant ID authentication
    • Renamed "Before you begin" to "Prerequisites" for better clarity
    • Restructured prerequisites section to separate actual requirements from items created during setup
    • Removed "CMEK not available on Azure" restriction from prerequisites
  • cmek.md
    • Added Azure Key Vault to supported services list alongside AWS KMS and GCP KMS
    • Updated HashiCorp Vault compatibility statement to include Azure Key Vault support
    • Updated infrastructure flexibility section to include Azure alongside AWS and GCP
    • Removed "CMEK not available on Azure" limitation from limitations section
  • cockroachdb-advanced-on-azure.md - Removed CMEK from list of features "not yet available on Azure"
  • releases/cloud.md - Added release note announcing Azure CMEK availability

Copy link

netlify bot commented Jul 30, 2025

Deploy Preview for cockroachdb-interactivetutorials-docs canceled.

Name Link
🔨 Latest commit 04bdb3c
🔍 Latest deploy log https://app.netlify.com/projects/cockroachdb-interactivetutorials-docs/deploys/6890db72307fa70008b03200

Copy link

netlify bot commented Jul 30, 2025

Deploy Preview for cockroachdb-api-docs canceled.

Name Link
🔨 Latest commit 04bdb3c
🔍 Latest deploy log https://app.netlify.com/projects/cockroachdb-api-docs/deploys/6890db72c6a4960009dbe7d0

Copy link

github-actions bot commented Jul 30, 2025

Copy link

netlify bot commented Jul 30, 2025

Netlify Preview

Name Link
🔨 Latest commit 04bdb3c
🔍 Latest deploy log https://app.netlify.com/projects/cockroachdb-docs/deploys/6890db724ad9180008abeebf
😎 Deploy Preview https://deploy-preview-20022--cockroachdb-docs.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@mikeCRL mikeCRL requested a review from sanchit-CRL July 30, 2025 04:11
@@ -14,7 +14,6 @@ CockroachDB {{ site.data.products.advanced }} clusters on Azure have the followi

- A cluster must have at minimum three nodes. A multi-region cluster must have at minimum three nodes per region. Single-node clusters are not supported on Azure.
- The following [PCI-Ready]({% link cockroachcloud/pci-dss.md %}) and HIPAA features are not yet available on Azure. However, CockroachDB {{ site.data.products.advanced }} on Azure meets or exceeds the requirements of SOC 2 Type 2. Refer to [Regulatory Compliance in CockroachDB {{ site.data.products.advanced }}]({% link cockroachcloud/compliance.md %}).
- [Customer Managed Encryption Keys (CMEK)]({% link cockroachcloud/cmek.md %})
- [Egress Perimeter Controls]({% link cockroachcloud/egress-perimeter-controls.md %})

Choose a reason for hiding this comment

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

Egress Perimeter control and CMEK both will be supported for Azure post the release to make Azure PCI compliant.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Reworking the broader bullet to mention that both features are in Preview. We can further refine this Azure page in line with the GA release of these features. CC @biplav-crl

<section class="filter-content" markdown="1" data-scope="azure">

1. Make a note of your {{ site.data.products.cloud }} organization ID in the [Organization settings page](https://cockroachlabs.cloud/settings).
1. Find your {{ site.data.products.advanced }} cluster's ID. From the CockroachDB {{ site.data.products.cloud }} console [Clusters list](https://cockroachlabs.cloud/clusters), click the name of a cluster to open its **Cluster Overview** page. From the page's URL make a note of the **last 12 digits** of the portion of the URL before `/overview/`. This is the cluster ID.

Choose a reason for hiding this comment

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

In case of Azure the cluster id is the entire uuid and not just the last 12 digits.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Done.

This creates an enterprise application in your Azure tenant that CockroachDB Cloud can use to access your Key Vault. It is named using the following format:

~~~
ClusterIdentity-<azure_cluster_identity_client_id>

Choose a reason for hiding this comment

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

This has been renamed to CockroachDB Cloud - <CLUSTER_ID> also azure_cluster_identity_client_id is not the place holder here, rather the cluster id is the place holder

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Done.


1. In the Azure portal, navigate to your Key Vault > **Access control (IAM)** > **Add role assignment**.
1. Select the **Key Vault Crypto Officer** role, and select the option to assign access to **User, group, or service principal**.
1. Click **Select members**, then search for the enterprise application created above: `ClusterIdentity-<azure_cluster_identity_client_id>`

Choose a reason for hiding this comment

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

Suggested change
1. Click **Select members**, then search for the enterprise application created above: `ClusterIdentity-<azure_cluster_identity_client_id>`
1. Click **Select members**, then search for the enterprise application created above: `CockroachDB Cloud - <CLUSTER_ID>`

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Done.

@@ -332,6 +382,23 @@ Make a note of the key ring name.

Click **SAVE**. Make a note of the key ring name.

</section>

<section class="filter-content" markdown="1" data-scope="azure">
Copy link

@sanchit-CRL sanchit-CRL Jul 30, 2025

Choose a reason for hiding this comment

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

This section doesn't appear in the Step 2. Create the CMEK key in the Azure tab, in the documentation link specified in the PR

Also I feel the IAM permission In the Azure portal, navigate to your Key Vault > Access control (IAM) > Add role assignment. must be given post the key creation step.

Copy link
Contributor Author

@mikeCRL mikeCRL Aug 4, 2025

Choose a reason for hiding this comment

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

Fixed both. (Edited your comment accidentally, then reverted it.)

Copy link
Contributor Author

@mikeCRL mikeCRL left a comment

Choose a reason for hiding this comment

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

@sanchit-CRL Thanks for the thorough review. I believe everything is resolved in my latest commit. Please take a look.

@@ -14,7 +14,6 @@ CockroachDB {{ site.data.products.advanced }} clusters on Azure have the followi

- A cluster must have at minimum three nodes. A multi-region cluster must have at minimum three nodes per region. Single-node clusters are not supported on Azure.
- The following [PCI-Ready]({% link cockroachcloud/pci-dss.md %}) and HIPAA features are not yet available on Azure. However, CockroachDB {{ site.data.products.advanced }} on Azure meets or exceeds the requirements of SOC 2 Type 2. Refer to [Regulatory Compliance in CockroachDB {{ site.data.products.advanced }}]({% link cockroachcloud/compliance.md %}).
- [Customer Managed Encryption Keys (CMEK)]({% link cockroachcloud/cmek.md %})
- [Egress Perimeter Controls]({% link cockroachcloud/egress-perimeter-controls.md %})
Copy link
Contributor Author

Choose a reason for hiding this comment

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

Reworking the broader bullet to mention that both features are in Preview. We can further refine this Azure page in line with the GA release of these features. CC @biplav-crl

<section class="filter-content" markdown="1" data-scope="azure">

1. Make a note of your {{ site.data.products.cloud }} organization ID in the [Organization settings page](https://cockroachlabs.cloud/settings).
1. Find your {{ site.data.products.advanced }} cluster's ID. From the CockroachDB {{ site.data.products.cloud }} console [Clusters list](https://cockroachlabs.cloud/clusters), click the name of a cluster to open its **Cluster Overview** page. From the page's URL make a note of the **last 12 digits** of the portion of the URL before `/overview/`. This is the cluster ID.
Copy link
Contributor Author

Choose a reason for hiding this comment

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

Done.

This creates an enterprise application in your Azure tenant that CockroachDB Cloud can use to access your Key Vault. It is named using the following format:

~~~
ClusterIdentity-<azure_cluster_identity_client_id>
Copy link
Contributor Author

Choose a reason for hiding this comment

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

Done.


1. In the Azure portal, navigate to your Key Vault > **Access control (IAM)** > **Add role assignment**.
1. Select the **Key Vault Crypto Officer** role, and select the option to assign access to **User, group, or service principal**.
1. Click **Select members**, then search for the enterprise application created above: `ClusterIdentity-<azure_cluster_identity_client_id>`
Copy link
Contributor Author

Choose a reason for hiding this comment

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

Done.

Copy link

@sanchit-CRL sanchit-CRL left a comment

Choose a reason for hiding this comment

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

LGTM, thanks for the changes

@mikeCRL mikeCRL enabled auto-merge (squash) August 4, 2025 16:09
@mikeCRL mikeCRL merged commit e3338f8 into main Aug 4, 2025
6 checks passed
@mikeCRL mikeCRL deleted the cmek-azure branch August 4, 2025 16:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants