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.
Đăng nhận xét