Control: KMS keys should not be publicly accessible
Description
This control checks whether the KMS keys are publicly accessible.
Usage
Run the control in your terminal:
powerpipe control run terraform_gcp_compliance.control.kms_key_not_publicly_accessibleSnapshot and share results via Turbot Pipes:
powerpipe loginpowerpipe control run terraform_gcp_compliance.control.kms_key_not_publicly_accessible --shareSQL
This control uses a named query:
select  address as resource,  case    when (attributes_std ->> 'member') in ('allUsers','allAuthenticatedUsers') or (attributes_std -> 'members') @> '["allUsers"]' or (attributes_std -> 'members') @> '["allAuthenticatedUsers"]' then 'alarm'    else 'ok'  end as status,  split_part(address, '.', 2) || case    when (attributes_std ->> 'member') in ('allUsers','allAuthenticatedUsers') or (attributes_std -> 'members') @> '["allUsers"]' or (attributes_std -> 'members') @> '["allAuthenticatedUsers"]' then ' is publicly accessible'    else ' is not publicly accessible'  end || '.' reason    , path || ':' || start_linefrom  terraform_resourcewhere  type in ('google_kms_crypto_key_iam_policy', 'google_kms_crypto_key_iam_binding', 'google_kms_crypto_key_iam_member');