IAM 與完整基礎設施

🔥 Vibe Prompt

「定義 EC2、ECS 和 CI/CD 的 IAM 角色。應用最低權限原則與資源基礎政策。」

IAM 角色

# EC2 角色——最小權限
resource "aws_iam_role" "ec2" {
  name = "ec2-app-role"
  assume_role_policy = jsonencode({
    Version = "2012-10-17"
    Statement = [{
      Action = "sts:AssumeRole"
      Effect = "Allow"
      Principal = { Service = "ec2.amazonaws.com" }
    }]
  })
}

resource "aws_iam_role_policy" "ec2_s3" {
  name = "ec2-s3-read"
  role = aws_iam_role.ec2.id
  policy = jsonencode({
    Version = "2012-10-17"
    Statement = [{
      Effect = "Allow"
      Action = ["s3:GetObject", "s3:ListBucket"]
      Resource = [
        aws_s3_bucket.assets.arn,
        "${aws_s3_bucket.assets.arn}/*"
      ]
    }]
  })
}

# CI/CD 角色
resource "aws_iam_role" "cicd" {
  name = "github-actions-role"
  assume_role_policy = jsonencode({
    Version = "2012-10-17"
    Statement = [{
      Action = "sts:AssumeRoleWithWebIdentity"
      Effect = "Allow"
      Principal = {
        Federated = "arn:aws:iam::${data.aws_caller_identity.current.account_id}:oidc-provider/token.actions.githubusercontent.com"
      }
      Condition = {
        StringEquals = { "token.actions.githubusercontent.com:sub": "repo:myorg/myapp:ref:refs/heads/main" }
      }
    }]
  })
}

完整基礎設施架構

CloudFront (CDN + WAF)
    ↓
ALB(HTTPS 終止)
    ↓
ECS Fargate(3 個容器)
    ↓
RDS Postgres(Multi-AZ)+ ElastiCache Redis
    ↓
S3(靜態檔案、日誌)+ ECR(映像檔)

CI/CD 管線

GitHub Push → 建置 Docker → 推送到 ECR → 更新 ECS → 煙霧測試
     ↓
  IAM 角色(OIDC)

AWS 雲端課程完成!🎉

  • ✅ VPC & EC2
  • ✅ RDS & S3
  • ✅ ECS & EKS
  • ✅ CloudFront & WAF
  • ✅ IAM & 完整基礎設施

關鍵要點

  • ✅ 請根據本章主題補充具體的學習重點
  • ✅ 建議加入比較表格、程式碼範例或流程圖
  • ✅ 確保內容扎實且有價值


IAM:整個 AWS 安全的基石

IAM 是 AWS 中最重要也最容易被忽略的服務。你的 S3 Bucket 設得再安全、Security Group 規則再嚴格——如果 IAM 政策寫了 "Action": "*", "Resource": "*",一切防護都是白費。

完整基礎設施的 IAM 設計

┌─────────────────────────────────┐
│        組織層級(SCP)           │ ← 禁止 root 帳號、限制地區
├─────────────────────────────────┤
│        帳號層級                  │
│  ├─ 管理員角色(Administrator)  │
│  ├─ 開發者角色(Developer)      │
│  └─ 唯讀角色(ReadOnly)        │
├─────────────────────────────────┤
│        服務層級                  │
│  ├─ EC2 → 存取 S3、DynamoDB     │
│  ├─ Lambda → 存取 SQS、SES      │
│  └─ CI/CD → 部署權限            │
└─────────────────────────────────┘

最小權限的實作策略

  1. 從寬鬆開始:開發初期用較寬鬆的政策
  2. 使用 Access Analyzer:AWS IAM Access Analyzer 會分析實際使用的權限
  3. 逐漸收緊:根據分析結果,產生最小權限的政策
  4. 定期審計:每季檢查未使用的角色和權限

下一章預告

這堂 AWS 基礎課你從 VPC、EC2、ECS/EKS 到 IAM,已經涵蓋了 AWS 的核心服務。下一門課的 DevOps CI/CD 將教你如何用 CodePipeline 和 GitHub Actions 自動化部署。

解鎖完整教學內容

本章為付費內容。加入專案即可解鎖超過 5000 字的深度解析,包含 10 個以上神級 Prompt 與真實 Source Code 範例!