Skill

infra-security-review

Security patterns and checklists for reviewing Infrastructure-as-Code. Covers Terraform/OpenTofu state, secrets, network, compute, database, and storage security.

From majestic-devops
Install
1
Run in your terminal
$
npx claudepluginhub majesticlabs-dev/majestic-marketplace --plugin majestic-devops
Tool Access

This skill uses the workspace's default tool permissions.

Skill Content

Infrastructure Security Review Patterns

Security checklists and grep patterns for reviewing IaC code. Use these patterns when verifying infrastructure security.

Security Checklists

State Backend Security

CheckSeverityPattern
S3 bucket without encryptionCriticalencrypt = false or missing
Missing state lockingHighNo DynamoDB table configured
Public bucket policyCriticalblock_public_* not all true
Missing versioningMediumversioning not enabled

Secret Exposure

CheckSeverityPattern
Hardcoded AWS keysCriticalAKIA[0-9A-Z]{16}
Hardcoded passwordsCriticalpassword\s*=\s*"[^"]+[^}]"
Database credentials in codeCriticalDATABASE_URL with password
API keys in variablesHighapi_key, secret_key defaults

Network Security

CheckSeverityPattern
SSH open to worldCritical0.0.0.0/0 on port 22
Database publicly accessibleCriticalMissing private_network_uuid
Wide CIDR rangesMedium/8, /16 on public resources
Missing firewallHighDroplet without firewall resource

Compute Security

CheckSeverityPattern
Root login enabledHighPermitRootLogin yes in cloud-init
Password auth enabledMediumPasswordAuthentication yes
Missing SSH hardeningLowNo ClientAliveInterval config
No monitoringLowmonitoring = false

Database Security

CheckSeverityPattern
Public database accessCriticalNo database firewall rules
No VPC attachmentHighMissing private_network_uuid
Weak versionMediumOld database engine versions
Single node for productionLownode_count = 1 in prod

Storage Security

CheckSeverityPattern
Public S3 bucketsCriticalacl = "public-read"
Missing encryptionHighNo SSE configuration
No access loggingMediumMissing access log bucket

Grep Patterns

# Hardcoded secrets
grep -rE 'AKIA[0-9A-Z]{16}' *.tf
grep -rE 'password\s*=\s*"[^$\{][^"]*"' *.tf
grep -rE 'secret.*=\s*"[^$\{][^"]*"' *.tf
grep -rE 'api_key\s*=\s*"' *.tf

# Network exposure
grep -rE '0\.0\.0\.0/0.*22' *.tf
grep -rE 'cidr_blocks.*0\.0\.0\.0/0' *.tf
grep -rE 'publicly_accessible\s*=\s*true' *.tf

# State security
grep -rE 'encrypt\s*=\s*false' *.tf
grep -rE 'block_public_acls\s*=\s*false' *.tf

# Cloud-init issues
grep -rE 'PermitRootLogin\s+yes' *.tf *.yaml
grep -rE 'PasswordAuthentication\s+yes' *.tf *.yaml

Report Template

# Infrastructure Security Review

**Repository:** [name]
**Date:** [date]
**Files Reviewed:** [count]

## Summary

| Severity | Count |
|----------|-------|
| Critical | X |
| High | X |
| Medium | X |
| Low | X |

## Findings

### [SEVERITY-001] Title

**File:** `path/to/file.tf:line`
**Resource:** `resource_type.name`

**Issue:**
Description of the security issue.

**Current:**
```hcl
[current code]

Remediation:

[fixed code]

Compliance Notes

  • State encryption enabled (SOC 2)
  • No hardcoded credentials (PCI-DSS)
  • Network segmentation in place (HIPAA)
  • Access logging enabled (all frameworks)

## Severity Guide

| Severity | Definition | Action |
|----------|------------|--------|
| Critical | Direct security exposure, data breach risk | Block deployment |
| High | Significant risk, exploitable weakness | Fix before production |
| Medium | Best practice violation, indirect risk | Fix within 30 days |
| Low | Minor hardening opportunity | Address when convenient |
Stats
Parent Repo Stars30
Parent Repo Forks6
Last CommitJan 12, 2026