Giaosucan's blog - Chia sẻ kiến thức theo cách bá đạo

Ticker

20/recent/ticker-posts

DevSecOps trên production - part 1

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).

Devsecops tương lai của an ninh bảo mật phần mềm

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

Infrastructure Security: A Beginner's Guide | Splunk

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

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

Đá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

Đăng nhận xét

0 Nhận xét