Skip to content
Back to skills

Aws 2

ASecurity

AWS infrastructure security review process. Use when reviewing IAM policies and roles, auditing S3 bucket configurations, securing Lambda functions, reviewing CloudFormation/CDK/Terraform, or configuring VPC and security groups. Also use when IAM policies use wildcards, S3 buckets might be public, Lambda has broad permissions, security groups allow 0.0.0.0/0, or secrets appear in environment variables. Essential for KMS encryption, Secrets Manager, least privilege, and AWS security scanning w...

  • 2 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 27, 2026
devopsgobashawsterraformdebuggingapisecurity

Works with

  • api

Security analysis

A100/100

Pro scans all 4 files and shows the line behind each finding

Scanned September 27, 2026

npx -y skills add David-Li0406/meta-skill-evloving --skill aws-2 --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Aws 2?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Aws 2
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/david-li0406-aws-2/badge)](https://www.skillsdirectory.com/skills/david-li0406-aws-2)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: aws
description: "AWS infrastructure security review process. Use when reviewing IAM policies and roles, auditing S3 bucket configurations, securing Lambda functions, reviewing CloudFormation/CDK/Terraform, or configuring VPC and security groups. Also use when IAM policies use wildcards, S3 buckets might be public, Lambda has broad permissions, security groups allow 0.0.0.0/0, or secrets appear in environment variables. Essential for KMS encryption, Secrets Manager, least privilege, and AWS security scanning with Prowler or Checkov."
---

# AWS Skill

## Overview

AWS's shared responsibility model means security is YOUR job, not Amazon's. This skill guides systematic review of AWS infrastructure for security misconfigurations—the #1 cause of cloud breaches.

**Core principle:** Default deny everything. AWS resources should have no access unless explicitly granted, no network exposure unless required, and no permissions beyond the minimum needed.

## The AWS Security Review Process

### Phase 1: Check IAM First

**IAM is the foundation. Start here:**

1. **Review Permission Scope**
   - What actions are allowed?
   - On which resources?
   - Under what conditions?

2. **Check for Privilege Escalation Paths**
   - Can this role create other roles?
   - Can it modify IAM policies?
   - Can it assume more powerful roles?

3. **Verify Least Privilege**
   - Are permissions minimal for the task?
   - Time-bounded where possible?
   - Conditions restricting access?

### Phase 2: Check Network Boundaries

**Then verify network isolation:**

1. **Security Groups**
   - No 0.0.0.0/0 ingress except ALB port 443
   - No overly broad port ranges
   - Source restricted to specific security groups

2. **VPC Design**
   - Private subnets for workloads?
   - NAT Gateway for outbound only?
   - VPC Flow Logs enabled?

3. **Public Exposure**
   - No public IPs on EC2 instances
   - No publicly accessible RDS
   - S3 public access blocked

### Phase 3: Check Data Protection

**Finally, verify data security:**

1. **Encryption**
   - Encryption at rest (KMS)?
   - Encryption in transit (TLS)?
   - Customer-managed keys for sensitive data?

2. **Secrets Management**
   - Secrets in Secrets Manager?
   - Not in environment variables?
   - Rotatable without deploy?

## Red Flags - STOP and Investigate

### IAM Red Flags

```json
// ❌ CRITICAL: Full admin
{
  "Effect": "Allow",
  "Action": "*",
  "Resource": "*"
}

// ❌ HIGH: IAM modification (privilege escalation)
{
  "Action": ["iam:*", "iam:CreateRole", "iam:AttachRolePolicy"]
}

// ❌ HIGH: No resource restriction
{
  "Action": "s3:*",
  "Resource": "*"  // Should be specific bucket ARN
}

// ❌ MEDIUM: No conditions
{
  "Action": "s3:GetObject"
  // Missing: Condition for IP, MFA, time bounds
}
```

### S3 Red Flags

```json
// ❌ CRITICAL: Public bucket
{
  "Effect": "Allow",
  "Principal": "*",  // Anyone on internet!
  "Action": "s3:GetObject"
}

// ❌ HIGH: Missing encryption
// (No ServerSideEncryptionConfiguration)

// ❌ HIGH: No public access block
// (PublicAccessBlockConfiguration missing or false)
```

### Network Red Flags

```yaml
# ❌ CRITICAL: SSH from anywhere
SecurityGroupIngress:
  - IpProtocol: tcp
    FromPort: 22
    ToPort: 22
    CidrIp: 0.0.0.0/0

# ❌ CRITICAL: All ports open
  - IpProtocol: -1
    CidrIp: 0.0.0.0/0

# ❌ HIGH: RDS publicly accessible
PubliclyAccessible: true
```

### Lambda Red Flags

```yaml
# ❌ HIGH: Hardcoded secrets
Environment:
  Variables:
    API_KEY: "sk-live-actual-secret-key"

# ❌ HIGH: Broad permissions
Policies:
  - AmazonS3FullAccess  # Should be specific bucket

# ❌ MEDIUM: No VPC (if accessing private resources)
# Missing VpcConfig
```

## Common Rationalizations - Don't Accept These

| Excuse | Reality |
|--------|---------|
| "It's only internal" | VPCs get compromised. Defense in depth. |
| "We'll lock it down later" | Later never comes. Secure from day one. |
| "The app needs those permissions" | No app needs `*`. Find exact permissions. |
| "Public bucket is intentional" | Use CloudFront + OAI. Never direct S3. |
| "SSH access is for debugging" | Use SSM Session Manager. No SSH needed. |
| "Secrets are encrypted in Lambda" | They're visible in console. Use Secrets Manager. |

## AWS Security Checklist

Before approving AWS infrastructure:

**IAM:**
- [ ] No `Action: "*"` or `Resource: "*"`
- [ ] MFA required for sensitive operations
- [ ] Service roles follow least privilege
- [ ] No inline policies on users
- [ ] Conditions used where appropriate

**S3:**
- [ ] Public access blocked
- [ ] Encryption enabled (SSE-KMS preferred)
- [ ] Versioning enabled for critical data
- [ ] Access logging enabled

**Network:**
- [ ] No 0.0.0.0/0 except ALB 443
- [ ] Private subnets for workloads
- [ ] VPC Flow Logs enabled
- [ ] No public IPs on compute

**Compute:**
- [ ] No hardcoded secrets
- [ ] Least privilege roles
- [ ] Timeouts and concurrency limits

## Quick Patterns

### Secure IAM Policy

```json
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "AllowS3ReadWrite",
      "Effect": "Allow",
      "Action": [
        "s3:GetObject",
        "s3:PutObject"
      ],
      "Resource": "arn:aws:s3:::my-specific-bucket/*",
      "Condition": {
        "StringEquals": {
          "aws:PrincipalAccount": "123456789012"
        },
        "IpAddress": {
          "aws:SourceIp": ["10.0.0.0/8"]
        }
      }
    }
  ]
}
```

### Secure S3 Bucket

```yaml
SecureBucket:
  Type: AWS::S3::Bucket
  Properties:
    BucketEncryption:
      ServerSideEncryptionConfiguration:
        - ServerSideEncryptionByDefault:
            SSEAlgorithm: aws:kms
            KMSMasterKeyID: !Ref KMSKey
    PublicAccessBlockConfiguration:
      BlockPublicAcls: true
      BlockPublicPolicy: true
      IgnorePublicAcls: true
      RestrictPublicBuckets: true
    VersioningConfiguration:
      Status: Enabled
    LoggingConfiguration:
      DestinationBucketName: !Ref LoggingBucket
```

### Secure Security Group

```yaml
AppSecurityGroup:
  Type: AWS::EC2::SecurityGroup
  Properties:
    GroupDescription: Allow only from ALB
    VpcId: !Ref VPC
    SecurityGroupIngress:
      - IpProtocol: tcp
        FromPort: 443
        ToPort: 443
        SourceSecurityGroupId: !Ref ALBSecurityGroup
```

## Quick Security Scans

```bash
# AWS native tools
aws iam get-credential-report
aws s3api get-bucket-policy-status --bucket BUCKET
aws ec2 describe-security-groups --query 'SecurityGroups[?IpPermissions[?IpRanges[?CidrIp==`0.0.0.0/0`]]]'

# Third-party scanners
prowler aws                          # Comprehensive AWS audit
checkov -f template.yaml             # IaC scanning
cfn-lint template.yaml               # CloudFormation linting
tfsec .                              # Terraform scanning
```

## References

Detailed patterns and examples in `references/`:
- `iam-patterns.md` - Advanced IAM patterns and conditions
- `network-security.md` - VPC and security group patterns
- `encryption.md` - KMS and encryption patterns

Files in this skill

  • SKILL.md6.9 KB
  • references/encryption.md4 KB
  • references/iam-patterns.md6.1 KB
  • references/network-security.md7.8 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…