Dạo này hay làm việc nhiều trên production của mấy công ty tài chính nên ngoài việc Dev và Ops ra thì khách hàng yêu cầu một phần nữa đó là Security (Sec).
Món Sec này đúng là trước đây ít để ý, vì chỉ làm trên môi trường Dev/QA là chính, chỉ biết code build ok, deploy chạy ngon, pass hết test case là ăn ngon ngủ yên. Nhưng khi lên production thì câu chuyện không đơn giản như vậy
Chuyện công ty X
X là công ty cung cấp dịch vụ quản lý cuộc gọi thông minh cho các tổ chức tài chính. Các doanh nghiệp như ngân hàng, bảo hiểm có trung tâm call center để khách hàng gọi điện yêu cầu tư vấn, hỏi han hoặc chửi rủa khi có issue. X cung cấp giải pháp cho phép phân tích những cuộc gọi này dùng AI để thống kê nội dung cuộc gọi ( Hỏi thông tin, than phiền, abc xyz) để phân tích hành vi user.
Infra của X được build trên AWS, audio call được lưu trữ trên S3 và RDS. Do chứa thông tin KH nên các tổ chức tài chính đều yêu cầu về bảo mật cao. Vì thế quy trình DevOps phải thêm một phần Sec vào giữa
Infrasecurity scanning

Mỗi khi có khách hàng mới, X sẽ provision một dedicated infra lên AWS bằng terraform code, sau đó sẽ deploy application lên. Đó là quy trình CICD bình thường
Tuy nhiên, infra này cần được verify đảm bảo không có lỗ hổng bảo mật, vì trong quá trình implement tf code, developer có thể mắc lỗi như chưa set đủ security group, public rds server … Review code manually khó đảm bảo detect được hết lỗi. Công ty X đã mua service của Aquasecurity, để scan toàn bộ infra để tìm lỗi bảo mật.
Vậy cụ thể là scan cái gì
Scan terraform code, do infra provisioning bằng code, nến một số tool security được dùng để scan code. DevOps team dùng 1 tool là AquaTfsecs

Đây là một tool opensource nhưng hiệu quả scan terraform code rất tốt, có thể detect phần lớn lỗi như thiếu security group, public rds ,,, và đưa ra các suggestion cho developer. Tool này có thể install trực tiếp hoặc chạy qua docker đều ok
Ví dụ về lệnh scanning
docker run --rm -it -v "$(pwd):/src" aquasec/tfsec /src
Aquasecs sẽ scan toàn bộ terraform code ở folder hiện thời và output ra report
Result #13 LOW Function does not have tracing enabled.
─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
aws-sam-power-scheduler.tf:42-69
─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
42 ┌ resource "aws_lambda_function" "rds_power_scheduler" {
43 │ function_name = "${var.env}-${var.short_region}-lambda-rds-power-scheduler"
44 │
45 │ filename = "../../../service/lambda/rds-power-scheduler/rds-powerschedule.py.zip"
46 │ role = aws_iam_role.lambda_exec.arn
47 │
48 │ handler = "rds-powerschedule.lambda_handler"
49 │ runtime = "python3.8"
50 └
..
─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
ID aws-lambda-enable-tracing
Impact Without full tracing enabled it is difficult to trace the flow of logs
Resolution Enable tracing
More Information
- https://aquasecurity.github.io/tfsec/v1.27.6/checks/aws/lambda/enable-tracing/
- https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/lambda_function#mode
─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
timings
──────────────────────────────────────────
disk i/o 1.393091ms
parsing 20.211589299s
adaptation 7.900205ms
checks 904.956398ms
total 21.125838993s
counts
──────────────────────────────────────────
modules downloaded 3
modules processed 4
blocks processed 513
files read 31
results
──────────────────────────────────────────
passed 14
ignored 0
critical 9
high 3
medium 0
low 1
14 passed, 13 potential problem(s) detected.
Đính kèm cả link để reference
Đánh giá tool này khá hay và detect được nhiều lỗi, ngoài ra developer có thể customize tool để thêm bớt một số detect , còn không dùng sẵn default chạy cũng khá ổn.
Terraform scanning được tích hợp vào CICD pipeline để thực hiện check quality code trước khi được approved để provisioning infra
CVE vs CVSS
Bạn nào chuyên làm về bảo mật có thể sẽ biết về 2 khái niệm này. Hệ thống chấm điểm lỗ hổng bảo mật Common Vulnerabilities and Exposures – CVE. các lỗ hổng bảo mật được tiết lộ và phơi bày công khai. Mỗi CVE được đánh giá điểm theo Hệ thống chấm điểm lỗ hổng phổ biến (Common Vulnerability Scoring System – CVSS). Hệ thống này là một tiêu chuẩn để đánh giá mức độ nghiêm trọng của các lỗ hổng bảo mật theo 3 mức High, Medium, Low.
Nhiều lỗ hổng bảo mật lớn đã được công bố trên CVE vì dụ như lỗ hổng Log4Shell hay Zero-Day, các công cụ scan security infra hiện này đều sử dụng CVE để detect lỗi bảo mật
Công ty X infra trên AWS, nên sử dụng Inspector Report , công cụ scan để detect lỗ hổng bảo mật
Inspector Report scan instance, image, lỗ hổng và generate report
DevSecOps team dựa vào report được thực hiện fix, và update những bản patch để fix
Việc Patching được thực hiện bằng 2 cách
Patch Manager auto run việc patching trên những server đã được đánh tag sẵn (ví dụ tag auto-patch = true), thường là upgrade OS, cập nhật bản vá phần mềm…
Patching bằng cách run packer để tạo AMI mới (đã cập nhật patch) sau khi chạy pass hết test case thì launch ra server với bản patch AMI. Áp dụng cho server stateless (thường là các server thuộc autoscaling group)
Patching chạy theo schedule và qua CICD pipeline. Sau đó check inspector reports để đánh giá hiệu quả patching
Ngoài Infra security scanning , phần application scanning cũng được quan tâm docker image scanning, docker file scanning. static code scanning … Đón đọc phần sau
0 Nhận xét