turbot/steampipe-mod-azure-compliance

Control: PostgreSQL servers should use customer-managed keys to encrypt data at rest

Description

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.

Usage

Run the control in your terminal:

powerpipe control run azure_compliance.control.postgres_sql_server_encrypted_at_rest_using_cmk

Snapshot and share results via Turbot Pipes:

powerpipe login
powerpipe control run azure_compliance.control.postgres_sql_server_encrypted_at_rest_using_cmk --share

SQL

This control uses a named query:

with pgql_server_encrypted as (
select
distinct i.id as id
from
azure_mysql_server as i,
jsonb_array_elements(server_keys) a
where
a ->> 'serverKeyType' = 'AzureKeyVault'
and a ->> 'uri' is not null
)
select
s.id as resource,
case
when a.id is not null then 'ok'
else 'alarm'
end as status,
case
when a.id is not null then s.title || ' encrypted with CMK.'
else s.title || ' not encrypted with CMK.'
end as reason
, s.resource_group as resource_group
, sub.display_name as subscription
from
azure_postgresql_server as s
left join pgql_server_encrypted as a on s.id = a.id,
azure_subscription as sub
where
sub.subscription_id = s.subscription_id;

Tags