Skip to main content

More Info:

Advisory: EncryptionConfiguration with a KMS provider should be enabled for Secret resources so etcd does not store secrets in plaintext.

Risk Level

High

Address

Security

Compliance Standards

  • Cloudanix Best Practice

Triage and Remediation

Remediation

Manual Steps

  1. Identify the cluster and its resource group
    • Run on: any machine with Azure CLI access.
    • Command:
      Note the name and resourceGroup of the affected cluster.
  2. Check whether customer‑managed key (CMK) + disk encryption set is configured (AKS cluster‑wide encryption)
    • Run on: any machine with Azure CLI access.
    • Command:
    • Review:
      • If this returns null or "enabled": false, then KMS/envelope encryption for Kubernetes secrets is not enabled.
      • If "enabled": true, confirm "keyId" is set to the expected Azure Key Vault key.
  3. Review current encryption design and key management requirements
    • Manually verify with your security/ops teams:
      • Which Azure Key Vault and key (URI, versioning, rotation policy) must be used for AKS secrets.
      • Required regions, RBAC, and access policies for the AKS managed identity to use that key.
      • Compliance requirements for key ownership, rotation, and logging (Key Vault logging to Log Analytics/Storage).
  4. Enable or correct AKV KMS integration for the AKS cluster (envelope encryption for secrets)
    • Preconditions: an Azure Key Vault with an RSA key exists, with access granted to the AKS cluster’s managed identity.
    • Run on: any machine with Azure CLI access.
    • Commands (example pattern; replace placeholders with actual values decided in step 3):
    • Operational impact: this updates control-plane configuration; the API server is reconfigured by Azure. Existing secrets are not automatically re‑encrypted; they will be encrypted as they are written/updated.
  5. Re‑write critical secrets to ensure they are encrypted with KMS
    • Run on: any machine with kubectl access.
    • For each sensitive secret, force a rewrite:
    • Repeat for all high‑sensitivity secrets or redeploy them via your IaC pipelines.
  6. Verify encryption configuration is active and in use
    • Configuration check (repeat step 2):
      Confirm "enabled": true and "keyId" matches the intended Key Vault key.
    • Functional check (indirect, since etcd is not accessible in AKS):
      • Create a test secret and ensure no plaintext appears in API server logs or client‑side tooling beyond base64 encoding:
      • Confirm the value is only visible as base64 and that the AKS KMS configuration remains enabled as above.
kubectl cannot configure envelope/KMS encryption for Secrets on AKS, because this setting is only available in the AKS control plane and Azure-side configuration. To address this finding, use the Azure portal/CLI or your IaC (such as ARM/Bicep/Terraform) as described in the Manual Steps section.