Ai cũng deploy được

Lambda nào cũng có quyền S3:PutObject và RDS:DeleteDB… cứ deploy là chạy, lo gì!

Audit IAM role mà thấy Lambda nào cũng được gán quyền admin, tôi chỉ muốn khóc. Team copy-paste policy từ Stack Overflow, cho Lambda quyền xóa cả database. Hacker vào là hệ thống “tan nát” như tiệc hội làng.


Lỗi phổ biến: IAM không least privilege

Thực trạng:  
  • Dev dùng console, gán IAM role với * quyền (full access).  
  • Lambda có quyền truy cập mọi S3 bucket, RDS instance, dù chỉ cần đọc 1 table.  
  • Không audit IAM, không biết ai có quyền gì.
Hệ quả:  
  • Rủi ro bảo mật: Hacker khai thác Lambda để xóa dữ liệu hoặc leak file S3.  
  • Chi phí tăng: Lambda vô tình ghi dữ liệu vào bucket sai, tốn tiền vô ích.  
  • Debug khó: Quyền chồng chéo, không rõ Lambda dùng quyền nào.

Giải pháp: IAM chặt chẽ

Để khóa chặt:  
  • IAM role per function: Mỗi Lambda có role riêng, chỉ cấp quyền cần thiết (ví dụ: s3:GetObject cho bucket cụ thể).  
  • Permission boundary: Dùng boundary để giới hạn quyền tối đa của Lambda.  
  • Audit bằng tool: Dùng AWS IAM Access Analyzer để phát hiện quyền dư thừa.
Ví dụ: Policy cho Lambda chỉ đọc bucket my-bucket:
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "s3:GetObject",
      "Resource": "arn:aws:s3:::my-bucket/*"
    }
  ]
}
 
🎯 Tóm lại: IAM lỏng lẻo là lời mời hacker. Dùng role per function, least privilege, và audit thường xuyên để bảo vệ hệ thống.

Post a Comment

Mới hơn Cũ hơn