|
| 1 | +# Enable the AWS plugin for TFLint |
1 | 2 | plugin "aws" { |
2 | 3 | enabled = true |
3 | 4 | source = "github.com/terraform-linters/tflint-ruleset-aws" |
4 | | - version = "0.4.0" |
| 5 | + version = "0.24.1" |
5 | 6 | } |
6 | 7 |
|
7 | | -# Enable built-in AWS rules |
| 8 | +# General TFLint settings |
| 9 | +config { |
| 10 | + recursive = true # Scan all Terraform files in subdirectories |
| 11 | +} |
| 12 | + |
| 13 | +# Enable AWS rules to enforce best practices |
8 | 14 | rule "aws_instance_invalid_type" { |
9 | 15 | enabled = true |
10 | 16 | } |
11 | 17 |
|
12 | | -rule "aws_security_group_ingress_cidr_blocks" { |
| 18 | +rule "aws_s3_bucket_public_access" { |
13 | 19 | enabled = true |
14 | 20 | } |
15 | 21 |
|
16 | | -# Custom rule: Ensure S3 Buckets are private |
17 | | -rule "aws_s3_bucket_private" { |
| 22 | +rule "aws_security_group_open_ports" { |
18 | 23 | enabled = true |
19 | 24 | } |
20 | 25 |
|
21 | | -# Custom rule: Ensure tags are always defined |
| 26 | +rule "aws_iam_policy_no_wildcard" { |
| 27 | + enabled = true |
| 28 | +} |
| 29 | + |
| 30 | +# Ensure that security groups do not allow unrestricted access |
| 31 | +rule "aws_security_group_ingress_cidr_blocks" { |
| 32 | + enabled = true |
| 33 | +} |
| 34 | + |
| 35 | +# Enforce required tags for resources |
22 | 36 | rule "terraform_module_tag_required" { |
23 | 37 | enabled = true |
24 | 38 | required_tags = ["Name", "Environment", "Owner"] |
25 | 39 | } |
26 | 40 |
|
27 | | -# Custom rule: Prevent usage of sensitive IAM actions |
28 | | -rule "aws_iam_policy_restricted_actions" { |
| 41 | +# Prevent IAM roles from using excessive permissions |
| 42 | +rule "aws_iam_role_restricted_permissions" { |
29 | 43 | enabled = true |
30 | 44 | restricted_actions = [ |
31 | | - "iam:*", # Prevent wildcard permissions |
32 | | - "s3:*", # Prevent full S3 access |
33 | | - "ec2:*" # Prevent full EC2 access |
| 45 | + "iam:*", |
| 46 | + "s3:*" |
34 | 47 | ] |
35 | 48 | } |
| 49 | + |
| 50 | +# Ensure EKS clusters use recommended instance types |
| 51 | +rule "aws_eks_node_group_instance_types" { |
| 52 | + enabled = true |
| 53 | + allowed_types = ["t3.medium", "m5.large", "m5.xlarge"] |
| 54 | +} |
0 commit comments