Docker Scout: Cách quét ảnh container để phát hiện lỗ hổng bảo mật
Docker Scout phân tích ảnh container để phát hiện lỗ hổng và tạo Bảng kê Vật liệu Phần mềm. Nó cung cấp khả năng quan sát bảo mật tích hợp cho quy trình phát triển dựa trên Docker - không cần công cụ riêng hay thiết lập phức tạp.
Câu chuyện thường như thế này: Bạn đã xây dựng ảnh Docker, gắn thẻ và triển khai. Mọi thứ có vẻ ổn cho đến khi đội ngũ bảo mật gắn cờ các lỗ hổng trong một gói mà bạn còn không biết nó tồn tại. Tệ hơn nữa, bộ phận tuân thủ yêu cầu Bảng kê Vật liệu Phần mềm (SBOM) và bạn bối rối không biết làm sao xác định các phụ thuộc đi kèm ảnh của mình. Ảnh container có thể như chiếc hộp đen, và đó là vấn đề khi bạn chịu trách nhiệm cho những gì chạy trong môi trường sản xuất.
Docker Scout giúp bạn nhìn rõ bên trong ảnh container bằng cách quét lỗ hổng và tự động tạo SBOM. Nó được tích hợp sẵn trong Docker, nên bạn không cần cài hay học thêm công cụ riêng.
Trong hướng dẫn này, tôi sẽ chỉ cho bạn cách quét ảnh với Docker Scout và cách hiểu các báo cáo lỗ hổng mà nó tạo ra, để bạn biết khi nào nên sử dụng.
Nếu bạn mới dùng Docker, hãy xem bài viết về 18 lệnh Docker hàng đầu. Những lệnh này sẽ đưa bạn vào đúng quỹ đạo để xây dựng, chạy và quản lý container.
Docker Scout là gì?
Docker Scout là công cụ phân tích ảnh gốc của Docker, quét ảnh container của bạn để phát hiện lỗ hổng và tạo Bảng kê Vật liệu Phần mềm (SBOM).
Nó phân tích mọi thứ trong ảnh của bạn, từ các gói hệ điều hành nền tảng, phụ thuộc theo ngôn ngữ, đến thư viện ứng dụng. Sau đó đối chiếu với các cơ sở dữ liệu lỗ hổng đã biết. Bạn sẽ nhận được báo cáo cho biết gói nào có vấn đề bảo mật, mức độ nghiêm trọng ra sao và phiên bản nào khắc phục được.
Vì vậy thay vì dùng trình quét bên thứ ba hoặc chờ đội bảo mật gắn cờ sau khi triển khai, bạn có thể quét ảnh ngay tại nơi xây dựng. Scout chạy trong Docker Desktop, qua CLI và tích hợp với Docker Hub.
Vị trí của nó trong hệ sinh thái Docker như sau: Docker xây dựng và chạy container, Docker Hub lưu trữ, và Docker Scout cho bạn biết bên trong có gì. Hãy nhớ nó hiện là một phần của nền tảng, không phải tiện ích bổ sung riêng lẻ.
Docker Scout thay thế lệnh docker scan cũ, vốn dựa vào engine quét của Snyk. Scout sử dụng cơ sở dữ liệu lỗ hổng của chính Docker và cho bạn nhiều quyền kiểm soát hơn đối với quá trình quét. Nếu bạn vẫn dùng docker scan, nó đã bị loại bỏ - Scout là bản thay thế chính thức và đã có trong các phiên bản Docker Desktop gần đây.
Cài đặt và bật Docker Scout
Docker Scout được tích hợp sẵn trong Docker Desktop 4.17 trở lên, nên nếu bạn đang chạy phiên bản mới, bạn đã có sẵn.
Nó hoạt động qua Docker CLI và hiển thị trong giao diện Docker Desktop. Nếu bạn dùng Docker Desktop, Scout được bật mặc định - bạn có thể bắt đầu quét ảnh ngay.
Để kiểm tra Scout có sẵn trên hệ thống của bạn hay không, chạy lệnh sau:
Scout kéo siêu dữ liệu từ registry mà không tải về toàn bộ ảnh. Điều này cho phép bạn kiểm tra ảnh trước khi kéo về cục bộ.
Scan results for Postgres 18.1 image
Trong quá trình phân tích, Scout giải nén từng lớp, nhận diện các gói và phụ thuộc đã cài, rồi đối chiếu tất cả với cơ sở dữ liệu lỗ hổng. Nó theo dõi các gói từ hệ điều hành nền tảng (như gói apt trong ảnh dựa trên Ubuntu) và các phụ thuộc theo ngôn ngữ (như gói Python hoặc module Node).
Hiểu đầu ra
Scout nhóm lỗ hổng theo mức độ nghiêm trọng: Critical, High, Medium và Low.
Các lỗ hổng Critical và High cần được ưu tiên. Đây là các vấn đề đang bị khai thác hoặc lỗi nghiêm trọng có thể làm tổn hại hệ thống. Mức Medium quan trọng nhưng hiếm khi cần sửa ngay. Mức Low đáng theo dõi nhưng thường không chặn triển khai.
Mỗi lỗ hổng sẽ cho biết gói nào chứa vấn đề. Bạn sẽ thấy đầu ra như sau khi cuộn qua báo cáo:
Vulnerability report
Điều này cho bạn biết chính xác những gì dễ bị tấn công (openssl), phiên bản bạn đang chạy và phiên bản nào khắc phục. Scout cũng liên kết tới chi tiết CVE để bạn tự đọc thêm về lỗ hổng.
Thông tin quy kết gói cho biết nguồn gốc lỗ hổng - từ gói base image, phụ thuộc ứng dụng hay thư viện hệ thống. Điều này giúp bạn quyết định nên cập nhật base image, nâng cấp phụ thuộc trong mã hay chờ bản sửa từ upstream.
Dùng Docker Scout để tạo và xem SBOM
Bảng kê Vật liệu Phần mềm (SBOM) là danh mục đầy đủ mọi thứ bên trong ảnh container của bạn - mọi gói, thư viện và phụ thuộc.
Nó cho bạn biết chính xác những gì được đưa vào ảnh, đến tận số phiên bản cụ thể. Đội ngũ bảo mật dùng SBOM để theo dõi những gì chạy trong sản xuất, và các khung tuân thủ thường yêu cầu chúng.
Docker Scout tự động tạo SBOM khi bạn quét ảnh bằng các lệnh tôi đã chỉ ở phần trước. Nhắc lại:
Lệnh này xuất toàn bộ danh sách gói ra terminal. Scout phân tích các lớp ảnh và trích xuất siêu dữ liệu gói, rồi định dạng thành SBOM mà bạn có thể lưu hoặc chia sẻ.
Bạn có thể xuất SBOM ra tệp thay vì in lên màn hình:
Scout hỗ trợ hai định dạng SBOM tiêu chuẩn: SPDX (Software Package Data Exchange) và CycloneDX. Cả hai đều là tiêu chuẩn được dùng rộng rãi. SPDX phù hợp cho tuân thủ và rà soát pháp lý, còn CycloneDX tập trung vào các trường hợp bảo mật và theo dõi lỗ hổng.
Khi đã có tệp SBOM, bạn có thể chia sẻ với đội bảo mật, đưa vào các công cụ quét khác, hoặc lưu trữ cho các cuộc kiểm toán tuân thủ.
Tìm và hiểu CVE với Docker Scout
Docker Scout tìm lỗ hổng bằng cách đối chiếu các gói trong ảnh của bạn với cơ sở dữ liệu các vấn đề bảo mật đã biết.
Khi bạn chạy docker scout cves, Scout trích xuất mọi gói từ ảnh - gói hệ điều hành, thư viện theo ngôn ngữ, phụ thuộc ứng dụng - rồi kiểm tra từng gói với các bản ghi Common Vulnerabilities and Exposures (CVE). CVE là lỗ hổng bảo mật được công bố công khai với mã định danh duy nhất như CVE-2024-1234.
Scout lấy dữ liệu CVE từ nhiều nguồn:
National Vulnerability Database (NVD)
Khuyến cáo bảo mật từ các bản phân phối Linux
Cơ sở dữ liệu bảo mật theo ngôn ngữ cho Python, Node.js, Go và các hệ sinh thái khác
Điều này có nghĩa là Scout có thể phát hiện lỗ hổng cả trong các gói hệ điều hành của base image lẫn phụ thuộc của ứng dụng bạn.
Tuy vậy, điều quan trọng là bạn nhớ rằng việc phân tích hoạt động khác nhau tùy nơi lưu ảnh của bạn.
Với ảnh cục bộ (ảnh bạn đã build hoặc kéo về máy), Scout đọc các lớp ảnh trực tiếp từ Docker daemon. Nó giải nén từng lớp, nhận diện gói và chạy kiểm tra lỗ hổng cục bộ. Nhanh và không cần truy cập mạng tới chính ảnh.
Với ảnh từ xa trên Docker Hub hoặc các registry khác, Scout lấy manifest và siêu dữ liệu lớp mà không tải toàn bộ ảnh. Điều này cho phép bạn quét ảnh trước khi kéo về. Dữ liệu lỗ hổng vẫn đến từ cơ sở dữ liệu của Scout, nhưng phân tích ảnh dựa trên siêu dữ liệu từ registry.
Cả hai cách đều cho cùng thông tin về lỗ hổng. Chúng chỉ khác nhau ở nơi Scout đọc dữ liệu ảnh.
Hướng dẫn khắc phục và khuyến nghị base image
Khi Scout tìm thấy lỗ hổng có bản vá, nó hiển thị chính xác phiên bản khắc phục. Bạn sẽ thấy dòng như "Fixed in: 1.2.3" cạnh mỗi CVE. Điều này cho bạn biết liệu cần cập nhật gói, rebuild ảnh với base mới hơn, hay chờ bản sửa từ upstream.
Scout cũng đề xuất nâng cấp base image khi chuyển sang base mới hơn có thể loại bỏ lỗ hổng. Nếu bạn dùng python:3.13 và Scout phát hiện vấn đề trong các gói hệ điều hành nền tảng, nó có thể gợi ý nâng lên python:3.14 hoặc thậm chí phiên bản bản vá cụ thể hơn.
Các khuyến nghị này xuất hiện khi Scout phát hiện một thẻ base image khác có ít lỗ hổng hơn thẻ hiện tại của bạn. Gợi ý có thể hành động ngay - bạn chỉ cần sao chép thẻ mới vào Dockerfile và rebuild.
Vậy tại sao điều này quan trọng?
Base image chứa các gói hệ điều hành, thư viện hệ thống và runtime ngôn ngữ mà mọi thứ khác phụ thuộc vào. Một base image dễ bị tấn công đồng nghĩa mọi container bạn xây dựng từ nó đều thừa hưởng các lỗ hổng đó. Khi chọn base image tối giản và được bảo trì tích cực, bạn giảm bề mặt tấn công.
Các ảnh chính thức từ Docker Hub được cập nhật bảo mật thường xuyên, nhưng bạn vẫn cần rebuild ảnh để nhận các bản vá. Ví dụ, kéo python:3.13 hôm nay sẽ cho bộ gói khác so với kéo cách đây sáu tháng.
Dùng Docker Scout trong CI/CD
Các nhóm tích hợp Docker Scout vào pipeline CI để phát hiện lỗ hổng trước khi ảnh đến sản xuất.
Ý tưởng rất đơn giản: quét mọi ảnh như một phần của quy trình build, rồi fail build nếu xuất hiện lỗ hổng nghiêm trọng. Bạn tìm ra vấn đề trong giai đoạn phát triển thay vì sau khi triển khai. Hầu hết nhóm thiết lập Scout chạy tự động bất cứ khi nào ai đó đẩy Dockerfile mới hoặc cập nhật base image.
Pipeline thường kiểm tra hai điều:
Hồi quy lỗ hổng - So sánh ảnh mới với phiên bản trước. Nếu bản build mới giới thiệu nhiều lỗ hổng Critical hoặc High hơn bản trước, pipeline sẽ fail. Điều này ngăn bạn vô tình phát hành bảo mật tệ hơn cái đang chạy
Sai lệch chính sách - Xác minh ảnh của bạn đáp ứng tiêu chuẩn bảo mật. Bạn có thể có chính sách “không cho phép CVE mức Critical” hoặc “base image phải mới dưới 30 ngày”. Scout có thể tự động áp dụng các quy tắc này trong quy trình CI
Tích hợp với GitHub Actions, GitLab CI hoặc Jenkins về mặt khái niệm là như nhau. Bạn build ảnh, chạy docker scout cves trên đó, phân tích kết quả và quyết định pass hay fail pipeline dựa trên tiêu chí của bạn. Một số nhóm tích hợp Scout vào quy trình của container registry để quét ảnh ngay sau khi được đẩy lên.
Docker Scout so với các trình quét ảnh khác
Docker Scout không phải công cụ duy nhất. Nó cạnh tranh với các công cụ như Trivy và Snyk, nhưng mỗi công cụ nhắm tới quy trình làm việc khác nhau.
Trivy là trình quét mã nguồn mở chạy ở mọi nơi, từ máy cục bộ, pipeline CI đến cụm Kubernetes. Nó quét ảnh container, hệ thống tệp và kho Git. Trivy cho bạn nhiều linh hoạt về nơi và cách quét, và bạn không cần tài khoản Docker để dùng. Hãy coi nó như trình quét độc lập hoạt động tách khỏi hệ sinh thái Docker.
Snyk tập trung vào quy trình của nhà phát triển và tích hợp sâu với IDE, GitHub và các công cụ phát triển khác. Ngoài container, nó còn quét phụ thuộc ứng dụng, hạ tầng như mã, và mã nguồn. Snyk cũng đưa hướng dẫn khắc phục chi tiết và có thể mở pull request để sửa lỗ hổng. Nếu bạn cần bao phủ bảo mật toàn bộ ngăn xếp, không chỉ container, Snyk là lựa chọn hợp lý.
Docker Scout hoạt động tốt nhất khi bạn đã dùng Docker Desktop và Docker Hub. Tích hợp là gốc, không cần thiết lập bổ sung, không cần quản lý API key, và không phải học công cụ riêng. Scout quét ảnh được đẩy lên Docker Hub, và CLI là một phần cài đặt Docker của bạn.
Chọn Docker Scout nếu nhóm của bạn xây dựng và chạy container bằng công cụ Docker và bạn muốn khả năng quan sát bảo mật mà không thêm phức tạp. Chọn Trivy nếu bạn cần tùy chọn mã nguồn mở linh hoạt hoạt động ở bất cứ đâu. Chọn Snyk nếu bạn muốn bao phủ bảo mật toàn diện cho container, mã và hạ tầng với các bản sửa tự động.
Hạn chế thường gặp và điều cần biết
Docker Scout quét ảnh container, nhưng không giám sát những gì xảy ra sau khi bạn triển khai.
Nó phân tích ảnh tĩnh - các gói và tệp được build vào container. Nó không thể phát hiện vấn đề lúc chạy như tấn công leo thang đặc quyền, xâm nhập mạng hay tiến trình độc hại khởi chạy sau triển khai. Nếu bạn cần giám sát bảo mật lúc chạy, hãy dùng công cụ như Falco hoặc Sysdig để theo dõi hành vi container trong sản xuất.
Scout cũng không thay thế cho SAST (kiểm thử bảo mật ứng dụng tĩnh) hay DAST (kiểm thử bảo mật ứng dụng động). Công cụ SAST phân tích mã nguồn để tìm lỗi bảo mật trước khi build. Công cụ DAST kiểm thử ứng dụng đang chạy bằng cách mô phỏng tấn công. Scout chỉ xem xét các gói bên trong ảnh đã build - nó sẽ không phát hiện lỗ hổng trong logic ứng dụng của bạn hoặc lỗi cấu hình trong mã.
Điều Scout làm tốt là cho bạn khả năng quan sát những gì bên trong ảnh và hướng bạn tới cách khắc phục. Nó cho biết gói nào dễ bị tấn công, phiên bản nào khắc phục và base image nào giảm bề mặt tấn công. Điều này khiến Scout hữu ích cho kiểm tra bảo mật lúc build và theo dõi tuân thủ, nhưng bạn sẽ cần công cụ khác để bao phủ toàn bộ khía cạnh bảo mật.
Thực hành tốt khi dùng Docker Scout
Đây là danh sách kiểm tra bạn có thể dùng để khai thác tối đa Docker Scout.
Quét sớm trong vòng đời phát triển. Chạy Scout trên ảnh trong giai đoạn phát triển cục bộ, không chỉ trong CI hay trước khi triển khai. Phát hiện lỗ hổng sớm giúp bạn sửa khi ngữ cảnh còn mới và chi phí thay đổi thấp. Chờ đến sản xuất nghĩa là phải vá vội dưới áp lực.
So sánh ảnh theo thời gian để theo dõi xu hướng bảo mật. Scout có thể cho bạn biết bảo mật đang cải thiện hay tệ đi. Chạy quét trên mỗi lần build và so sánh kết quả. Nếu bản build mới giới thiệu nhiều lỗ hổng nghiêm trọng hơn bản trước, có điều gì đó thay đổi - có thể do cập nhật phụ thuộc hoặc chuyển base image. Bạn cần điều tra.
Xem phát hiện của Scout như tín hiệu ưu tiên, không phải rào cản tuyệt đối. Không phải lỗ hổng nào cũng cần hành động ngay. Một CVE mức thấp trong phụ thuộc phát triển mà bạn không dùng ở sản xuất có thể chờ. Một CVE mức nghiêm trọng trong dịch vụ công khai cần xử lý ngay. Dùng mức độ nghiêm trọng và ngữ cảnh gói của Scout để quyết định điều gì quan trọng cho triển khai cụ thể của bạn.
Kết hợp Scout với vệ sinh base image. Chọn base image tối giản, được bảo trì tích cực và cập nhật thường xuyên. Dùng python:3.14-slim thay cho python:3.14 giúp loại bỏ các gói không cần thiết. Rebuild ảnh hàng tháng để nhận bản vá trong lớp nền. Scout có thể cho bạn biết cái gì dễ bị tấn công, nhưng chọn base tốt sẽ ngăn nhiều lỗ hổng xuất hiện ngay từ đầu.
Kết luận
Docker Scout mang đến cách thực tế để bắt đầu hiểu những gì bên trong ảnh container của bạn.
Nó phù hợp với phát triển dựa trên Docker - không cần cài công cụ riêng, không cần thiết lập tài khoản ngoài những gì bạn đã dùng. Bạn chạy một lệnh, nhận báo cáo lỗ hổng và biết gói nào cần cập nhật.
Scout hoạt động tốt nhất như một phần của cách tiếp cận bảo mật rộng hơn, không phải lựa chọn duy nhất. Kết hợp nó với giám sát lúc chạy, phân tích mã nguồn và cập nhật base image định kỳ. Dùng nó để phát hiện lỗ hổng trong quá trình build, rồi bổ sung công cụ khác để bao phủ những gì xảy ra sau khi triển khai.
Nếu bạn đang tự hỏi Docker phù hợp với pipeline CI/CD cho machine learning như thế nào, hãy đăng ký khóa học CI/CD cho Machine Learning. Bạn sẽ có tất cả câu trả lời chỉ trong một buổi chiều.
Chuyên gia Khoa học Dữ liệu Cấp cao, làm việc tại Croatia. Tác giả Công nghệ Hàng đầu với hơn 700 bài viết đã xuất bản, đạt trên 10 triệu lượt xem. Tác giả cuốn sách Tự động hóa Machine Learning với TPOT.
Câu hỏi thường gặp về Docker Scout
Docker Scout có thể giúp tự động hóa quét lỗ hổng trong pipeline CI/CD như thế nào?⌄
Docker Scout tích hợp vào pipeline CI/CD bằng cách chạy quét tự động bất cứ khi nào bạn build ảnh mới. Bạn có thể cấu hình pipeline để fail các bản build giới thiệu lỗ hổng mức Critical hoặc High, ngăn ảnh không an toàn tới sản xuất. Scout kiểm tra hồi quy lỗ hổng và vi phạm chính sách, nên nhóm của bạn phát hiện vấn đề bảo mật trong quá trình build thay vì sau khi triển khai.
Sự khác biệt chính giữa Docker Scout và các công cụ quét container như Trivy hoặc Snyk là gì?⌄
Docker Scout được tích hợp trong Docker và không cần cài đặt riêng, rất thuận tiện cho các nhóm đã dùng Docker Desktop và Docker Hub. Trivy là trình quét mã nguồn mở chạy độc lập và hoạt động ở mọi nơi mà không cần tài khoản hay tích hợp với Docker. Snyk cung cấp phạm vi bao phủ rộng hơn trên container, mã nguồn và hạ tầng với gợi ý khắc phục tự động, nhưng cần đăng ký và thiết lập riêng.
Docker Scout tích hợp với các hệ thống bên thứ ba như GitHub hay JFrog Artifactory như thế nào?⌄
Docker Scout có thể được gọi từ GitHub Actions, GitLab CI hoặc các công cụ pipeline khác qua lệnh Docker CLI. Bạn chạy docker scout cves như một phần của quy trình build, rồi phân tích kết quả để quyết định pass hay fail pipeline. Với các registry như JFrog Artifactory, bạn có thể quét ảnh sau khi đẩy bằng cách tham chiếu từ xa, dù tích hợp phụ thuộc vào thiết lập registry và xác thực cụ thể của bạn.
Docker Scout có thể dùng để giám sát bảo mật container theo thời gian thực không?⌄
Không, Docker Scout chỉ quét ảnh container tĩnh, không phải container đang chạy. Nó phân tích những gì bên trong ảnh đã build trước hoặc sau triển khai, nhưng không giám sát hành vi lúc chạy như thực thi tiến trình, hoạt động mạng hay tấn công leo thang đặc quyền. Để giám sát bảo mật lúc chạy, bạn cần các công cụ chuyên dụng như Falco hoặc Sysdig theo dõi hành vi container trong môi trường sản xuất.
Lợi ích của việc dùng Docker Scout để quản lý bảo mật chuỗi cung ứng phần mềm là gì?⌄
Docker Scout tạo Bảng kê Vật liệu Phần mềm (SBOM) ghi lại mọi gói và phụ thuộc trong ảnh của bạn, mang đến khả năng quan sát hoàn chỉnh chuỗi cung ứng phần mềm. Điều này giúp đáp ứng yêu cầu tuân thủ, ứng phó sự cố và theo dõi hệ thống nào bị ảnh hưởng khi lỗ hổng mới được công bố. Scout cũng cho thấy lỗ hổng xuất phát từ đâu - base image, phụ thuộc ứng dụng hay thư viện hệ thống - để bạn lần theo nguồn gốc và sửa ở đúng cấp độ.
Tìm hiểu về Docker và khám phá tầm quan trọng của nó trong bộ công cụ của chuyên gia dữ liệu. Tìm hiểu về Docker container, Docker image và nhiều nội dung khác.
Câu chuyện thường như thế này: Bạn đã xây dựng ảnh Docker, gắn thẻ và triển khai. Mọi thứ có vẻ ổn cho đến khi đội ngũ bảo mật gắn cờ các lỗ hổng trong một gói mà bạn còn không biết nó tồn tại. Tệ hơn nữa, bộ phận tuân thủ yêu cầu Bảng kê Vật liệu Phần mềm (SBOM) và bạn bối rối không biết làm sao xác định các phụ thuộc đi kèm ảnh của mình. Ảnh container có thể như chiếc hộp đen, và đó là vấn đề khi bạn chịu trách nhiệm cho những gì chạy trong môi trường sản xuất.
Docker Scout giúp bạn nhìn rõ bên trong ảnh container bằng cách quét lỗ hổng và tự động tạo SBOM. Nó được tích hợp sẵn trong Docker, nên bạn không cần cài hay học thêm công cụ riêng.
Trong hướng dẫn này, tôi sẽ chỉ cho bạn cách quét ảnh với Docker Scout và cách hiểu các báo cáo lỗ hổng mà nó tạo ra, để bạn biết khi nào nên sử dụng.
Nếu bạn mới dùng Docker, hãy xem bài viết về 18 lệnh Docker hàng đầu. Những lệnh này sẽ đưa bạn vào đúng quỹ đạo để xây dựng, chạy và quản lý container.
Docker Scout là gì?
Docker Scout là công cụ phân tích ảnh gốc của Docker, quét ảnh container của bạn để phát hiện lỗ hổng và tạo Bảng kê Vật liệu Phần mềm (SBOM).
Nó phân tích mọi thứ trong ảnh của bạn, từ các gói hệ điều hành nền tảng, phụ thuộc theo ngôn ngữ, đến thư viện ứng dụng. Sau đó đối chiếu với các cơ sở dữ liệu lỗ hổng đã biết. Bạn sẽ nhận được báo cáo cho biết gói nào có vấn đề bảo mật, mức độ nghiêm trọng ra sao và phiên bản nào khắc phục được.
Vì vậy thay vì dùng trình quét bên thứ ba hoặc chờ đội bảo mật gắn cờ sau khi triển khai, bạn có thể quét ảnh ngay tại nơi xây dựng. Scout chạy trong Docker Desktop, qua CLI và tích hợp với Docker Hub.
Vị trí của nó trong hệ sinh thái Docker như sau: Docker xây dựng và chạy container, Docker Hub lưu trữ, và Docker Scout cho bạn biết bên trong có gì. Hãy nhớ nó hiện là một phần của nền tảng, không phải tiện ích bổ sung riêng lẻ.
Docker Scout thay thế lệnh
docker scancũ, vốn dựa vào engine quét của Snyk. Scout sử dụng cơ sở dữ liệu lỗ hổng của chính Docker và cho bạn nhiều quyền kiểm soát hơn đối với quá trình quét. Nếu bạn vẫn dùngdocker scan, nó đã bị loại bỏ - Scout là bản thay thế chính thức và đã có trong các phiên bản Docker Desktop gần đây.Cài đặt và bật Docker Scout
Docker Scout được tích hợp sẵn trong Docker Desktop 4.17 trở lên, nên nếu bạn đang chạy phiên bản mới, bạn đã có sẵn.
Nó hoạt động qua Docker CLI và hiển thị trong giao diện Docker Desktop. Nếu bạn dùng Docker Desktop, Scout được bật mặc định - bạn có thể bắt đầu quét ảnh ngay.
Để kiểm tra Scout có sẵn trên hệ thống của bạn hay không, chạy lệnh sau:
Bạn sẽ thấy đầu ra hiển thị phiên bản CLI của Scout và trạng thái plugin.
Docker scout version
Nếu lệnh hoạt động, bạn đã sẵn sàng quét ảnh.
Nếu gặp lỗi "command not found", phiên bản Docker của bạn quá cũ. Cập nhật Docker Desktop lên phiên bản mới nhất để dùng Docker Scout.
Quét một ảnh với Docker Scout
Chạy quét chỉ cần một lệnh, và đó là phần dễ. Phần có thể thách thức là hiểu những gì Scout tìm thấy.
Phân tích một ảnh
Bạn có thể chạy lệnh này để quét một ảnh cục bộ bằng cách truyền tên hoặc ID cho Docker Scout:
Scout phân tích các lớp ảnh, trích xuất thông tin gói và kiểm tra lỗ hổng đã biết. Quét hoàn tất trong vòng 30 giây đối với hầu hết ảnh.
Scan results for Python 3.14 image
Bạn cũng có thể quét các ảnh chưa có trên máy:
Scout kéo siêu dữ liệu từ registry mà không tải về toàn bộ ảnh. Điều này cho phép bạn kiểm tra ảnh trước khi kéo về cục bộ.
Scan results for Postgres 18.1 image
Trong quá trình phân tích, Scout giải nén từng lớp, nhận diện các gói và phụ thuộc đã cài, rồi đối chiếu tất cả với cơ sở dữ liệu lỗ hổng. Nó theo dõi các gói từ hệ điều hành nền tảng (như gói
apttrong ảnh dựa trên Ubuntu) và các phụ thuộc theo ngôn ngữ (như gói Python hoặc module Node).Hiểu đầu ra
Scout nhóm lỗ hổng theo mức độ nghiêm trọng: Critical, High, Medium và Low.
Các lỗ hổng Critical và High cần được ưu tiên. Đây là các vấn đề đang bị khai thác hoặc lỗi nghiêm trọng có thể làm tổn hại hệ thống. Mức Medium quan trọng nhưng hiếm khi cần sửa ngay. Mức Low đáng theo dõi nhưng thường không chặn triển khai.
Mỗi lỗ hổng sẽ cho biết gói nào chứa vấn đề. Bạn sẽ thấy đầu ra như sau khi cuộn qua báo cáo:
Vulnerability report
Điều này cho bạn biết chính xác những gì dễ bị tấn công (
openssl), phiên bản bạn đang chạy và phiên bản nào khắc phục. Scout cũng liên kết tới chi tiết CVE để bạn tự đọc thêm về lỗ hổng.Thông tin quy kết gói cho biết nguồn gốc lỗ hổng - từ gói base image, phụ thuộc ứng dụng hay thư viện hệ thống. Điều này giúp bạn quyết định nên cập nhật base image, nâng cấp phụ thuộc trong mã hay chờ bản sửa từ upstream.
Dùng Docker Scout để tạo và xem SBOM
Bảng kê Vật liệu Phần mềm (SBOM) là danh mục đầy đủ mọi thứ bên trong ảnh container của bạn - mọi gói, thư viện và phụ thuộc.
Nó cho bạn biết chính xác những gì được đưa vào ảnh, đến tận số phiên bản cụ thể. Đội ngũ bảo mật dùng SBOM để theo dõi những gì chạy trong sản xuất, và các khung tuân thủ thường yêu cầu chúng.
Docker Scout tự động tạo SBOM khi bạn quét ảnh bằng các lệnh tôi đã chỉ ở phần trước. Nhắc lại:
Lệnh này xuất toàn bộ danh sách gói ra terminal. Scout phân tích các lớp ảnh và trích xuất siêu dữ liệu gói, rồi định dạng thành SBOM mà bạn có thể lưu hoặc chia sẻ.
Bạn có thể xuất SBOM ra tệp thay vì in lên màn hình:
SBOM SPDX report
Scout hỗ trợ hai định dạng SBOM tiêu chuẩn: SPDX (Software Package Data Exchange) và CycloneDX. Cả hai đều là tiêu chuẩn được dùng rộng rãi. SPDX phù hợp cho tuân thủ và rà soát pháp lý, còn CycloneDX tập trung vào các trường hợp bảo mật và theo dõi lỗ hổng.
Bạn có thể chuyển định dạng bằng cờ
--format:SBOX CycloneDX report
Khi đã có tệp SBOM, bạn có thể chia sẻ với đội bảo mật, đưa vào các công cụ quét khác, hoặc lưu trữ cho các cuộc kiểm toán tuân thủ.
Tìm và hiểu CVE với Docker Scout
Docker Scout tìm lỗ hổng bằng cách đối chiếu các gói trong ảnh của bạn với cơ sở dữ liệu các vấn đề bảo mật đã biết.
Khi bạn chạy
docker scout cves, Scout trích xuất mọi gói từ ảnh - gói hệ điều hành, thư viện theo ngôn ngữ, phụ thuộc ứng dụng - rồi kiểm tra từng gói với các bản ghi Common Vulnerabilities and Exposures (CVE). CVE là lỗ hổng bảo mật được công bố công khai với mã định danh duy nhất như CVE-2024-1234.Scout lấy dữ liệu CVE từ nhiều nguồn:
Điều này có nghĩa là Scout có thể phát hiện lỗ hổng cả trong các gói hệ điều hành của base image lẫn phụ thuộc của ứng dụng bạn.
Tuy vậy, điều quan trọng là bạn nhớ rằng việc phân tích hoạt động khác nhau tùy nơi lưu ảnh của bạn.
Cả hai cách đều cho cùng thông tin về lỗ hổng. Chúng chỉ khác nhau ở nơi Scout đọc dữ liệu ảnh.
Hướng dẫn khắc phục và khuyến nghị base image
Khi Scout tìm thấy lỗ hổng có bản vá, nó hiển thị chính xác phiên bản khắc phục. Bạn sẽ thấy dòng như "Fixed in: 1.2.3" cạnh mỗi CVE. Điều này cho bạn biết liệu cần cập nhật gói, rebuild ảnh với base mới hơn, hay chờ bản sửa từ upstream.
Scout cũng đề xuất nâng cấp base image khi chuyển sang base mới hơn có thể loại bỏ lỗ hổng. Nếu bạn dùng
python:3.13và Scout phát hiện vấn đề trong các gói hệ điều hành nền tảng, nó có thể gợi ý nâng lênpython:3.14hoặc thậm chí phiên bản bản vá cụ thể hơn.Các khuyến nghị này xuất hiện khi Scout phát hiện một thẻ base image khác có ít lỗ hổng hơn thẻ hiện tại của bạn. Gợi ý có thể hành động ngay - bạn chỉ cần sao chép thẻ mới vào Dockerfile và rebuild.
Vậy tại sao điều này quan trọng?
Base image chứa các gói hệ điều hành, thư viện hệ thống và runtime ngôn ngữ mà mọi thứ khác phụ thuộc vào. Một base image dễ bị tấn công đồng nghĩa mọi container bạn xây dựng từ nó đều thừa hưởng các lỗ hổng đó. Khi chọn base image tối giản và được bảo trì tích cực, bạn giảm bề mặt tấn công.
Các ảnh chính thức từ Docker Hub được cập nhật bảo mật thường xuyên, nhưng bạn vẫn cần rebuild ảnh để nhận các bản vá. Ví dụ, kéo
python:3.13hôm nay sẽ cho bộ gói khác so với kéo cách đây sáu tháng.Dùng Docker Scout trong CI/CD
Các nhóm tích hợp Docker Scout vào pipeline CI để phát hiện lỗ hổng trước khi ảnh đến sản xuất.
Ý tưởng rất đơn giản: quét mọi ảnh như một phần của quy trình build, rồi fail build nếu xuất hiện lỗ hổng nghiêm trọng. Bạn tìm ra vấn đề trong giai đoạn phát triển thay vì sau khi triển khai. Hầu hết nhóm thiết lập Scout chạy tự động bất cứ khi nào ai đó đẩy Dockerfile mới hoặc cập nhật base image.
Pipeline thường kiểm tra hai điều:
Tích hợp với GitHub Actions, GitLab CI hoặc Jenkins về mặt khái niệm là như nhau. Bạn build ảnh, chạy
docker scout cvestrên đó, phân tích kết quả và quyết định pass hay fail pipeline dựa trên tiêu chí của bạn. Một số nhóm tích hợp Scout vào quy trình của container registry để quét ảnh ngay sau khi được đẩy lên.Docker Scout so với các trình quét ảnh khác
Docker Scout không phải công cụ duy nhất. Nó cạnh tranh với các công cụ như Trivy và Snyk, nhưng mỗi công cụ nhắm tới quy trình làm việc khác nhau.
Chọn Docker Scout nếu nhóm của bạn xây dựng và chạy container bằng công cụ Docker và bạn muốn khả năng quan sát bảo mật mà không thêm phức tạp. Chọn Trivy nếu bạn cần tùy chọn mã nguồn mở linh hoạt hoạt động ở bất cứ đâu. Chọn Snyk nếu bạn muốn bao phủ bảo mật toàn diện cho container, mã và hạ tầng với các bản sửa tự động.
Hạn chế thường gặp và điều cần biết
Docker Scout quét ảnh container, nhưng không giám sát những gì xảy ra sau khi bạn triển khai.
Nó phân tích ảnh tĩnh - các gói và tệp được build vào container. Nó không thể phát hiện vấn đề lúc chạy như tấn công leo thang đặc quyền, xâm nhập mạng hay tiến trình độc hại khởi chạy sau triển khai. Nếu bạn cần giám sát bảo mật lúc chạy, hãy dùng công cụ như Falco hoặc Sysdig để theo dõi hành vi container trong sản xuất.
Scout cũng không thay thế cho SAST (kiểm thử bảo mật ứng dụng tĩnh) hay DAST (kiểm thử bảo mật ứng dụng động). Công cụ SAST phân tích mã nguồn để tìm lỗi bảo mật trước khi build. Công cụ DAST kiểm thử ứng dụng đang chạy bằng cách mô phỏng tấn công. Scout chỉ xem xét các gói bên trong ảnh đã build - nó sẽ không phát hiện lỗ hổng trong logic ứng dụng của bạn hoặc lỗi cấu hình trong mã.
Điều Scout làm tốt là cho bạn khả năng quan sát những gì bên trong ảnh và hướng bạn tới cách khắc phục. Nó cho biết gói nào dễ bị tấn công, phiên bản nào khắc phục và base image nào giảm bề mặt tấn công. Điều này khiến Scout hữu ích cho kiểm tra bảo mật lúc build và theo dõi tuân thủ, nhưng bạn sẽ cần công cụ khác để bao phủ toàn bộ khía cạnh bảo mật.
Thực hành tốt khi dùng Docker Scout
Đây là danh sách kiểm tra bạn có thể dùng để khai thác tối đa Docker Scout.
Quét sớm trong vòng đời phát triển. Chạy Scout trên ảnh trong giai đoạn phát triển cục bộ, không chỉ trong CI hay trước khi triển khai. Phát hiện lỗ hổng sớm giúp bạn sửa khi ngữ cảnh còn mới và chi phí thay đổi thấp. Chờ đến sản xuất nghĩa là phải vá vội dưới áp lực.
So sánh ảnh theo thời gian để theo dõi xu hướng bảo mật. Scout có thể cho bạn biết bảo mật đang cải thiện hay tệ đi. Chạy quét trên mỗi lần build và so sánh kết quả. Nếu bản build mới giới thiệu nhiều lỗ hổng nghiêm trọng hơn bản trước, có điều gì đó thay đổi - có thể do cập nhật phụ thuộc hoặc chuyển base image. Bạn cần điều tra.
Xem phát hiện của Scout như tín hiệu ưu tiên, không phải rào cản tuyệt đối. Không phải lỗ hổng nào cũng cần hành động ngay. Một CVE mức thấp trong phụ thuộc phát triển mà bạn không dùng ở sản xuất có thể chờ. Một CVE mức nghiêm trọng trong dịch vụ công khai cần xử lý ngay. Dùng mức độ nghiêm trọng và ngữ cảnh gói của Scout để quyết định điều gì quan trọng cho triển khai cụ thể của bạn.
Kết hợp Scout với vệ sinh base image. Chọn base image tối giản, được bảo trì tích cực và cập nhật thường xuyên. Dùng
python:3.14-slimthay chopython:3.14giúp loại bỏ các gói không cần thiết. Rebuild ảnh hàng tháng để nhận bản vá trong lớp nền. Scout có thể cho bạn biết cái gì dễ bị tấn công, nhưng chọn base tốt sẽ ngăn nhiều lỗ hổng xuất hiện ngay từ đầu.Kết luận
Docker Scout mang đến cách thực tế để bắt đầu hiểu những gì bên trong ảnh container của bạn.
Nó phù hợp với phát triển dựa trên Docker - không cần cài công cụ riêng, không cần thiết lập tài khoản ngoài những gì bạn đã dùng. Bạn chạy một lệnh, nhận báo cáo lỗ hổng và biết gói nào cần cập nhật.
Scout hoạt động tốt nhất như một phần của cách tiếp cận bảo mật rộng hơn, không phải lựa chọn duy nhất. Kết hợp nó với giám sát lúc chạy, phân tích mã nguồn và cập nhật base image định kỳ. Dùng nó để phát hiện lỗ hổng trong quá trình build, rồi bổ sung công cụ khác để bao phủ những gì xảy ra sau khi triển khai.
Nếu bạn đang tự hỏi Docker phù hợp với pipeline CI/CD cho machine learning như thế nào, hãy đăng ký khóa học CI/CD cho Machine Learning. Bạn sẽ có tất cả câu trả lời chỉ trong một buổi chiều.