[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-cockroachdb-enabling-cmek-encryption":3,"mdc--f6jq4c-key":39,"related-org-cockroachdb-enabling-cmek-encryption":1820,"related-repo-cockroachdb-enabling-cmek-encryption":1978},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":25,"repoUrl":26,"updatedAt":27,"license":28,"forks":29,"topics":30,"repo":34,"sourceUrl":37,"mdContent":38},"enabling-cmek-encryption","enable CMEK encryption for CockroachDB clusters","Enables Customer-Managed Encryption Keys (CMEK) on CockroachDB Cloud clusters with the Advanced plan and Advanced Security Add-on to give organizations control over data-at-rest encryption keys via their cloud provider's KMS. Use when enabling CMEK for compliance, rotating encryption keys, or verifying CMEK configuration.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},"cockroachdb","CockroachDB","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fcockroachdb.png",[12,16,19,22],{"name":13,"slug":14,"type":15},"Security","security","tag",{"name":17,"slug":18,"type":15},"Compliance","compliance",{"name":20,"slug":21,"type":15},"Encryption","encryption",{"name":23,"slug":24,"type":15},"Database","database",3,"https:\u002F\u002Fgithub.com\u002Fcockroachdb\u002Fclaude-plugin","2026-07-12T07:56:55.01888",null,2,[31,32,8,33],"claude","cockroach-cloud","developer-tools",{"repoUrl":26,"stars":25,"forks":29,"topics":35,"description":36},[31,32,8,33],"CockroachDB development plugin for Claude","https:\u002F\u002Fgithub.com\u002Fcockroachdb\u002Fclaude-plugin\u002Ftree\u002FHEAD\u002Fskills\u002Fcockroachdb-security-and-governance\u002Fenabling-cmek-encryption","---\nname: enabling-cmek-encryption\ndescription: Enables Customer-Managed Encryption Keys (CMEK) on CockroachDB Cloud clusters with the Advanced plan and Advanced Security Add-on to give organizations control over data-at-rest encryption keys via their cloud provider's KMS. Use when enabling CMEK for compliance, rotating encryption keys, or verifying CMEK configuration.\ncompatibility: Requires CockroachDB Cloud Advanced plan with Advanced Security Add-on and cloud provider KMS (AWS KMS, GCP Cloud KMS, or Azure Key Vault).\nmetadata:\n  author: cockroachdb\n  version: \"1.0\"\n---\n\n# Enabling CMEK Encryption\n\nEnables Customer-Managed Encryption Keys (CMEK) on CockroachDB Cloud clusters so that data-at-rest encryption is controlled by keys in the organization's own cloud provider KMS (AWS KMS, GCP Cloud KMS, or Azure Key Vault). CMEK gives organizations full control over key lifecycle, rotation, and revocation.\n\n## When to Use This Skill\n\n- Enabling CMEK for regulatory or compliance requirements (SOC 2, HIPAA, PCI DSS)\n- Verifying CMEK is properly configured after initial setup\n- Rotating CMEK keys per organization key rotation policy\n- Responding to a security audit finding about encryption at rest\n- Understanding CMEK requirements and plan prerequisites\n\n## Prerequisites\n\n- **CockroachDB Cloud Advanced plan** — CMEK is not available on Basic or Standard plans\n- **Advanced Security Add-on** — Must be enabled on the Advanced plan cluster\n- **Cloud provider KMS:**\n  - **AWS:** KMS key in the same region as the cluster, with appropriate IAM policy\n  - **GCP:** Cloud KMS key ring and key in the same region, with appropriate IAM bindings\n  - **Azure:** Key Vault with key in the same region, with appropriate access policies\n- **ccloud CLI** authenticated with Cluster Admin role\n- **Cross-account access:** The CockroachDB Cloud service account must have permission to use the KMS key\n\n**Check plan eligibility:**\n```bash\n# Verify cluster plan type\nccloud cluster info \u003Ccluster-name> -o json\n# Look for \"plan\": \"ADVANCED\" and Advanced Security Add-on status\n```\n\n## Configuration Decisions\n\nBefore proceeding, determine which cloud provider KMS the user will use. Ask which option applies to their environment, then follow only the corresponding subsection in Step 2.\n\n**Decision 1 — Cloud provider KMS:**\n- **AWS KMS:** Use when the CockroachDB Cloud cluster runs on AWS. Requires a symmetric encryption key in the same region as the cluster.\n- **GCP Cloud KMS:** Use when the cluster runs on GCP. Requires a key ring and key in the same region.\n- **Azure Key Vault:** Use when the cluster runs on Azure. Requires a Key Vault with a key in the same region.\n\n## Steps\n\n### 1. Verify Plan and Add-on Eligibility\n\n```bash\nccloud cluster info \u003Ccluster-name> -o json\n```\n\n**If Standard plan:** CMEK is not available. The upgrade path is:\n1. Upgrade to Advanced plan (contact CockroachDB sales or upgrade in Cloud Console)\n2. Enable the Advanced Security Add-on\n\n**If Advanced plan without Advanced Security Add-on:** Enable the add-on in the Cloud Console before proceeding.\n\n### 2. Create a KMS Key in Your Cloud Provider\n\nFollow only the subsection for the user's cloud provider (selected in Configuration Decisions above).\n\n#### AWS KMS\n\n```bash\n# Create a symmetric encryption key in the same region as the cluster\naws kms create-key \\\n  --description \"CockroachDB CMEK - \u003Ccluster-name>\" \\\n  --key-usage ENCRYPT_DECRYPT \\\n  --origin AWS_KMS \\\n  --region \u003Caws-region>\n```\n\nGrant the CockroachDB Cloud service account access to the key:\n```json\n{\n  \"Effect\": \"Allow\",\n  \"Principal\": {\n    \"AWS\": \"\u003Ccockroachdb-cloud-service-account-arn>\"\n  },\n  \"Action\": [\n    \"kms:Encrypt\",\n    \"kms:Decrypt\",\n    \"kms:GenerateDataKey\",\n    \"kms:DescribeKey\"\n  ],\n  \"Resource\": \"*\"\n}\n```\n\n#### GCP Cloud KMS\n\n```bash\n# Create a key ring\ngcloud kms keyrings create cockroachdb-cmek \\\n  --location \u003Cgcp-region>\n\n# Create a symmetric encryption key\ngcloud kms keys create cmek-key \\\n  --keyring cockroachdb-cmek \\\n  --location \u003Cgcp-region> \\\n  --purpose encryption\n```\n\nGrant the CockroachDB Cloud service account access:\n```bash\ngcloud kms keys add-iam-policy-binding cmek-key \\\n  --keyring cockroachdb-cmek \\\n  --location \u003Cgcp-region> \\\n  --member \"serviceAccount:\u003Ccockroachdb-cloud-service-account>\" \\\n  --role \"roles\u002Fcloudkms.cryptoKeyEncrypterDecrypter\"\n```\n\n#### Azure Key Vault\n\n```bash\n# Create a key in the existing Key Vault\naz keyvault key create \\\n  --vault-name \u003Cvault-name> \\\n  --name cockroachdb-cmek \\\n  --kty RSA \\\n  --size 2048\n```\n\nGrant the CockroachDB Cloud managed identity access via Key Vault access policies.\n\n### 3. Configure CMEK on the Cluster\n\n```bash\n# Enable CMEK with the KMS key URI\nccloud cluster update \u003Ccluster-id> \\\n  --cmek-key-spec '\u003Ckey-spec-json>'\n```\n\nThe key spec format varies by cloud provider. Refer to the CockroachDB Cloud documentation for the exact JSON structure for your provider.\n\nSee [ccloud commands reference](references\u002Fccloud-commands.md) for detailed command syntax.\n\n### 4. Verify CMEK Configuration\n\n```bash\n# Check CMEK status\nccloud cluster info \u003Ccluster-name> -o json\n# Verify cmek_config shows enabled status and correct key URI\n```\n\nCMEK status is not exposed as a SQL cluster setting; the Cloud Console\n**Cluster** → **Settings** → **Encryption** page is authoritative for\nmanaged clusters.\n\n### 5. Test Key Accessibility\n\nAfter enabling CMEK, verify the cluster is operating normally:\n\n```sql\n-- Create and query a test table to verify read\u002Fwrite works\nCREATE TABLE cmek_test (id INT PRIMARY KEY, data STRING);\nINSERT INTO cmek_test VALUES (1, 'encryption test');\nSELECT * FROM cmek_test;\nDROP TABLE cmek_test;\n```\n\n## Safety Considerations\n\n**CMEK misconfiguration can make data inaccessible.** If the KMS key is deleted, disabled, or access is revoked, the cluster will not be able to read or write data.\n\n**Before enabling CMEK:**\n- Ensure the KMS key has appropriate deletion protection enabled\n- Verify the IAM\u002Faccess policy grants are correct\n- Confirm the KMS key region matches the cluster region\n- Document the key URI and access policies\n\n**Key management risks:**\n- **Key deletion:** Deleting the KMS key makes all cluster data permanently inaccessible\n- **Access revocation:** Revoking CockroachDB's access to the key will cause the cluster to stop serving reads and writes\n- **Key rotation:** Plan key rotation per your organization's policy; CockroachDB supports automatic re-encryption with rotated keys\n\n## Rollback\n\nCMEK cannot be disabled once enabled on a cluster. However:\n\n1. **Key rotation:** You can rotate to a new key at any time\n2. **Access restoration:** If access was accidentally revoked, restore the IAM\u002Faccess policy to resume operations\n3. **New cluster:** If CMEK configuration is fundamentally wrong, create a new cluster and migrate data\n\n**Emergency — Key access lost:**\n1. Restore KMS key access immediately (IAM policy, key re-enable)\n2. The cluster will resume operations once key access is restored\n3. If the key was permanently deleted, data recovery is not possible\n\n## References\n\n**Related skills:**\n- [auditing-cloud-cluster-security](..\u002Fauditing-cloud-cluster-security\u002FSKILL.md) — Run a full security posture audit\n\n**Official CockroachDB Documentation:**\n- [CMEK Overview](https:\u002F\u002Fwww.cockroachlabs.com\u002Fdocs\u002Fcockroachcloud\u002Fcmek.html)\n- [Managing CMEK for Dedicated Clusters](https:\u002F\u002Fwww.cockroachlabs.com\u002Fdocs\u002Fcockroachcloud\u002Fmanaging-cmek.html)\n- [CockroachDB Cloud Security Overview](https:\u002F\u002Fwww.cockroachlabs.com\u002Fdocs\u002Fcockroachcloud\u002Fsecurity-overview.html)\n\n**Cloud Provider KMS Documentation:**\n- [AWS KMS](https:\u002F\u002Fdocs.aws.amazon.com\u002Fkms\u002F)\n- [GCP Cloud KMS](https:\u002F\u002Fcloud.google.com\u002Fkms\u002Fdocs)\n- [Azure Key Vault](https:\u002F\u002Fdocs.microsoft.com\u002Fen-us\u002Fazure\u002Fkey-vault\u002F)\n",{"data":40,"body":44},{"name":4,"description":6,"compatibility":41,"metadata":42},"Requires CockroachDB Cloud Advanced plan with Advanced Security Add-on and cloud provider KMS (AWS KMS, GCP Cloud KMS, or Azure Key Vault).",{"author":8,"version":43},"1.0",{"type":45,"children":46},"root",[47,55,61,68,98,104,189,197,281,287,292,300,333,339,346,392,402,416,426,432,437,444,573,578,861,867,1040,1045,1168,1174,1291,1296,1302,1378,1383,1397,1403,1465,1489,1495,1500,1549,1555,1565,1573,1596,1604,1637,1643,1648,1680,1688,1706,1712,1720,1734,1742,1776,1784,1814],{"type":48,"tag":49,"props":50,"children":51},"element","h1",{"id":4},[52],{"type":53,"value":54},"text","Enabling CMEK Encryption",{"type":48,"tag":56,"props":57,"children":58},"p",{},[59],{"type":53,"value":60},"Enables Customer-Managed Encryption Keys (CMEK) on CockroachDB Cloud clusters so that data-at-rest encryption is controlled by keys in the organization's own cloud provider KMS (AWS KMS, GCP Cloud KMS, or Azure Key Vault). CMEK gives organizations full control over key lifecycle, rotation, and revocation.",{"type":48,"tag":62,"props":63,"children":65},"h2",{"id":64},"when-to-use-this-skill",[66],{"type":53,"value":67},"When to Use This Skill",{"type":48,"tag":69,"props":70,"children":71},"ul",{},[72,78,83,88,93],{"type":48,"tag":73,"props":74,"children":75},"li",{},[76],{"type":53,"value":77},"Enabling CMEK for regulatory or compliance requirements (SOC 2, HIPAA, PCI DSS)",{"type":48,"tag":73,"props":79,"children":80},{},[81],{"type":53,"value":82},"Verifying CMEK is properly configured after initial setup",{"type":48,"tag":73,"props":84,"children":85},{},[86],{"type":53,"value":87},"Rotating CMEK keys per organization key rotation policy",{"type":48,"tag":73,"props":89,"children":90},{},[91],{"type":53,"value":92},"Responding to a security audit finding about encryption at rest",{"type":48,"tag":73,"props":94,"children":95},{},[96],{"type":53,"value":97},"Understanding CMEK requirements and plan prerequisites",{"type":48,"tag":62,"props":99,"children":101},{"id":100},"prerequisites",[102],{"type":53,"value":103},"Prerequisites",{"type":48,"tag":69,"props":105,"children":106},{},[107,118,128,169,179],{"type":48,"tag":73,"props":108,"children":109},{},[110,116],{"type":48,"tag":111,"props":112,"children":113},"strong",{},[114],{"type":53,"value":115},"CockroachDB Cloud Advanced plan",{"type":53,"value":117}," — CMEK is not available on Basic or Standard plans",{"type":48,"tag":73,"props":119,"children":120},{},[121,126],{"type":48,"tag":111,"props":122,"children":123},{},[124],{"type":53,"value":125},"Advanced Security Add-on",{"type":53,"value":127}," — Must be enabled on the Advanced plan cluster",{"type":48,"tag":73,"props":129,"children":130},{},[131,136],{"type":48,"tag":111,"props":132,"children":133},{},[134],{"type":53,"value":135},"Cloud provider KMS:",{"type":48,"tag":69,"props":137,"children":138},{},[139,149,159],{"type":48,"tag":73,"props":140,"children":141},{},[142,147],{"type":48,"tag":111,"props":143,"children":144},{},[145],{"type":53,"value":146},"AWS:",{"type":53,"value":148}," KMS key in the same region as the cluster, with appropriate IAM policy",{"type":48,"tag":73,"props":150,"children":151},{},[152,157],{"type":48,"tag":111,"props":153,"children":154},{},[155],{"type":53,"value":156},"GCP:",{"type":53,"value":158}," Cloud KMS key ring and key in the same region, with appropriate IAM bindings",{"type":48,"tag":73,"props":160,"children":161},{},[162,167],{"type":48,"tag":111,"props":163,"children":164},{},[165],{"type":53,"value":166},"Azure:",{"type":53,"value":168}," Key Vault with key in the same region, with appropriate access policies",{"type":48,"tag":73,"props":170,"children":171},{},[172,177],{"type":48,"tag":111,"props":173,"children":174},{},[175],{"type":53,"value":176},"ccloud CLI",{"type":53,"value":178}," authenticated with Cluster Admin role",{"type":48,"tag":73,"props":180,"children":181},{},[182,187],{"type":48,"tag":111,"props":183,"children":184},{},[185],{"type":53,"value":186},"Cross-account access:",{"type":53,"value":188}," The CockroachDB Cloud service account must have permission to use the KMS key",{"type":48,"tag":56,"props":190,"children":191},{},[192],{"type":48,"tag":111,"props":193,"children":194},{},[195],{"type":53,"value":196},"Check plan eligibility:",{"type":48,"tag":198,"props":199,"children":204},"pre",{"className":200,"code":201,"language":202,"meta":203,"style":203},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","# Verify cluster plan type\nccloud cluster info \u003Ccluster-name> -o json\n# Look for \"plan\": \"ADVANCED\" and Advanced Security Add-on status\n","bash","",[205],{"type":48,"tag":206,"props":207,"children":208},"code",{"__ignoreMap":203},[209,221,273],{"type":48,"tag":210,"props":211,"children":214},"span",{"class":212,"line":213},"line",1,[215],{"type":48,"tag":210,"props":216,"children":218},{"style":217},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic",[219],{"type":53,"value":220},"# Verify cluster plan type\n",{"type":48,"tag":210,"props":222,"children":223},{"class":212,"line":29},[224,230,236,241,247,252,258,263,268],{"type":48,"tag":210,"props":225,"children":227},{"style":226},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[228],{"type":53,"value":229},"ccloud",{"type":48,"tag":210,"props":231,"children":233},{"style":232},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[234],{"type":53,"value":235}," cluster",{"type":48,"tag":210,"props":237,"children":238},{"style":232},[239],{"type":53,"value":240}," info",{"type":48,"tag":210,"props":242,"children":244},{"style":243},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[245],{"type":53,"value":246}," \u003C",{"type":48,"tag":210,"props":248,"children":249},{"style":232},[250],{"type":53,"value":251},"cluster-nam",{"type":48,"tag":210,"props":253,"children":255},{"style":254},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[256],{"type":53,"value":257},"e",{"type":48,"tag":210,"props":259,"children":260},{"style":243},[261],{"type":53,"value":262},">",{"type":48,"tag":210,"props":264,"children":265},{"style":232},[266],{"type":53,"value":267}," -o",{"type":48,"tag":210,"props":269,"children":270},{"style":232},[271],{"type":53,"value":272}," json\n",{"type":48,"tag":210,"props":274,"children":275},{"class":212,"line":25},[276],{"type":48,"tag":210,"props":277,"children":278},{"style":217},[279],{"type":53,"value":280},"# Look for \"plan\": \"ADVANCED\" and Advanced Security Add-on status\n",{"type":48,"tag":62,"props":282,"children":284},{"id":283},"configuration-decisions",[285],{"type":53,"value":286},"Configuration Decisions",{"type":48,"tag":56,"props":288,"children":289},{},[290],{"type":53,"value":291},"Before proceeding, determine which cloud provider KMS the user will use. Ask which option applies to their environment, then follow only the corresponding subsection in Step 2.",{"type":48,"tag":56,"props":293,"children":294},{},[295],{"type":48,"tag":111,"props":296,"children":297},{},[298],{"type":53,"value":299},"Decision 1 — Cloud provider KMS:",{"type":48,"tag":69,"props":301,"children":302},{},[303,313,323],{"type":48,"tag":73,"props":304,"children":305},{},[306,311],{"type":48,"tag":111,"props":307,"children":308},{},[309],{"type":53,"value":310},"AWS KMS:",{"type":53,"value":312}," Use when the CockroachDB Cloud cluster runs on AWS. Requires a symmetric encryption key in the same region as the cluster.",{"type":48,"tag":73,"props":314,"children":315},{},[316,321],{"type":48,"tag":111,"props":317,"children":318},{},[319],{"type":53,"value":320},"GCP Cloud KMS:",{"type":53,"value":322}," Use when the cluster runs on GCP. Requires a key ring and key in the same region.",{"type":48,"tag":73,"props":324,"children":325},{},[326,331],{"type":48,"tag":111,"props":327,"children":328},{},[329],{"type":53,"value":330},"Azure Key Vault:",{"type":53,"value":332}," Use when the cluster runs on Azure. Requires a Key Vault with a key in the same region.",{"type":48,"tag":62,"props":334,"children":336},{"id":335},"steps",[337],{"type":53,"value":338},"Steps",{"type":48,"tag":340,"props":341,"children":343},"h3",{"id":342},"_1-verify-plan-and-add-on-eligibility",[344],{"type":53,"value":345},"1. Verify Plan and Add-on Eligibility",{"type":48,"tag":198,"props":347,"children":349},{"className":200,"code":348,"language":202,"meta":203,"style":203},"ccloud cluster info \u003Ccluster-name> -o json\n",[350],{"type":48,"tag":206,"props":351,"children":352},{"__ignoreMap":203},[353],{"type":48,"tag":210,"props":354,"children":355},{"class":212,"line":213},[356,360,364,368,372,376,380,384,388],{"type":48,"tag":210,"props":357,"children":358},{"style":226},[359],{"type":53,"value":229},{"type":48,"tag":210,"props":361,"children":362},{"style":232},[363],{"type":53,"value":235},{"type":48,"tag":210,"props":365,"children":366},{"style":232},[367],{"type":53,"value":240},{"type":48,"tag":210,"props":369,"children":370},{"style":243},[371],{"type":53,"value":246},{"type":48,"tag":210,"props":373,"children":374},{"style":232},[375],{"type":53,"value":251},{"type":48,"tag":210,"props":377,"children":378},{"style":254},[379],{"type":53,"value":257},{"type":48,"tag":210,"props":381,"children":382},{"style":243},[383],{"type":53,"value":262},{"type":48,"tag":210,"props":385,"children":386},{"style":232},[387],{"type":53,"value":267},{"type":48,"tag":210,"props":389,"children":390},{"style":232},[391],{"type":53,"value":272},{"type":48,"tag":56,"props":393,"children":394},{},[395,400],{"type":48,"tag":111,"props":396,"children":397},{},[398],{"type":53,"value":399},"If Standard plan:",{"type":53,"value":401}," CMEK is not available. The upgrade path is:",{"type":48,"tag":403,"props":404,"children":405},"ol",{},[406,411],{"type":48,"tag":73,"props":407,"children":408},{},[409],{"type":53,"value":410},"Upgrade to Advanced plan (contact CockroachDB sales or upgrade in Cloud Console)",{"type":48,"tag":73,"props":412,"children":413},{},[414],{"type":53,"value":415},"Enable the Advanced Security Add-on",{"type":48,"tag":56,"props":417,"children":418},{},[419,424],{"type":48,"tag":111,"props":420,"children":421},{},[422],{"type":53,"value":423},"If Advanced plan without Advanced Security Add-on:",{"type":53,"value":425}," Enable the add-on in the Cloud Console before proceeding.",{"type":48,"tag":340,"props":427,"children":429},{"id":428},"_2-create-a-kms-key-in-your-cloud-provider",[430],{"type":53,"value":431},"2. Create a KMS Key in Your Cloud Provider",{"type":48,"tag":56,"props":433,"children":434},{},[435],{"type":53,"value":436},"Follow only the subsection for the user's cloud provider (selected in Configuration Decisions above).",{"type":48,"tag":438,"props":439,"children":441},"h4",{"id":440},"aws-kms",[442],{"type":53,"value":443},"AWS KMS",{"type":48,"tag":198,"props":445,"children":447},{"className":200,"code":446,"language":202,"meta":203,"style":203},"# Create a symmetric encryption key in the same region as the cluster\naws kms create-key \\\n  --description \"CockroachDB CMEK - \u003Ccluster-name>\" \\\n  --key-usage ENCRYPT_DECRYPT \\\n  --origin AWS_KMS \\\n  --region \u003Caws-region>\n",[448],{"type":48,"tag":206,"props":449,"children":450},{"__ignoreMap":203},[451,459,482,509,527,545],{"type":48,"tag":210,"props":452,"children":453},{"class":212,"line":213},[454],{"type":48,"tag":210,"props":455,"children":456},{"style":217},[457],{"type":53,"value":458},"# Create a symmetric encryption key in the same region as the cluster\n",{"type":48,"tag":210,"props":460,"children":461},{"class":212,"line":29},[462,467,472,477],{"type":48,"tag":210,"props":463,"children":464},{"style":226},[465],{"type":53,"value":466},"aws",{"type":48,"tag":210,"props":468,"children":469},{"style":232},[470],{"type":53,"value":471}," kms",{"type":48,"tag":210,"props":473,"children":474},{"style":232},[475],{"type":53,"value":476}," create-key",{"type":48,"tag":210,"props":478,"children":479},{"style":254},[480],{"type":53,"value":481}," \\\n",{"type":48,"tag":210,"props":483,"children":484},{"class":212,"line":25},[485,490,495,500,505],{"type":48,"tag":210,"props":486,"children":487},{"style":232},[488],{"type":53,"value":489},"  --description",{"type":48,"tag":210,"props":491,"children":492},{"style":243},[493],{"type":53,"value":494}," \"",{"type":48,"tag":210,"props":496,"children":497},{"style":232},[498],{"type":53,"value":499},"CockroachDB CMEK - \u003Ccluster-name>",{"type":48,"tag":210,"props":501,"children":502},{"style":243},[503],{"type":53,"value":504},"\"",{"type":48,"tag":210,"props":506,"children":507},{"style":254},[508],{"type":53,"value":481},{"type":48,"tag":210,"props":510,"children":512},{"class":212,"line":511},4,[513,518,523],{"type":48,"tag":210,"props":514,"children":515},{"style":232},[516],{"type":53,"value":517},"  --key-usage",{"type":48,"tag":210,"props":519,"children":520},{"style":232},[521],{"type":53,"value":522}," ENCRYPT_DECRYPT",{"type":48,"tag":210,"props":524,"children":525},{"style":254},[526],{"type":53,"value":481},{"type":48,"tag":210,"props":528,"children":530},{"class":212,"line":529},5,[531,536,541],{"type":48,"tag":210,"props":532,"children":533},{"style":232},[534],{"type":53,"value":535},"  --origin",{"type":48,"tag":210,"props":537,"children":538},{"style":232},[539],{"type":53,"value":540}," AWS_KMS",{"type":48,"tag":210,"props":542,"children":543},{"style":254},[544],{"type":53,"value":481},{"type":48,"tag":210,"props":546,"children":548},{"class":212,"line":547},6,[549,554,558,563,568],{"type":48,"tag":210,"props":550,"children":551},{"style":232},[552],{"type":53,"value":553},"  --region",{"type":48,"tag":210,"props":555,"children":556},{"style":243},[557],{"type":53,"value":246},{"type":48,"tag":210,"props":559,"children":560},{"style":232},[561],{"type":53,"value":562},"aws-regio",{"type":48,"tag":210,"props":564,"children":565},{"style":254},[566],{"type":53,"value":567},"n",{"type":48,"tag":210,"props":569,"children":570},{"style":243},[571],{"type":53,"value":572},">\n",{"type":48,"tag":56,"props":574,"children":575},{},[576],{"type":53,"value":577},"Grant the CockroachDB Cloud service account access to the key:",{"type":48,"tag":198,"props":579,"children":583},{"className":580,"code":581,"language":582,"meta":203,"style":203},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"Effect\": \"Allow\",\n  \"Principal\": {\n    \"AWS\": \"\u003Ccockroachdb-cloud-service-account-arn>\"\n  },\n  \"Action\": [\n    \"kms:Encrypt\",\n    \"kms:Decrypt\",\n    \"kms:GenerateDataKey\",\n    \"kms:DescribeKey\"\n  ],\n  \"Resource\": \"*\"\n}\n","json",[584],{"type":48,"tag":206,"props":585,"children":586},{"__ignoreMap":203},[587,595,636,661,696,704,729,750,771,792,809,818,852],{"type":48,"tag":210,"props":588,"children":589},{"class":212,"line":213},[590],{"type":48,"tag":210,"props":591,"children":592},{"style":243},[593],{"type":53,"value":594},"{\n",{"type":48,"tag":210,"props":596,"children":597},{"class":212,"line":29},[598,603,609,613,618,622,627,631],{"type":48,"tag":210,"props":599,"children":600},{"style":243},[601],{"type":53,"value":602},"  \"",{"type":48,"tag":210,"props":604,"children":606},{"style":605},"--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA",[607],{"type":53,"value":608},"Effect",{"type":48,"tag":210,"props":610,"children":611},{"style":243},[612],{"type":53,"value":504},{"type":48,"tag":210,"props":614,"children":615},{"style":243},[616],{"type":53,"value":617},":",{"type":48,"tag":210,"props":619,"children":620},{"style":243},[621],{"type":53,"value":494},{"type":48,"tag":210,"props":623,"children":624},{"style":232},[625],{"type":53,"value":626},"Allow",{"type":48,"tag":210,"props":628,"children":629},{"style":243},[630],{"type":53,"value":504},{"type":48,"tag":210,"props":632,"children":633},{"style":243},[634],{"type":53,"value":635},",\n",{"type":48,"tag":210,"props":637,"children":638},{"class":212,"line":25},[639,643,648,652,656],{"type":48,"tag":210,"props":640,"children":641},{"style":243},[642],{"type":53,"value":602},{"type":48,"tag":210,"props":644,"children":645},{"style":605},[646],{"type":53,"value":647},"Principal",{"type":48,"tag":210,"props":649,"children":650},{"style":243},[651],{"type":53,"value":504},{"type":48,"tag":210,"props":653,"children":654},{"style":243},[655],{"type":53,"value":617},{"type":48,"tag":210,"props":657,"children":658},{"style":243},[659],{"type":53,"value":660}," {\n",{"type":48,"tag":210,"props":662,"children":663},{"class":212,"line":511},[664,669,674,678,682,686,691],{"type":48,"tag":210,"props":665,"children":666},{"style":243},[667],{"type":53,"value":668},"    \"",{"type":48,"tag":210,"props":670,"children":671},{"style":226},[672],{"type":53,"value":673},"AWS",{"type":48,"tag":210,"props":675,"children":676},{"style":243},[677],{"type":53,"value":504},{"type":48,"tag":210,"props":679,"children":680},{"style":243},[681],{"type":53,"value":617},{"type":48,"tag":210,"props":683,"children":684},{"style":243},[685],{"type":53,"value":494},{"type":48,"tag":210,"props":687,"children":688},{"style":232},[689],{"type":53,"value":690},"\u003Ccockroachdb-cloud-service-account-arn>",{"type":48,"tag":210,"props":692,"children":693},{"style":243},[694],{"type":53,"value":695},"\"\n",{"type":48,"tag":210,"props":697,"children":698},{"class":212,"line":529},[699],{"type":48,"tag":210,"props":700,"children":701},{"style":243},[702],{"type":53,"value":703},"  },\n",{"type":48,"tag":210,"props":705,"children":706},{"class":212,"line":547},[707,711,716,720,724],{"type":48,"tag":210,"props":708,"children":709},{"style":243},[710],{"type":53,"value":602},{"type":48,"tag":210,"props":712,"children":713},{"style":605},[714],{"type":53,"value":715},"Action",{"type":48,"tag":210,"props":717,"children":718},{"style":243},[719],{"type":53,"value":504},{"type":48,"tag":210,"props":721,"children":722},{"style":243},[723],{"type":53,"value":617},{"type":48,"tag":210,"props":725,"children":726},{"style":243},[727],{"type":53,"value":728}," [\n",{"type":48,"tag":210,"props":730,"children":732},{"class":212,"line":731},7,[733,737,742,746],{"type":48,"tag":210,"props":734,"children":735},{"style":243},[736],{"type":53,"value":668},{"type":48,"tag":210,"props":738,"children":739},{"style":232},[740],{"type":53,"value":741},"kms:Encrypt",{"type":48,"tag":210,"props":743,"children":744},{"style":243},[745],{"type":53,"value":504},{"type":48,"tag":210,"props":747,"children":748},{"style":243},[749],{"type":53,"value":635},{"type":48,"tag":210,"props":751,"children":753},{"class":212,"line":752},8,[754,758,763,767],{"type":48,"tag":210,"props":755,"children":756},{"style":243},[757],{"type":53,"value":668},{"type":48,"tag":210,"props":759,"children":760},{"style":232},[761],{"type":53,"value":762},"kms:Decrypt",{"type":48,"tag":210,"props":764,"children":765},{"style":243},[766],{"type":53,"value":504},{"type":48,"tag":210,"props":768,"children":769},{"style":243},[770],{"type":53,"value":635},{"type":48,"tag":210,"props":772,"children":774},{"class":212,"line":773},9,[775,779,784,788],{"type":48,"tag":210,"props":776,"children":777},{"style":243},[778],{"type":53,"value":668},{"type":48,"tag":210,"props":780,"children":781},{"style":232},[782],{"type":53,"value":783},"kms:GenerateDataKey",{"type":48,"tag":210,"props":785,"children":786},{"style":243},[787],{"type":53,"value":504},{"type":48,"tag":210,"props":789,"children":790},{"style":243},[791],{"type":53,"value":635},{"type":48,"tag":210,"props":793,"children":795},{"class":212,"line":794},10,[796,800,805],{"type":48,"tag":210,"props":797,"children":798},{"style":243},[799],{"type":53,"value":668},{"type":48,"tag":210,"props":801,"children":802},{"style":232},[803],{"type":53,"value":804},"kms:DescribeKey",{"type":48,"tag":210,"props":806,"children":807},{"style":243},[808],{"type":53,"value":695},{"type":48,"tag":210,"props":810,"children":812},{"class":212,"line":811},11,[813],{"type":48,"tag":210,"props":814,"children":815},{"style":243},[816],{"type":53,"value":817},"  ],\n",{"type":48,"tag":210,"props":819,"children":821},{"class":212,"line":820},12,[822,826,831,835,839,843,848],{"type":48,"tag":210,"props":823,"children":824},{"style":243},[825],{"type":53,"value":602},{"type":48,"tag":210,"props":827,"children":828},{"style":605},[829],{"type":53,"value":830},"Resource",{"type":48,"tag":210,"props":832,"children":833},{"style":243},[834],{"type":53,"value":504},{"type":48,"tag":210,"props":836,"children":837},{"style":243},[838],{"type":53,"value":617},{"type":48,"tag":210,"props":840,"children":841},{"style":243},[842],{"type":53,"value":494},{"type":48,"tag":210,"props":844,"children":845},{"style":232},[846],{"type":53,"value":847},"*",{"type":48,"tag":210,"props":849,"children":850},{"style":243},[851],{"type":53,"value":695},{"type":48,"tag":210,"props":853,"children":855},{"class":212,"line":854},13,[856],{"type":48,"tag":210,"props":857,"children":858},{"style":243},[859],{"type":53,"value":860},"}\n",{"type":48,"tag":438,"props":862,"children":864},{"id":863},"gcp-cloud-kms",[865],{"type":53,"value":866},"GCP Cloud KMS",{"type":48,"tag":198,"props":868,"children":870},{"className":200,"code":869,"language":202,"meta":203,"style":203},"# Create a key ring\ngcloud kms keyrings create cockroachdb-cmek \\\n  --location \u003Cgcp-region>\n\n# Create a symmetric encryption key\ngcloud kms keys create cmek-key \\\n  --keyring cockroachdb-cmek \\\n  --location \u003Cgcp-region> \\\n  --purpose encryption\n",[871],{"type":48,"tag":206,"props":872,"children":873},{"__ignoreMap":203},[874,882,913,938,947,955,984,1000,1027],{"type":48,"tag":210,"props":875,"children":876},{"class":212,"line":213},[877],{"type":48,"tag":210,"props":878,"children":879},{"style":217},[880],{"type":53,"value":881},"# Create a key ring\n",{"type":48,"tag":210,"props":883,"children":884},{"class":212,"line":29},[885,890,894,899,904,909],{"type":48,"tag":210,"props":886,"children":887},{"style":226},[888],{"type":53,"value":889},"gcloud",{"type":48,"tag":210,"props":891,"children":892},{"style":232},[893],{"type":53,"value":471},{"type":48,"tag":210,"props":895,"children":896},{"style":232},[897],{"type":53,"value":898}," keyrings",{"type":48,"tag":210,"props":900,"children":901},{"style":232},[902],{"type":53,"value":903}," create",{"type":48,"tag":210,"props":905,"children":906},{"style":232},[907],{"type":53,"value":908}," cockroachdb-cmek",{"type":48,"tag":210,"props":910,"children":911},{"style":254},[912],{"type":53,"value":481},{"type":48,"tag":210,"props":914,"children":915},{"class":212,"line":25},[916,921,925,930,934],{"type":48,"tag":210,"props":917,"children":918},{"style":232},[919],{"type":53,"value":920},"  --location",{"type":48,"tag":210,"props":922,"children":923},{"style":243},[924],{"type":53,"value":246},{"type":48,"tag":210,"props":926,"children":927},{"style":232},[928],{"type":53,"value":929},"gcp-regio",{"type":48,"tag":210,"props":931,"children":932},{"style":254},[933],{"type":53,"value":567},{"type":48,"tag":210,"props":935,"children":936},{"style":243},[937],{"type":53,"value":572},{"type":48,"tag":210,"props":939,"children":940},{"class":212,"line":511},[941],{"type":48,"tag":210,"props":942,"children":944},{"emptyLinePlaceholder":943},true,[945],{"type":53,"value":946},"\n",{"type":48,"tag":210,"props":948,"children":949},{"class":212,"line":529},[950],{"type":48,"tag":210,"props":951,"children":952},{"style":217},[953],{"type":53,"value":954},"# Create a symmetric encryption key\n",{"type":48,"tag":210,"props":956,"children":957},{"class":212,"line":547},[958,962,966,971,975,980],{"type":48,"tag":210,"props":959,"children":960},{"style":226},[961],{"type":53,"value":889},{"type":48,"tag":210,"props":963,"children":964},{"style":232},[965],{"type":53,"value":471},{"type":48,"tag":210,"props":967,"children":968},{"style":232},[969],{"type":53,"value":970}," keys",{"type":48,"tag":210,"props":972,"children":973},{"style":232},[974],{"type":53,"value":903},{"type":48,"tag":210,"props":976,"children":977},{"style":232},[978],{"type":53,"value":979}," cmek-key",{"type":48,"tag":210,"props":981,"children":982},{"style":254},[983],{"type":53,"value":481},{"type":48,"tag":210,"props":985,"children":986},{"class":212,"line":731},[987,992,996],{"type":48,"tag":210,"props":988,"children":989},{"style":232},[990],{"type":53,"value":991},"  --keyring",{"type":48,"tag":210,"props":993,"children":994},{"style":232},[995],{"type":53,"value":908},{"type":48,"tag":210,"props":997,"children":998},{"style":254},[999],{"type":53,"value":481},{"type":48,"tag":210,"props":1001,"children":1002},{"class":212,"line":752},[1003,1007,1011,1015,1019,1023],{"type":48,"tag":210,"props":1004,"children":1005},{"style":232},[1006],{"type":53,"value":920},{"type":48,"tag":210,"props":1008,"children":1009},{"style":243},[1010],{"type":53,"value":246},{"type":48,"tag":210,"props":1012,"children":1013},{"style":232},[1014],{"type":53,"value":929},{"type":48,"tag":210,"props":1016,"children":1017},{"style":254},[1018],{"type":53,"value":567},{"type":48,"tag":210,"props":1020,"children":1021},{"style":243},[1022],{"type":53,"value":262},{"type":48,"tag":210,"props":1024,"children":1025},{"style":254},[1026],{"type":53,"value":481},{"type":48,"tag":210,"props":1028,"children":1029},{"class":212,"line":773},[1030,1035],{"type":48,"tag":210,"props":1031,"children":1032},{"style":232},[1033],{"type":53,"value":1034},"  --purpose",{"type":48,"tag":210,"props":1036,"children":1037},{"style":232},[1038],{"type":53,"value":1039}," encryption\n",{"type":48,"tag":56,"props":1041,"children":1042},{},[1043],{"type":53,"value":1044},"Grant the CockroachDB Cloud service account access:",{"type":48,"tag":198,"props":1046,"children":1048},{"className":200,"code":1047,"language":202,"meta":203,"style":203},"gcloud kms keys add-iam-policy-binding cmek-key \\\n  --keyring cockroachdb-cmek \\\n  --location \u003Cgcp-region> \\\n  --member \"serviceAccount:\u003Ccockroachdb-cloud-service-account>\" \\\n  --role \"roles\u002Fcloudkms.cryptoKeyEncrypterDecrypter\"\n",[1049],{"type":48,"tag":206,"props":1050,"children":1051},{"__ignoreMap":203},[1052,1080,1095,1122,1147],{"type":48,"tag":210,"props":1053,"children":1054},{"class":212,"line":213},[1055,1059,1063,1067,1072,1076],{"type":48,"tag":210,"props":1056,"children":1057},{"style":226},[1058],{"type":53,"value":889},{"type":48,"tag":210,"props":1060,"children":1061},{"style":232},[1062],{"type":53,"value":471},{"type":48,"tag":210,"props":1064,"children":1065},{"style":232},[1066],{"type":53,"value":970},{"type":48,"tag":210,"props":1068,"children":1069},{"style":232},[1070],{"type":53,"value":1071}," add-iam-policy-binding",{"type":48,"tag":210,"props":1073,"children":1074},{"style":232},[1075],{"type":53,"value":979},{"type":48,"tag":210,"props":1077,"children":1078},{"style":254},[1079],{"type":53,"value":481},{"type":48,"tag":210,"props":1081,"children":1082},{"class":212,"line":29},[1083,1087,1091],{"type":48,"tag":210,"props":1084,"children":1085},{"style":232},[1086],{"type":53,"value":991},{"type":48,"tag":210,"props":1088,"children":1089},{"style":232},[1090],{"type":53,"value":908},{"type":48,"tag":210,"props":1092,"children":1093},{"style":254},[1094],{"type":53,"value":481},{"type":48,"tag":210,"props":1096,"children":1097},{"class":212,"line":25},[1098,1102,1106,1110,1114,1118],{"type":48,"tag":210,"props":1099,"children":1100},{"style":232},[1101],{"type":53,"value":920},{"type":48,"tag":210,"props":1103,"children":1104},{"style":243},[1105],{"type":53,"value":246},{"type":48,"tag":210,"props":1107,"children":1108},{"style":232},[1109],{"type":53,"value":929},{"type":48,"tag":210,"props":1111,"children":1112},{"style":254},[1113],{"type":53,"value":567},{"type":48,"tag":210,"props":1115,"children":1116},{"style":243},[1117],{"type":53,"value":262},{"type":48,"tag":210,"props":1119,"children":1120},{"style":254},[1121],{"type":53,"value":481},{"type":48,"tag":210,"props":1123,"children":1124},{"class":212,"line":511},[1125,1130,1134,1139,1143],{"type":48,"tag":210,"props":1126,"children":1127},{"style":232},[1128],{"type":53,"value":1129},"  --member",{"type":48,"tag":210,"props":1131,"children":1132},{"style":243},[1133],{"type":53,"value":494},{"type":48,"tag":210,"props":1135,"children":1136},{"style":232},[1137],{"type":53,"value":1138},"serviceAccount:\u003Ccockroachdb-cloud-service-account>",{"type":48,"tag":210,"props":1140,"children":1141},{"style":243},[1142],{"type":53,"value":504},{"type":48,"tag":210,"props":1144,"children":1145},{"style":254},[1146],{"type":53,"value":481},{"type":48,"tag":210,"props":1148,"children":1149},{"class":212,"line":529},[1150,1155,1159,1164],{"type":48,"tag":210,"props":1151,"children":1152},{"style":232},[1153],{"type":53,"value":1154},"  --role",{"type":48,"tag":210,"props":1156,"children":1157},{"style":243},[1158],{"type":53,"value":494},{"type":48,"tag":210,"props":1160,"children":1161},{"style":232},[1162],{"type":53,"value":1163},"roles\u002Fcloudkms.cryptoKeyEncrypterDecrypter",{"type":48,"tag":210,"props":1165,"children":1166},{"style":243},[1167],{"type":53,"value":695},{"type":48,"tag":438,"props":1169,"children":1171},{"id":1170},"azure-key-vault",[1172],{"type":53,"value":1173},"Azure Key Vault",{"type":48,"tag":198,"props":1175,"children":1177},{"className":200,"code":1176,"language":202,"meta":203,"style":203},"# Create a key in the existing Key Vault\naz keyvault key create \\\n  --vault-name \u003Cvault-name> \\\n  --name cockroachdb-cmek \\\n  --kty RSA \\\n  --size 2048\n",[1178],{"type":48,"tag":206,"props":1179,"children":1180},{"__ignoreMap":203},[1181,1189,1215,1244,1260,1277],{"type":48,"tag":210,"props":1182,"children":1183},{"class":212,"line":213},[1184],{"type":48,"tag":210,"props":1185,"children":1186},{"style":217},[1187],{"type":53,"value":1188},"# Create a key in the existing Key Vault\n",{"type":48,"tag":210,"props":1190,"children":1191},{"class":212,"line":29},[1192,1197,1202,1207,1211],{"type":48,"tag":210,"props":1193,"children":1194},{"style":226},[1195],{"type":53,"value":1196},"az",{"type":48,"tag":210,"props":1198,"children":1199},{"style":232},[1200],{"type":53,"value":1201}," keyvault",{"type":48,"tag":210,"props":1203,"children":1204},{"style":232},[1205],{"type":53,"value":1206}," key",{"type":48,"tag":210,"props":1208,"children":1209},{"style":232},[1210],{"type":53,"value":903},{"type":48,"tag":210,"props":1212,"children":1213},{"style":254},[1214],{"type":53,"value":481},{"type":48,"tag":210,"props":1216,"children":1217},{"class":212,"line":25},[1218,1223,1227,1232,1236,1240],{"type":48,"tag":210,"props":1219,"children":1220},{"style":232},[1221],{"type":53,"value":1222},"  --vault-name",{"type":48,"tag":210,"props":1224,"children":1225},{"style":243},[1226],{"type":53,"value":246},{"type":48,"tag":210,"props":1228,"children":1229},{"style":232},[1230],{"type":53,"value":1231},"vault-nam",{"type":48,"tag":210,"props":1233,"children":1234},{"style":254},[1235],{"type":53,"value":257},{"type":48,"tag":210,"props":1237,"children":1238},{"style":243},[1239],{"type":53,"value":262},{"type":48,"tag":210,"props":1241,"children":1242},{"style":254},[1243],{"type":53,"value":481},{"type":48,"tag":210,"props":1245,"children":1246},{"class":212,"line":511},[1247,1252,1256],{"type":48,"tag":210,"props":1248,"children":1249},{"style":232},[1250],{"type":53,"value":1251},"  --name",{"type":48,"tag":210,"props":1253,"children":1254},{"style":232},[1255],{"type":53,"value":908},{"type":48,"tag":210,"props":1257,"children":1258},{"style":254},[1259],{"type":53,"value":481},{"type":48,"tag":210,"props":1261,"children":1262},{"class":212,"line":529},[1263,1268,1273],{"type":48,"tag":210,"props":1264,"children":1265},{"style":232},[1266],{"type":53,"value":1267},"  --kty",{"type":48,"tag":210,"props":1269,"children":1270},{"style":232},[1271],{"type":53,"value":1272}," RSA",{"type":48,"tag":210,"props":1274,"children":1275},{"style":254},[1276],{"type":53,"value":481},{"type":48,"tag":210,"props":1278,"children":1279},{"class":212,"line":547},[1280,1285],{"type":48,"tag":210,"props":1281,"children":1282},{"style":232},[1283],{"type":53,"value":1284},"  --size",{"type":48,"tag":210,"props":1286,"children":1288},{"style":1287},"--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C",[1289],{"type":53,"value":1290}," 2048\n",{"type":48,"tag":56,"props":1292,"children":1293},{},[1294],{"type":53,"value":1295},"Grant the CockroachDB Cloud managed identity access via Key Vault access policies.",{"type":48,"tag":340,"props":1297,"children":1299},{"id":1298},"_3-configure-cmek-on-the-cluster",[1300],{"type":53,"value":1301},"3. Configure CMEK on the Cluster",{"type":48,"tag":198,"props":1303,"children":1305},{"className":200,"code":1304,"language":202,"meta":203,"style":203},"# Enable CMEK with the KMS key URI\nccloud cluster update \u003Ccluster-id> \\\n  --cmek-key-spec '\u003Ckey-spec-json>'\n",[1306],{"type":48,"tag":206,"props":1307,"children":1308},{"__ignoreMap":203},[1309,1317,1355],{"type":48,"tag":210,"props":1310,"children":1311},{"class":212,"line":213},[1312],{"type":48,"tag":210,"props":1313,"children":1314},{"style":217},[1315],{"type":53,"value":1316},"# Enable CMEK with the KMS key URI\n",{"type":48,"tag":210,"props":1318,"children":1319},{"class":212,"line":29},[1320,1324,1328,1333,1337,1342,1347,1351],{"type":48,"tag":210,"props":1321,"children":1322},{"style":226},[1323],{"type":53,"value":229},{"type":48,"tag":210,"props":1325,"children":1326},{"style":232},[1327],{"type":53,"value":235},{"type":48,"tag":210,"props":1329,"children":1330},{"style":232},[1331],{"type":53,"value":1332}," update",{"type":48,"tag":210,"props":1334,"children":1335},{"style":243},[1336],{"type":53,"value":246},{"type":48,"tag":210,"props":1338,"children":1339},{"style":232},[1340],{"type":53,"value":1341},"cluster-i",{"type":48,"tag":210,"props":1343,"children":1344},{"style":254},[1345],{"type":53,"value":1346},"d",{"type":48,"tag":210,"props":1348,"children":1349},{"style":243},[1350],{"type":53,"value":262},{"type":48,"tag":210,"props":1352,"children":1353},{"style":254},[1354],{"type":53,"value":481},{"type":48,"tag":210,"props":1356,"children":1357},{"class":212,"line":25},[1358,1363,1368,1373],{"type":48,"tag":210,"props":1359,"children":1360},{"style":232},[1361],{"type":53,"value":1362},"  --cmek-key-spec",{"type":48,"tag":210,"props":1364,"children":1365},{"style":243},[1366],{"type":53,"value":1367}," '",{"type":48,"tag":210,"props":1369,"children":1370},{"style":232},[1371],{"type":53,"value":1372},"\u003Ckey-spec-json>",{"type":48,"tag":210,"props":1374,"children":1375},{"style":243},[1376],{"type":53,"value":1377},"'\n",{"type":48,"tag":56,"props":1379,"children":1380},{},[1381],{"type":53,"value":1382},"The key spec format varies by cloud provider. Refer to the CockroachDB Cloud documentation for the exact JSON structure for your provider.",{"type":48,"tag":56,"props":1384,"children":1385},{},[1386,1388,1395],{"type":53,"value":1387},"See ",{"type":48,"tag":1389,"props":1390,"children":1392},"a",{"href":1391},"references\u002Fccloud-commands.md",[1393],{"type":53,"value":1394},"ccloud commands reference",{"type":53,"value":1396}," for detailed command syntax.",{"type":48,"tag":340,"props":1398,"children":1400},{"id":1399},"_4-verify-cmek-configuration",[1401],{"type":53,"value":1402},"4. Verify CMEK Configuration",{"type":48,"tag":198,"props":1404,"children":1406},{"className":200,"code":1405,"language":202,"meta":203,"style":203},"# Check CMEK status\nccloud cluster info \u003Ccluster-name> -o json\n# Verify cmek_config shows enabled status and correct key URI\n",[1407],{"type":48,"tag":206,"props":1408,"children":1409},{"__ignoreMap":203},[1410,1418,1457],{"type":48,"tag":210,"props":1411,"children":1412},{"class":212,"line":213},[1413],{"type":48,"tag":210,"props":1414,"children":1415},{"style":217},[1416],{"type":53,"value":1417},"# Check CMEK status\n",{"type":48,"tag":210,"props":1419,"children":1420},{"class":212,"line":29},[1421,1425,1429,1433,1437,1441,1445,1449,1453],{"type":48,"tag":210,"props":1422,"children":1423},{"style":226},[1424],{"type":53,"value":229},{"type":48,"tag":210,"props":1426,"children":1427},{"style":232},[1428],{"type":53,"value":235},{"type":48,"tag":210,"props":1430,"children":1431},{"style":232},[1432],{"type":53,"value":240},{"type":48,"tag":210,"props":1434,"children":1435},{"style":243},[1436],{"type":53,"value":246},{"type":48,"tag":210,"props":1438,"children":1439},{"style":232},[1440],{"type":53,"value":251},{"type":48,"tag":210,"props":1442,"children":1443},{"style":254},[1444],{"type":53,"value":257},{"type":48,"tag":210,"props":1446,"children":1447},{"style":243},[1448],{"type":53,"value":262},{"type":48,"tag":210,"props":1450,"children":1451},{"style":232},[1452],{"type":53,"value":267},{"type":48,"tag":210,"props":1454,"children":1455},{"style":232},[1456],{"type":53,"value":272},{"type":48,"tag":210,"props":1458,"children":1459},{"class":212,"line":25},[1460],{"type":48,"tag":210,"props":1461,"children":1462},{"style":217},[1463],{"type":53,"value":1464},"# Verify cmek_config shows enabled status and correct key URI\n",{"type":48,"tag":56,"props":1466,"children":1467},{},[1468,1470,1475,1477,1482,1483,1487],{"type":53,"value":1469},"CMEK status is not exposed as a SQL cluster setting; the Cloud Console\n",{"type":48,"tag":111,"props":1471,"children":1472},{},[1473],{"type":53,"value":1474},"Cluster",{"type":53,"value":1476}," → ",{"type":48,"tag":111,"props":1478,"children":1479},{},[1480],{"type":53,"value":1481},"Settings",{"type":53,"value":1476},{"type":48,"tag":111,"props":1484,"children":1485},{},[1486],{"type":53,"value":20},{"type":53,"value":1488}," page is authoritative for\nmanaged clusters.",{"type":48,"tag":340,"props":1490,"children":1492},{"id":1491},"_5-test-key-accessibility",[1493],{"type":53,"value":1494},"5. Test Key Accessibility",{"type":48,"tag":56,"props":1496,"children":1497},{},[1498],{"type":53,"value":1499},"After enabling CMEK, verify the cluster is operating normally:",{"type":48,"tag":198,"props":1501,"children":1505},{"className":1502,"code":1503,"language":1504,"meta":203,"style":203},"language-sql shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","-- Create and query a test table to verify read\u002Fwrite works\nCREATE TABLE cmek_test (id INT PRIMARY KEY, data STRING);\nINSERT INTO cmek_test VALUES (1, 'encryption test');\nSELECT * FROM cmek_test;\nDROP TABLE cmek_test;\n","sql",[1506],{"type":48,"tag":206,"props":1507,"children":1508},{"__ignoreMap":203},[1509,1517,1525,1533,1541],{"type":48,"tag":210,"props":1510,"children":1511},{"class":212,"line":213},[1512],{"type":48,"tag":210,"props":1513,"children":1514},{},[1515],{"type":53,"value":1516},"-- Create and query a test table to verify read\u002Fwrite works\n",{"type":48,"tag":210,"props":1518,"children":1519},{"class":212,"line":29},[1520],{"type":48,"tag":210,"props":1521,"children":1522},{},[1523],{"type":53,"value":1524},"CREATE TABLE cmek_test (id INT PRIMARY KEY, data STRING);\n",{"type":48,"tag":210,"props":1526,"children":1527},{"class":212,"line":25},[1528],{"type":48,"tag":210,"props":1529,"children":1530},{},[1531],{"type":53,"value":1532},"INSERT INTO cmek_test VALUES (1, 'encryption test');\n",{"type":48,"tag":210,"props":1534,"children":1535},{"class":212,"line":511},[1536],{"type":48,"tag":210,"props":1537,"children":1538},{},[1539],{"type":53,"value":1540},"SELECT * FROM cmek_test;\n",{"type":48,"tag":210,"props":1542,"children":1543},{"class":212,"line":529},[1544],{"type":48,"tag":210,"props":1545,"children":1546},{},[1547],{"type":53,"value":1548},"DROP TABLE cmek_test;\n",{"type":48,"tag":62,"props":1550,"children":1552},{"id":1551},"safety-considerations",[1553],{"type":53,"value":1554},"Safety Considerations",{"type":48,"tag":56,"props":1556,"children":1557},{},[1558,1563],{"type":48,"tag":111,"props":1559,"children":1560},{},[1561],{"type":53,"value":1562},"CMEK misconfiguration can make data inaccessible.",{"type":53,"value":1564}," If the KMS key is deleted, disabled, or access is revoked, the cluster will not be able to read or write data.",{"type":48,"tag":56,"props":1566,"children":1567},{},[1568],{"type":48,"tag":111,"props":1569,"children":1570},{},[1571],{"type":53,"value":1572},"Before enabling CMEK:",{"type":48,"tag":69,"props":1574,"children":1575},{},[1576,1581,1586,1591],{"type":48,"tag":73,"props":1577,"children":1578},{},[1579],{"type":53,"value":1580},"Ensure the KMS key has appropriate deletion protection enabled",{"type":48,"tag":73,"props":1582,"children":1583},{},[1584],{"type":53,"value":1585},"Verify the IAM\u002Faccess policy grants are correct",{"type":48,"tag":73,"props":1587,"children":1588},{},[1589],{"type":53,"value":1590},"Confirm the KMS key region matches the cluster region",{"type":48,"tag":73,"props":1592,"children":1593},{},[1594],{"type":53,"value":1595},"Document the key URI and access policies",{"type":48,"tag":56,"props":1597,"children":1598},{},[1599],{"type":48,"tag":111,"props":1600,"children":1601},{},[1602],{"type":53,"value":1603},"Key management risks:",{"type":48,"tag":69,"props":1605,"children":1606},{},[1607,1617,1627],{"type":48,"tag":73,"props":1608,"children":1609},{},[1610,1615],{"type":48,"tag":111,"props":1611,"children":1612},{},[1613],{"type":53,"value":1614},"Key deletion:",{"type":53,"value":1616}," Deleting the KMS key makes all cluster data permanently inaccessible",{"type":48,"tag":73,"props":1618,"children":1619},{},[1620,1625],{"type":48,"tag":111,"props":1621,"children":1622},{},[1623],{"type":53,"value":1624},"Access revocation:",{"type":53,"value":1626}," Revoking CockroachDB's access to the key will cause the cluster to stop serving reads and writes",{"type":48,"tag":73,"props":1628,"children":1629},{},[1630,1635],{"type":48,"tag":111,"props":1631,"children":1632},{},[1633],{"type":53,"value":1634},"Key rotation:",{"type":53,"value":1636}," Plan key rotation per your organization's policy; CockroachDB supports automatic re-encryption with rotated keys",{"type":48,"tag":62,"props":1638,"children":1640},{"id":1639},"rollback",[1641],{"type":53,"value":1642},"Rollback",{"type":48,"tag":56,"props":1644,"children":1645},{},[1646],{"type":53,"value":1647},"CMEK cannot be disabled once enabled on a cluster. However:",{"type":48,"tag":403,"props":1649,"children":1650},{},[1651,1660,1670],{"type":48,"tag":73,"props":1652,"children":1653},{},[1654,1658],{"type":48,"tag":111,"props":1655,"children":1656},{},[1657],{"type":53,"value":1634},{"type":53,"value":1659}," You can rotate to a new key at any time",{"type":48,"tag":73,"props":1661,"children":1662},{},[1663,1668],{"type":48,"tag":111,"props":1664,"children":1665},{},[1666],{"type":53,"value":1667},"Access restoration:",{"type":53,"value":1669}," If access was accidentally revoked, restore the IAM\u002Faccess policy to resume operations",{"type":48,"tag":73,"props":1671,"children":1672},{},[1673,1678],{"type":48,"tag":111,"props":1674,"children":1675},{},[1676],{"type":53,"value":1677},"New cluster:",{"type":53,"value":1679}," If CMEK configuration is fundamentally wrong, create a new cluster and migrate data",{"type":48,"tag":56,"props":1681,"children":1682},{},[1683],{"type":48,"tag":111,"props":1684,"children":1685},{},[1686],{"type":53,"value":1687},"Emergency — Key access lost:",{"type":48,"tag":403,"props":1689,"children":1690},{},[1691,1696,1701],{"type":48,"tag":73,"props":1692,"children":1693},{},[1694],{"type":53,"value":1695},"Restore KMS key access immediately (IAM policy, key re-enable)",{"type":48,"tag":73,"props":1697,"children":1698},{},[1699],{"type":53,"value":1700},"The cluster will resume operations once key access is restored",{"type":48,"tag":73,"props":1702,"children":1703},{},[1704],{"type":53,"value":1705},"If the key was permanently deleted, data recovery is not possible",{"type":48,"tag":62,"props":1707,"children":1709},{"id":1708},"references",[1710],{"type":53,"value":1711},"References",{"type":48,"tag":56,"props":1713,"children":1714},{},[1715],{"type":48,"tag":111,"props":1716,"children":1717},{},[1718],{"type":53,"value":1719},"Related skills:",{"type":48,"tag":69,"props":1721,"children":1722},{},[1723],{"type":48,"tag":73,"props":1724,"children":1725},{},[1726,1732],{"type":48,"tag":1389,"props":1727,"children":1729},{"href":1728},"..\u002Fauditing-cloud-cluster-security\u002FSKILL.md",[1730],{"type":53,"value":1731},"auditing-cloud-cluster-security",{"type":53,"value":1733}," — Run a full security posture audit",{"type":48,"tag":56,"props":1735,"children":1736},{},[1737],{"type":48,"tag":111,"props":1738,"children":1739},{},[1740],{"type":53,"value":1741},"Official CockroachDB Documentation:",{"type":48,"tag":69,"props":1743,"children":1744},{},[1745,1756,1766],{"type":48,"tag":73,"props":1746,"children":1747},{},[1748],{"type":48,"tag":1389,"props":1749,"children":1753},{"href":1750,"rel":1751},"https:\u002F\u002Fwww.cockroachlabs.com\u002Fdocs\u002Fcockroachcloud\u002Fcmek.html",[1752],"nofollow",[1754],{"type":53,"value":1755},"CMEK Overview",{"type":48,"tag":73,"props":1757,"children":1758},{},[1759],{"type":48,"tag":1389,"props":1760,"children":1763},{"href":1761,"rel":1762},"https:\u002F\u002Fwww.cockroachlabs.com\u002Fdocs\u002Fcockroachcloud\u002Fmanaging-cmek.html",[1752],[1764],{"type":53,"value":1765},"Managing CMEK for Dedicated Clusters",{"type":48,"tag":73,"props":1767,"children":1768},{},[1769],{"type":48,"tag":1389,"props":1770,"children":1773},{"href":1771,"rel":1772},"https:\u002F\u002Fwww.cockroachlabs.com\u002Fdocs\u002Fcockroachcloud\u002Fsecurity-overview.html",[1752],[1774],{"type":53,"value":1775},"CockroachDB Cloud Security Overview",{"type":48,"tag":56,"props":1777,"children":1778},{},[1779],{"type":48,"tag":111,"props":1780,"children":1781},{},[1782],{"type":53,"value":1783},"Cloud Provider KMS Documentation:",{"type":48,"tag":69,"props":1785,"children":1786},{},[1787,1796,1805],{"type":48,"tag":73,"props":1788,"children":1789},{},[1790],{"type":48,"tag":1389,"props":1791,"children":1794},{"href":1792,"rel":1793},"https:\u002F\u002Fdocs.aws.amazon.com\u002Fkms\u002F",[1752],[1795],{"type":53,"value":443},{"type":48,"tag":73,"props":1797,"children":1798},{},[1799],{"type":48,"tag":1389,"props":1800,"children":1803},{"href":1801,"rel":1802},"https:\u002F\u002Fcloud.google.com\u002Fkms\u002Fdocs",[1752],[1804],{"type":53,"value":866},{"type":48,"tag":73,"props":1806,"children":1807},{},[1808],{"type":48,"tag":1389,"props":1809,"children":1812},{"href":1810,"rel":1811},"https:\u002F\u002Fdocs.microsoft.com\u002Fen-us\u002Fazure\u002Fkey-vault\u002F",[1752],[1813],{"type":53,"value":1173},{"type":48,"tag":1815,"props":1816,"children":1817},"style",{},[1818],{"type":53,"value":1819},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":1821,"total":1977},[1822,1841,1853,1868,1879,1889,1902,1914,1928,1941,1951,1964],{"slug":1823,"name":1823,"fn":1824,"description":1825,"org":1826,"tags":1827,"stars":1838,"repoUrl":1839,"updatedAt":1840},"collecting-cockroachdb-operator-escalation-packet","collect CockroachDB operator escalation packets","Collects a complete CockroachDB Operator escalation packet for TSC\u002FTSE or operator-team handoff, including Helm state, Kubernetes resources, logs, operation-specific evidence, pprof goroutine dumps, metrics, and a customer action timeline. Use when general diagnosis cannot resolve an operator-managed CockroachDB Helm issue or before restarting a stuck operator.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1828,1829,1832,1835],{"name":23,"slug":24,"type":15},{"name":1830,"slug":1831,"type":15},"Incident Response","incident-response",{"name":1833,"slug":1834,"type":15},"Kubernetes","kubernetes",{"name":1836,"slug":1837,"type":15},"Monitoring","monitoring",105,"https:\u002F\u002Fgithub.com\u002Fcockroachdb\u002Fhelm-charts","2026-07-12T07:57:25.288146",{"slug":1842,"name":1842,"fn":1843,"description":1844,"org":1845,"tags":1846,"stars":1838,"repoUrl":1839,"updatedAt":1852},"configuring-cockroachdb-helm-tls","configure TLS for CockroachDB Helm charts","Selects and validates TLS settings for CockroachDB Helm chart deployments, including self-signer, cert-manager, and external certificate modes. Use when a customer needs secure CockroachDB Helm values, certificate secret mapping, cert-manager integration, or TLS install troubleshooting before deploying the chart.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1847,1850,1851],{"name":1848,"slug":1849,"type":15},"Deployment","deployment",{"name":20,"slug":21,"type":15},{"name":13,"slug":14,"type":15},"2026-07-12T07:56:37.675396",{"slug":1854,"name":1854,"fn":1855,"description":1856,"org":1857,"tags":1858,"stars":1838,"repoUrl":1839,"updatedAt":1867},"debugging-cockroachdb-operator-migrations","debug CockroachDB Operator migration scenarios","Debugs CockroachDB Operator migration scenarios, including Helm StatefulSet to v1beta1 CrdbNode migration and public operator v1alpha1 to v1beta1 migration. Use when migration labels, migration phases, source StatefulSet ownership, converted CRDs, PVC ownership, or post-migration reconciliation are unclear or stuck.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1859,1860,1863,1864],{"name":23,"slug":24,"type":15},{"name":1861,"slug":1862,"type":15},"Debugging","debugging",{"name":1833,"slug":1834,"type":15},{"name":1865,"slug":1866,"type":15},"Migration","migration","2026-07-12T07:56:48.360871",{"slug":1869,"name":1869,"fn":1870,"description":1871,"org":1872,"tags":1873,"stars":1838,"repoUrl":1839,"updatedAt":1878},"diagnosing-cockroachdb-helm-deployments","diagnose CockroachDB Helm chart deployments","Diagnoses failed or unhealthy CockroachDB Helm chart deployments by checking Helm release state, operator health, CrdbCluster and CrdbNode status, pod readiness, RBAC, webhooks, TLS, upgrades, scaling, PVCs, DNS, and multi-region assumptions. Use when Helm install or upgrade fails, pods are not Ready, or the operator is not reconciling.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1874,1875,1876,1877],{"name":23,"slug":24,"type":15},{"name":1861,"slug":1862,"type":15},{"name":1848,"slug":1849,"type":15},{"name":1833,"slug":1834,"type":15},"2026-07-12T07:57:24.018818",{"slug":1880,"name":1880,"fn":1881,"description":1882,"org":1883,"tags":1884,"stars":1838,"repoUrl":1839,"updatedAt":1888},"installing-cockroachdb-with-helm","install CockroachDB using Helm","Guides customer-facing installation of CockroachDB on Kubernetes using the CockroachDB split Helm charts and operator-managed v1beta1 resources. Use when installing CockroachDB with Helm, choosing between published and local split charts, verifying a new install, or helping an agent complete first-time Kubernetes onboarding.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1885,1886,1887],{"name":23,"slug":24,"type":15},{"name":1848,"slug":1849,"type":15},{"name":1833,"slug":1834,"type":15},"2026-07-12T07:56:45.777567",{"slug":1890,"name":1890,"fn":1891,"description":1892,"org":1893,"tags":1894,"stars":1838,"repoUrl":1839,"updatedAt":1901},"validating-cockroachdb-helm-multiregion","validate CockroachDB multi-region Helm deployments","Validates CockroachDB Helm chart values and Kubernetes prerequisites for operator-managed multi-region deployments. Use before adding a region, deploying CockroachDB across multiple Kubernetes clusters, checking region DNS domains, or confirming that all regions share certificate and networking assumptions.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1895,1896,1897,1898],{"name":23,"slug":24,"type":15},{"name":1848,"slug":1849,"type":15},{"name":1833,"slug":1834,"type":15},{"name":1899,"slug":1900,"type":15},"Operations","operations","2026-07-12T07:56:47.082609",{"slug":1903,"name":1903,"fn":1904,"description":1905,"org":1906,"tags":1907,"stars":25,"repoUrl":26,"updatedAt":1913},"analyzing-range-distribution","analyze CockroachDB range distribution and health","Analyzes CockroachDB range distribution across tables and indexes using SHOW RANGES to identify range count, size patterns, leaseholder placement, and replication health. Use when investigating hotspots, uneven data distribution, range fragmentation, or validating zone configuration effects without DB Console access.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1908,1909,1910],{"name":23,"slug":24,"type":15},{"name":1836,"slug":1837,"type":15},{"name":1911,"slug":1912,"type":15},"Performance","performance","2026-07-12T07:57:18.753533",{"slug":1915,"name":1915,"fn":1916,"description":1917,"org":1918,"tags":1919,"stars":25,"repoUrl":26,"updatedAt":1927},"analyzing-schema-change-storage-risk","analyze schema change storage requirements","Estimates storage requirements for CockroachDB online schema change backfills using SHOW RANGES WITH DETAILS, KEYS, INDEXES. Use before CREATE INDEX, ADD COLUMN with INDEX\u002FUNIQUE, ALTER PRIMARY KEY, CREATE MATERIALIZED VIEW, CREATE TABLE AS, REFRESH, or SET LOCALITY on tables with large per-index footprints, to avoid mid-backfill disk exhaustion.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1920,1923,1924,1925],{"name":1921,"slug":1922,"type":15},"Data Modeling","data-modeling",{"name":23,"slug":24,"type":15},{"name":1911,"slug":1912,"type":15},{"name":1926,"slug":1504,"type":15},"SQL","2026-07-12T07:57:22.763788",{"slug":1929,"name":1929,"fn":1930,"description":1931,"org":1932,"tags":1933,"stars":25,"repoUrl":26,"updatedAt":1940},"auditing-cis-benchmark","audit CockroachDB clusters against CIS benchmarks","Audits a self-hosted CockroachDB cluster against the CIS CockroachDB Benchmark v1.0.0 Level 1 controls. Supports two audit depths — quick automated scans and full CIS audit procedures. Produces a structured PASS\u002FFAIL\u002FMANUAL report covering installation, system hardening, logging, user access, data protection, and CockroachDB settings. Use when preparing for CIS compliance assessments, hardening self-hosted deployments, or validating security posture against industry benchmarks.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1934,1937,1938,1939],{"name":1935,"slug":1936,"type":15},"Audit","audit",{"name":17,"slug":18,"type":15},{"name":23,"slug":24,"type":15},{"name":13,"slug":14,"type":15},"2026-07-18T05:48:00.862384",{"slug":1731,"name":1731,"fn":1942,"description":1943,"org":1944,"tags":1945,"stars":25,"repoUrl":26,"updatedAt":1950},"audit CockroachDB cluster security posture","Audits the security posture of a CockroachDB cluster (Cloud or self-hosted) across network, authentication, authorization, encryption, audit logging, and backup dimensions. Use when assessing cluster security readiness, preparing for compliance reviews, or investigating security configuration gaps.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1946,1947,1948,1949],{"name":1935,"slug":1936,"type":15},{"name":23,"slug":24,"type":15},{"name":1899,"slug":1900,"type":15},{"name":13,"slug":14,"type":15},"2026-07-12T07:57:01.506735",{"slug":1952,"name":1952,"fn":1953,"description":1954,"org":1955,"tags":1956,"stars":25,"repoUrl":26,"updatedAt":1963},"auditing-table-statistics","audit optimizer table statistics","Audits optimizer table statistics for staleness, missing coverage, and data quality issues using SHOW STATISTICS. Use when diagnosing poor query performance, unexpected plan changes, or after bulk data changes to identify stale statistics requiring refresh via CREATE STATISTICS.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1957,1958,1961,1962],{"name":1935,"slug":1936,"type":15},{"name":1959,"slug":1960,"type":15},"Data Analysis","data-analysis",{"name":23,"slug":24,"type":15},{"name":1911,"slug":1912,"type":15},"2026-07-12T07:57:16.190081",{"slug":1965,"name":1965,"fn":1966,"description":1967,"org":1968,"tags":1969,"stars":25,"repoUrl":26,"updatedAt":1976},"benchmarking-transaction-patterns","benchmark CockroachDB transaction patterns","Guides benchmarking and comparing explicit multi-statement transactions versus single-statement CTE transactions in CockroachDB, with fair test methodology, contention analysis, and performance interpretation. Use when comparing transaction formulations, benchmarking CockroachDB workloads under contention, investigating retry pressure, or deciding whether to rewrite multi-step application flows into single SQL statements.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1970,1971,1974,1975],{"name":23,"slug":24,"type":15},{"name":1972,"slug":1973,"type":15},"Engineering","engineering",{"name":1911,"slug":1912,"type":15},{"name":1926,"slug":1504,"type":15},"2026-07-12T07:57:26.543278",40,{"items":1979,"total":2031},[1980,1986,1993,2000,2007,2014,2021],{"slug":1903,"name":1903,"fn":1904,"description":1905,"org":1981,"tags":1982,"stars":25,"repoUrl":26,"updatedAt":1913},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1983,1984,1985],{"name":23,"slug":24,"type":15},{"name":1836,"slug":1837,"type":15},{"name":1911,"slug":1912,"type":15},{"slug":1915,"name":1915,"fn":1916,"description":1917,"org":1987,"tags":1988,"stars":25,"repoUrl":26,"updatedAt":1927},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1989,1990,1991,1992],{"name":1921,"slug":1922,"type":15},{"name":23,"slug":24,"type":15},{"name":1911,"slug":1912,"type":15},{"name":1926,"slug":1504,"type":15},{"slug":1929,"name":1929,"fn":1930,"description":1931,"org":1994,"tags":1995,"stars":25,"repoUrl":26,"updatedAt":1940},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1996,1997,1998,1999],{"name":1935,"slug":1936,"type":15},{"name":17,"slug":18,"type":15},{"name":23,"slug":24,"type":15},{"name":13,"slug":14,"type":15},{"slug":1731,"name":1731,"fn":1942,"description":1943,"org":2001,"tags":2002,"stars":25,"repoUrl":26,"updatedAt":1950},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2003,2004,2005,2006],{"name":1935,"slug":1936,"type":15},{"name":23,"slug":24,"type":15},{"name":1899,"slug":1900,"type":15},{"name":13,"slug":14,"type":15},{"slug":1952,"name":1952,"fn":1953,"description":1954,"org":2008,"tags":2009,"stars":25,"repoUrl":26,"updatedAt":1963},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2010,2011,2012,2013],{"name":1935,"slug":1936,"type":15},{"name":1959,"slug":1960,"type":15},{"name":23,"slug":24,"type":15},{"name":1911,"slug":1912,"type":15},{"slug":1965,"name":1965,"fn":1966,"description":1967,"org":2015,"tags":2016,"stars":25,"repoUrl":26,"updatedAt":1976},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2017,2018,2019,2020],{"name":23,"slug":24,"type":15},{"name":1972,"slug":1973,"type":15},{"name":1911,"slug":1912,"type":15},{"name":1926,"slug":1504,"type":15},{"slug":2022,"name":2022,"fn":2023,"description":2024,"org":2025,"tags":2026,"stars":25,"repoUrl":26,"updatedAt":2030},"cockroachdb-sql","write and optimize CockroachDB SQL","Use when writing, generating, or optimizing SQL for CockroachDB, designing CockroachDB schemas, or when the user asks about CockroachDB-specific SQL patterns, type mappings, and distributed database best practices. Also use when encountering CockroachDB anti-patterns like missing primary keys, sequential ID hotspots, or incorrect type usage.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2027,2028,2029],{"name":23,"slug":24,"type":15},{"name":1911,"slug":1912,"type":15},{"name":1926,"slug":1504,"type":15},"2026-07-25T05:31:22.562808",34]