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 → 部署權限 │
└─────────────────────────────────┘
最小權限的實作策略
- 從寬鬆開始:開發初期用較寬鬆的政策
- 使用 Access Analyzer:AWS IAM Access Analyzer 會分析實際使用的權限
- 逐漸收緊:根據分析結果,產生最小權限的政策
- 定期審計:每季檢查未使用的角色和權限
下一章預告
這堂 AWS 基礎課你從 VPC、EC2、ECS/EKS 到 IAM,已經涵蓋了 AWS 的核心服務。下一門課的 DevOps CI/CD 將教你如何用 CodePipeline 和 GitHub Actions 自動化部署。