turbot/steampipe-mod-gcp-compliance

Control: Ensure that Cloud KMS cryptokeys are not anonymously or publicly accessible

Description

It is recommended that the IAM policy on Cloud KMS cryptokeys should restrict anonymous and/or public access.

Usage

Run the control in your terminal:

powerpipe control run gcp_compliance.control.kms_key_not_publicly_accessible

Snapshot and share results via Turbot Pipes:

powerpipe login
powerpipe control run gcp_compliance.control.kms_key_not_publicly_accessible --share

SQL

This control uses a named query:

with public_keys as (
select
distinct self_link
from
gcp_kms_key,
jsonb_array_elements(iam_policy -> 'bindings') as b
where
b -> 'members' ?| array['allAuthenticatedUsers', 'allUsers']
)
select
k.self_link as resource,
case
when p.self_link is null then 'ok'
else 'alarm'
end as status,
case
when p.self_link is null then title || ' in ' || k.key_ring_name || ' key ring not publicly accessible.'
else title || ' in ' || k.key_ring_name || ' key ring publicly accessible.'
end as reason
, location as location, project as project
from
gcp_kms_key k
left join public_keys p on k.self_link = p.self_link;

Tags