Khi ta xây dựng luồng CI/CD với các dịch vụ ở trên AWS. Ví dụ là EC2, ta thường SSH lên con EC2 và thực thi các câu lệnh. Hoặc là khi ta làm việc với AWS S3 ta thường dùng câu lệnh AWS CLI để tải tệp tin từ S3 xuống, để AWS CLI hoạt động được ta phải cấu hình AWS KEY, và mình thấy các bạn thường để thẳng trong tệp tin CI/CD. Nhìn thì không có gì sai nhưng nó là lỗi bảo mật rất quang trọng.
Vấn đề
Ví dụ các bạn xem tệp tin buildspec.yaml
của CodeBuild sau:
Trong đoạn code của buildspec.yaml trên có rất nhiều lỗi bảo mật:
- Thứ nhất là AWS Key để thẳng trong tệp tin
- Thứ hai là thông tin DB để ở dạng plain text
- Thứ ba là bạn dùng scp để chuyển tệp tin cấu hình password của DB ra ngoài internet
- Thứ tư là trong tệp tin này bạn có thể để lộ SSH Key, IP và user của Server
Mình nghĩ khá nhiều bạn mới thường sẽ mắc một trong các lỗi trên.
Giải pháp
Để tăng thêm độ bảo mật cho tệp tin buildspec.yaml
ta có thể dùng các cách sau:
- Thứ nhất dùng IAM Role gắn vào CodeBuild thay vì để AWS Key vào tệp tin
buildspec.yaml
. Nếu bạn sử dụng GitlabCI hoặc Jenkins thì dùng AWS STS - Thứ hai là dùng Parameter Store hoặc AWS Secrets Manager để chứa thông tin DB
- Thứ ba và tư thì thay vì dùng scp và ssh ta nên sử dụng AWS Systems Manager Run Command
DevOps VN
Theo dõi kênh tiktok của DevOps VN