Copy ---
type: Ruleset
version: v1
metadata:
name: "ensure-ami-is-in-approved-allowlist"
display_name: "Ensure AMI is from the approved allowlist"
description: |
## Description
Ensure that EC2 instances, launch configurations, and launch templates use only
approved AMIs. Resources referencing an AMI that is not in the allowlist will be
flagged with an audit error but will not be automatically remediated.
annotations:
contributed-by: user
provider: AWS
resource: aws_instance, aws_launch_configuration, aws_launch_template
spec:
template:
language: terraform
audit_language: ast
rules:
- name: "ensure-aws_instance-ami-is-in-allowlist"
audit: |
{{ aResource("aws_instance", anAttribute("ami")) }}
skip_finding: |
hasSubString($.value, "ami-0a1b2c3d4e5f67890") || hasSubString($.value, "ami-0987654321fedcba0") || hasSubString($.value, "ami-0ff11223344556677") || hasSubString($.value, "ami-0abcdef1234567890") || hasSubString($.value, "ami-0123456789abcdef0")
remediation:
- command: audit
flags:
level: ERROR
value: "(PaC) The AMI is not in the approved allowlist. Valid AMIs are: ami-0a1b2c3d4e5f67890, ami-0987654321fedcba0, ami-0ff11223344556677, ami-0abcdef1234567890, ami-0123456789abcdef0"
- name: "ensure-aws_launch_configuration-image_id-is-in-allowlist"
audit: |
{{ aResource("aws_launch_configuration", anAttribute("image_id")) }}
skip_finding: |
hasSubString($.value, "ami-0a1b2c3d4e5f67890") || hasSubString($.value, "ami-0987654321fedcba0") || hasSubString($.value, "ami-0ff11223344556677") || hasSubString($.value, "ami-0abcdef1234567890") || hasSubString($.value, "ami-0123456789abcdef0")
remediation:
- command: audit
flags:
level: ERROR
value: "(PaC) The AMI is not in the approved allowlist. Valid AMIs are: ami-0a1b2c3d4e5f67890, ami-0987654321fedcba0, ami-0ff11223344556677, ami-0abcdef1234567890, ami-0123456789abcdef0"
- name: "ensure-aws_launch_template-image_id-is-in-allowlist"
audit: |
{{ aResource("aws_launch_template", anAttribute("image_id")) }}
skip_finding: |
hasSubString($.value, "ami-0a1b2c3d4e5f67890") || hasSubString($.value, "ami-0987654321fedcba0") || hasSubString($.value, "ami-0ff11223344556677") || hasSubString($.value, "ami-0abcdef1234567890") || hasSubString($.value, "ami-0123456789abcdef0")
remediation:
- command: audit
flags:
level: ERROR
value: "(PaC) The AMI is not in the approved allowlist. Valid AMIs are: ami-0a1b2c3d4e5f67890, ami-0987654321fedcba0, ami-0ff11223344556677, ami-0abcdef1234567890, ami-0123456789abcdef0"