Con bot deploy này em tạo từ 6 tháng trước, xài quyền root AWS cho tiện…- tiện luôn cho hacker!
Audit pipeline mà thấy token CI/CD có quyền admin AWS, tôi chỉ bảo nhẹ: “Sao không gắn thêm cho nó mấy viên đá vô cực?”. Token như Thanos, muốn xóa bucket, gỡ DB, hay deploy prod cũng được.
![]() |
Token CI của bạn khi có quyền admin AWS |
Thực trạng: Token CI quyền lực vô biên
Thực trạng:
- Token CI (GitHub Actions, GitLab Runner) được gán IAM role với * quyền.
- Không phân tách quyền theo môi trường (dev/staging/prod).
- Token không rotate, nằm im 6 tháng, ai lấy được là “chơi lớn”.
Hệ quả:
- Rủi ro bảo mật: Token bị lộ, hacker xóa sạch S3, RDS.
- Lỗi nhầm môi trường: CI deploy nhầm prod thay vì staging.
- Không audit: Không biết token nào đang dùng, ai tạo.
Giải pháp: Phân quyền và OIDC
Để khóa chặt:
- Dùng OIDC: Gán IAM role qua OpenID Connect cho GitHub Actions/GitLab CI, thay vì static token.
- Phân quyền cho từng môi trường môi trường: Role riêng cho dev (read-only), staging (deploy), prod (read + approve).
- Rotate secret: Cập nhật token định kỳ, audit quyền IAM qua AWS IAM Access Analyzer.
Ví dụ: OIDC cho GitHub Actions:
name: Deploy
on: [push]
jobs:
deploy:
runs-on: ubuntu-latest
permissions:
id-token: write
steps:
- uses: aws-actions/configure-aws-credentials@v1
with:
role-arn: arn:aws:iam::123456789012:role/ci-role
🎯 Tóm lại: Token CI quyền lực quá là “lời mời” hacker. Dùng OIDC, phân quyền môi trường, và rotate secret để bảo vệ production.
Đăng nhận xét