Control: IAM policy should not grant full access to KMS service
Description
KMS is a critical service and IAM policies should follow least privilege model for this service in particular. This control is non-compliant if the managed IAM policy allows full access to KMS service.
Usage
Run the control in your terminal:
powerpipe control run aws_compliance.control.iam_policy_no_full_access_to_kms
Snapshot and share results via Turbot Pipes:
powerpipe loginpowerpipe control run aws_compliance.control.iam_policy_no_full_access_to_kms --share
SQL
This control uses a named query:
with cloudtrail_full_access_policies as ( select arn, count(*) as statements_num from aws_iam_policy, jsonb_array_elements(policy_std -> 'Statement') as s, jsonb_array_elements_text(s -> 'Resource') as resource, jsonb_array_elements_text(s -> 'Action') as action where not is_aws_managed and s ->> 'Effect' = 'Allow' and resource = '*' and action = 'cloudtrail:*' group by arn)select p.arn as resource, case when w.arn is null then 'ok' else 'alarm' end status, p.name || ' contains ' || coalesce(w.statements_num,0) || ' statements that allow action "*" on at cloudtrail service on resource "*".' as reason , p.account_idfrom aws_iam_policy as p left join cloudtrail_full_access_policies as w on p.arn = w.arnwhere not p.is_aws_managed;