For the complete documentation index, see llms.txt. This page is also available as Markdown.
Cortex CloudApplication Security

PostgreSQL server does not enable customer-managed key for encryption misconfiguration detected in c

Rule Details

Cortex AppSec Rule ID

APPSEC2_AZURE_17

Category - Subcategory

Storage - Encryption

Provider

AZURE

Severity

LOW

Framework

Terraform, Terraform Plan

Impact

Use customer-managed keys to manage the encryption at rest of your PostgreSQL servers. By default, the data is encrypted at rest with service-managed keys, but customer-managed keys are commonly required to meet regulatory compliance standards. Customer-managed keys enable the data to be encrypted with an Azure Key Vault key created and owned by you. You have full control and responsibility for the key lifecycle, including rotation and management.

How to Fix

Resource: azurerm_resource_group, azurerm_key_vault, azurerm_key_vault_access_policy, azurerm_key_vault_key, azurerm_postgresql_server, azurerm_postgresql_server_key

[source,go]

{ "resource "azurerm_resource_group" "ok" { name = "ok-resources" location = "West Europe" }

resource "azurerm_key_vault" "ok" { name = "okkv" location = azurerm_resource_group.ok.location resource_group_name = azurerm_resource_group.ok.name tenant_id = data.azurerm_client_config.current.tenant_id sku_name = "premium" purge_protection_enabled = true }

resource "azurerm_key_vault_access_policy" "server" { key_vault_id = azurerm_key_vault.ok.id tenant_id = data.azurerm_client_config.current.tenant_id object_id = azurerm_postgresql_server.ok.identity.0.principal_id key_permissions = ["get", "unwrapkey", "wrapkey"] secret_permissions = ["get"] }

resource "azurerm_key_vault_access_policy" "client" { key_vault_id = azurerm_key_vault.ok.id tenant_id = data.azurerm_client_config.current.tenant_id object_id = data.azurerm_client_config.current.object_id key_permissions = ["get", "create", "delete", "list", "restore", "recover", "unwrapkey", "wrapkey", "purge", "encrypt", "decrypt", "sign", "verify"] secret_permissions = ["get"] }

resource "azurerm_key_vault_key" "ok" { name = "tfex-key" key_vault_id = azurerm_key_vault.ok.id key_type = "RSA" key_size = 2048 key_opts = ["decrypt", "encrypt", "sign", "unwrapKey", "verify", "wrapKey"] depends_on = [ azurerm_key_vault_access_policy.client, azurerm_key_vault_access_policy.server, ] }

resource "azurerm_postgresql_server" "ok" { name = "ok-pg-server" location = azurerm_resource_group.ok.location resource_group_name = azurerm_resource_group.ok.name sku_name = "GP_Gen5_2" administrator_login = "acctestun" administrator_login_password = "H@Sh1CoR3!" ssl_enforcement_enabled = true ssl_minimal_tls_version_enforced = "TLS1_1" storage_mb = 51200 version = "5.6"

identity { type = "SystemAssigned" }

}

resource "azurerm_postgresql_server_key" "ok" { server_id = azurerm_postgresql_server.ok.id key_vault_key_id = azurerm_key_vault_key.ok.id }

", }


Last updated

Was this helpful?