mirror of
https://github.com/MichaelCade/90DaysOfDevOps.git
synced 2024-12-22 16:23:11 +07:00
Merge pull request #520 from vntechies/main
This commit is contained in:
commit
a50c3c9672
@ -8,7 +8,7 @@ Chào mọi người và mừng trở lại với năm 2023 của #90DaysOfDevOp
|
||||
|
||||
Một năm nhanh chóng, chúng ta có khá nhiều con số ấn tượng ở dự án này, tôi nghĩ tôi đã đề cập ít nhất ở nơi đâu đó trong dự án, nhưng tôi nhấn mạnh ở mọi lúc rằng là bất kì nội dung nào mà giúp được hoặc thậm chí dù chỉ một người thì nó rất xứng đáng để làm, quả là đáng kinh ngạc khi có được những con số như này từ khi dự án chúng ta được đánh dấu (stars) đến khi được phân nhánh từ những người khác (folks).
|
||||
|
||||
![day1-1](/2023/images/day01-1.jpg)
|
||||
![day1-1](../../images/day01-1.jpg)
|
||||
|
||||
Cũng như, gần **500** người theo dõi dự án này.
|
||||
|
||||
@ -16,7 +16,7 @@ Cũng như, gần **500** người theo dõi dự án này.
|
||||
|
||||
Điều thứ hai, tôi rất muốn cảm ơn những người đã đóng góp vào dự án. Điều này đã làm nên một nơi mà ta có thể ghi chú cũng như học hỏi một cách minh bạch, có khi lại được bắt gặp lỗi sai chính tả cũng như ngữ pháp của tôi và giúp sửa nó. (Tôi chắc rằng điều tương tự sẽ diễn ra trong năm nay) Nhưng điều quan trọng và thú vị nhất là mọi người trong cộng đồng này đã bắt tay vào phiên dịch dự án này thành ngôn ngữ bản địa của họ! Thật là tuyệt vời khi nghĩ rằng nó đang đã đang diễn ra và giúp những người không nói được tiếng bản xứ học nhiều hơn về sức mạnh tuyệt vời của DevOps.
|
||||
|
||||
![day1-2](/2023/images/day01-2.png)
|
||||
![day1-2](../../images/day01-2.jpg)
|
||||
|
||||
Nếu bạn muốn tìm hiểu về những bạn đã đóng góp vào dự án, thì bạn có thể đến với [Contributors](https://github.com/MichaelCade/90DaysOfDevOps/blob/main/Contributors.md)
|
||||
|
||||
|
85
2023/vi/days/day02.md
Normal file
85
2023/vi/days/day02.md
Normal file
@ -0,0 +1,85 @@
|
||||
## Bức Tranh Toàn Cảnh: DevSecOps
|
||||
|
||||
Chào mừng đến với Ngày 2 của phiên bản 2023, trong module đầu tiên của 6 ngày tới, chúng ta sẽ xem xét tổng quan cơ bản về DevSecOps.
|
||||
|
||||
### DevSecOps là gì?
|
||||
|
||||
DevSecOps là một phương pháp phát triển phần mềm nhằm kết hợp các nhóm phát triển, bảo mật và vận hành để xây dựng và duy trì các ứng dụng phần mềm an toàn. Nó dựa trên các nguyên tắc của tích hợp liên tục, phân phối liên tục và triển khai liên tục, nhằm cung cấp các bản cập nhật và tính năng phần mềm nhanh chóng và thường xuyên hơn. Trong DevSecOps, bảo mật là một phần không thể thiếu của quy trình phát triển phần mềm, thay vì được xem xét cuối cùng. Điều này có nghĩa là kiểm tra bảo mật, giám sát và các biện pháp bảo mật khác được tích hợp vào vòng đời phát triển phần mềm (SDLC) từ đầu và trong mọi công đoạn thay vì được thêm vào sau. DevSecOps nhằm cải thiện sự hợp tác và giao tiếp giữa các nhóm phát triển, bảo mật và vận hành, để tạo ra một quy trình phát triển phần mềm hiệu quả và hiệu quả hơn.
|
||||
|
||||
### DevSecOps vs DevOps
|
||||
|
||||
Tôi sử dụng "vs" một cách nhẹ nhàng ở đây, nhưng nếu chúng ta nhìn lại phiên bản 2022 và mục tiêu của DevOps là cải thiện tốc độ, độ tin cậy và chất lượng của các bản phát hành phần mềm.
|
||||
|
||||
DevSecOps là một phần mở rộng của triết lý DevOps nhấn mạnh việc tích hợp các thực hành bảo mật vào quy trình phát triển phần mềm. Mục tiêu của DevSecOps là xây dựng các biện pháp bảo mật vào quy trình phát triển phần mềm để bảo mật là một phần không thể thiếu của phần mềm từ đầu, thay vì được xem xét cuối cùng. Điều này giúp giảm nguy cơ các lỗ hổng bảo mật trong phần mềm và làm cho việc xác định và sửa chữa bất kỳ vấn đề nào dễ dàng hơn.
|
||||
|
||||
DevOps tập trung vào việc cải thiện sự hợp tác và giao tiếp giữa các nhà phát triển và nhân viên vận hành để cải thiện tốc độ, độ tin cậy và chất lượng của các bản phát hành phần mềm, trong khi DevSecOps tập trung vào việc tích hợp các thực hành bảo mật vào quy trình phát triển phần mềm để giảm nguy cơ các lỗ hổng bảo mật và cải thiện tổng thể bảo mật của phần mềm.
|
||||
|
||||
### Bảo mật tự động
|
||||
|
||||
Bảo mật tự động đề cập đến việc sử dụng công nghệ để thực hiện các nhiệm vụ bảo mật mà không cần sự can thiệp của con người. Điều này có thể bao gồm các phần mềm bảo mật giám sát mạng để phát hiện các mối đe dọa và hành động để chặn chúng, hoặc các hệ thống sử dụng trí tuệ nhân tạo để phân tích cảnh quay bảo mật và xác định hoạt động bất thường. Các hệ thống bảo mật tự động được thiết kế để làm cho các quy trình bảo mật hiệu quả và hiệu quả hơn, và giúp giảm tải công việc cho nhân viên bảo mật.
|
||||
|
||||
Một thành phần chính của tất cả các thứ DevSecOps là khả năng tự động hóa nhiều nhiệm vụ khi phát triển và phân phối phần mềm, khi chúng ta thêm bảo mật từ đầu có nghĩa là chúng ta cũng cần xem xét khía cạnh tự động hóa của bảo mật.
|
||||
|
||||
### Bảo mật ở Quy mô Lớn (Containers và Microservices)
|
||||
|
||||
Chúng ta biết rằng quy mô và cơ sở hạ tầng động đã trở nên phổ biển nhờ container và microservices, chúng cũng thay đổi cách mà hầu hết các tổ chức hoạt động.
|
||||
|
||||
Đây cũng là lý do tại sao chúng ta phải đưa bảo mật tự động vào các nguyên tắc DevOps của mình để đảm bảo rằng các hướng dẫn bảo mật container cụ thể được đáp ứng.
|
||||
|
||||
Ý tôi là với các công nghệ cloud native, chúng ta không thể chỉ có các chính sách và tư thế bảo mật (security posture) tĩnh; mô hình bảo mật của chúng ta cũng phải động với khối lượng công việc trong tay và cách nó đang chạy.
|
||||
|
||||
Các nhóm DevOps sẽ cần bao gồm bảo mật tự động để bảo vệ môi trường và dữ liệu tổng thể, cũng như các quy trình tích hợp liên tục và phân phối liên tục.
|
||||
|
||||
Danh sách dưới đây được lấy từ một [bài viết blog của RedHat](https://www.redhat.com/en/topics/devops/what-is-devsecops)
|
||||
|
||||
- Chuẩn hóa và tự động hóa môi trường: Mỗi dịch vụ nên có quyền tối thiểu để giảm thiểu các kết nối và truy cập trái phép.
|
||||
|
||||
- Tập trung hóa khả năng nhận dạng người dùng và kiểm soát truy cập: Kiểm soát truy cập chặt chẽ và các cơ chế xác thực tập trung là cần thiết để bảo mật microservices vì xác thực được khởi tạo tại nhiều điểm.
|
||||
|
||||
- Cách ly (isolate) các container chạy microservices với nhau và mạng: Điều này bao gồm cả dữ liệu đang truyền và dữ liệu lưu trữ vì cả hai đều có thể là mục tiêu có giá trị cao cho các kẻ tấn công.
|
||||
|
||||
- Mã hóa dữ liệu giữa các ứng dụng và dịch vụ: Một nền tảng điều phối container với các tính năng bảo mật tích hợp giúp giảm thiểu khả năng truy cập trái phép.
|
||||
|
||||
- Giới thiệu các cổng API bảo mật: Các API bảo mật tăng cường khả năng ủy quyền và định tuyến. Bằng cách giảm thiểu các API bị lộ (expose), các tổ chức có thể giảm bề mặt tấn công (attack surface).
|
||||
|
||||
### Bảo mật đang là chủ đề HOT hiện nay
|
||||
|
||||
Một điều bạn sẽ thấy bất kể nền tảng của bạn là gì là bảo mật đang là keyword rất hot khắp ngành công nghiệp, điều này một phần là do các vi phạm bảo mật xuất hiện trên tin tức toàn cầu và các thương hiệu lớn bị ảnh hưởng bởi các lỗ hổng bảo mật hoặc theo các thực hành xấu tiềm năng cho phép các kẻ xấu vào mạng của các công ty này. Có thể nói hoặc ít nhất từ quan điểm của tôi, việc tạo phần mềm hiện nay dễ dàng và có thể đạt được hơn bao giờ hết. Nhưng trong việc tạo phần mềm, nó ngày càng bị phơi bày với các lỗ hổng và tương tự, điều này cho phép các kẻ xấu gây ra sự hỗn loạn và đôi khi giữ dữ liệu để đòi tiền chuộc hoặc đóng cửa các doanh nghiệp, gây ra sự hỗn loạn. Chúng ta đã thảo luận về DevSecOps là gì nhưng tôi nghĩ cũng đáng để khám phá khía cạnh an ninh mạng của vector tấn công (attack vector) và lý do tại sao chúng ta bảo vệ chuỗi cung ứng phần mềm của mình để giúp tránh các cuộc tấn công mạng này.
|
||||
|
||||
### An ninh mạng vs DevSecOps
|
||||
|
||||
Như tiêu đề, nó không thực sự là một cuộc đối đầu mà là sự khác biệt giữa hai chủ đề. Nhưng tôi nghĩ điều quan trọng là phải nêu ra điều này vì thực sự điều này sẽ giải thích tại sao bảo mật phải là một phần của quy trình, nguyên tắc và phương pháp DevOps.
|
||||
|
||||
An ninh mạng là thực hành bảo vệ các hệ thống máy tính và mạng khỏi các cuộc tấn công kỹ thuật số, trộm cắp và thiệt hại. Nó bao gồm việc xác định và giải quyết các lỗ hổng, triển khai các biện pháp bảo mật và giám sát các hệ thống để phát hiện các mối đe dọa.
|
||||
|
||||
DevSecOps, mặt khác, là sự kết hợp của các thực hành phát triển, bảo mật và vận hành. Đó là một triết lý nhằm tích hợp bảo mật vào quy trình phát triển, thay vì coi nó là một bước riêng biệt. Điều này bao gồm sự hợp tác giữa các nhóm phát triển, bảo mật và vận hành trong suốt vòng đời phát triển phần mềm (SDLC).
|
||||
|
||||
Một số điểm khác biệt chính giữa an ninh mạng và DevSecOps bao gồm:
|
||||
|
||||
**Tập trung**: An ninh mạng chủ yếu tập trung vào việc bảo vệ các hệ thống khỏi các mối đe dọa bên ngoài, trong khi DevSecOps tập trung vào việc tích hợp bảo mật vào quy trình phát triển.
|
||||
|
||||
**Phạm vi**: An ninh mạng bao gồm một loạt các chủ đề, bao gồm bảo mật mạng, bảo mật dữ liệu, bảo mật ứng dụng và nhiều hơn nữa. DevSecOps, mặt khác, tập trung cụ thể vào việc cải thiện bảo mật của phát triển và triển khai phần mềm.
|
||||
|
||||
**Cách tiếp cận**: An ninh mạng thường bao gồm việc triển khai các biện pháp bảo mật sau khi quy trình phát triển hoàn tất, trong khi DevSecOps bao gồm việc tích hợp bảo mật vào quy trình phát triển từ đầu.
|
||||
|
||||
**Hợp tác**: An ninh mạng thường bao gồm sự hợp tác giữa các nhóm IT và bảo mật, trong khi DevSecOps bao gồm sự hợp tác giữa các nhóm phát triển, bảo mật và vận hành.
|
||||
|
||||
## Tài liệu tham khảo
|
||||
|
||||
Trong suốt 90 ngày, chúng ta sẽ có một danh sách tài nguyên hàng ngày sẽ mang lại nội dung liên quan giúp tiếp tục các chủ đề và nơi bạn có thể tìm hiểu thêm.
|
||||
|
||||
- [TechWorld with Nana - What is DevSecOps? DevSecOps explained in 8 Mins](https://www.youtube.com/watch?v=nrhxNNH5lt0&list=PLsKoqAvws1pvg7qL7u28_OWfXwqkI3dQ1&index=1&t=19s)
|
||||
|
||||
- [What is DevSecOps?](https://www.youtube.com/watch?v=J73MELGF6u0&list=PLsKoqAvws1pvg7qL7u28_OWfXwqkI3dQ1&index=2&t=1s)
|
||||
|
||||
- [freeCodeCamp.org - Web App Vulnerabilities - DevSecOps Course for Beginners](https://www.youtube.com/watch?v=F5KJVuii0Yw&list=PLsKoqAvws1pvg7qL7u28_OWfXwqkI3dQ1&index=3&t=67s)
|
||||
|
||||
- [The Importance of DevSecOps and 5 Steps to Doing it Properly (DevSecOps EXPLAINED)](https://www.youtube.com/watch?v=KaoPQLyWq_g&list=PLsKoqAvws1pvg7qL7u28_OWfXwqkI3dQ1&index=4&t=13s)
|
||||
|
||||
- [Continuous Delivery - What is DevSecOps?](https://www.youtube.com/watch?v=NdvMUcWNlFw&list=PLsKoqAvws1pvg7qL7u28_OWfXwqkI3dQ1&index=5&t=6s)
|
||||
|
||||
- [Cloud Advocate - What is DevSecOps?](https://www.youtube.com/watch?v=a2y4Oj5wrZg&list=PLsKoqAvws1pvg7qL7u28_OWfXwqkI3dQ1&index=6)
|
||||
|
||||
- [Cloud Advocate - DevSecOps Pipeline CI Process - Real world example!](https://www.youtube.com/watch?v=ipe08lFQZU8&list=PLsKoqAvws1pvg7qL7u28_OWfXwqkI3dQ1&index=7&t=204s)
|
||||
|
||||
Hy vọng bài viết này đã mang lại cho bạn một cái nhìn tổng quan về những gì bạn có thể mong đợi từ module này và một số tài nguyên trên sẽ giúp cung cấp thêm kiến thức có chiều sâu cho chủ đề này. Trong bài đăng vào [Ngày 3](day03.md), chúng ta sẽ xem xét cách suy nghĩ của kẻ tấn công, đó cũng là lý do tại sao chúng ta phải bảo vệ ngay từ đầu.
|
94
2023/vi/days/day03.md
Normal file
94
2023/vi/days/day03.md
Normal file
@ -0,0 +1,94 @@
|
||||
## Suy nghĩ như một kẻ tấn công
|
||||
|
||||
Hôm qua chúng ta đã tìm hiểu về DevSecOps, trong bài viết này chúng ta sẽ xem xét một số đặc điểm của kẻ tấn công. Khi suy nghĩ về kẻ tấn công, tốt nhất chúng ta nên suy nghĩ như một kẻ tấn công.
|
||||
|
||||
### Đặc điểm của kẻ tấn công
|
||||
|
||||
Trước hết, tất cả các doanh nghiệp và phần mềm đều là mục tiêu tấn công của kẻ tấn công, không có nơi nào an toàn, chúng ta chỉ có thể làm cho nơi đó an toàn hơn và ít hấp dẫn hơn để bị tấn công.
|
||||
|
||||
![](../../images/day03-2.jpg)
|
||||
***[hình ảnh từ nguồn này](https://www.trainerize.me/articles/outrun-bear/)***
|
||||
|
||||
Khi suy nghĩ về điều đó, kẻ tấn công luôn là mối đe dọa liên tục!
|
||||
|
||||
Kẻ tấn công sẽ xác định các lỗ hổng bảo mật bằng cách thực hiện các cuộc tấn công theo một thứ tự cụ thể để truy cập, lấy dữ liệu và thành công trong nhiệm vụ của họ.
|
||||
|
||||
Kẻ tấn công có thể may mắn, nhưng họ chắc chắn sẽ làm việc trên các cuộc tấn công có mục tiêu.
|
||||
|
||||
Các cuộc tấn công có thể chậm và kiên trì hoặc nhanh chóng để đạt được sự xâm nhập. Không phải tất cả các cuộc tấn công đều giống nhau.
|
||||
|
||||
### Động cơ của kẻ tấn công
|
||||
|
||||
Là một nhóm DevOps, bạn sẽ cung cấp cơ sở hạ tầng, phần mềm và bảo vệ các môi trường này có thể trải dài trên nhiều đám mây, ảo hóa và container hóa trên các nền tảng.
|
||||
|
||||
Chúng ta phải xem xét các điều sau:
|
||||
|
||||
- **Làm thế nào** họ sẽ tấn công chúng ta?
|
||||
- **Tại sao** họ sẽ tấn công chúng ta?
|
||||
- **Chúng ta** có gì có giá trị đối với kẻ tấn công?
|
||||
|
||||
Động cơ của kẻ tấn công cũng sẽ khác nhau tùy thuộc vào kẻ tấn công. Ý tôi là nó có thể chỉ là để cho vui... Chúng ta có lẽ tất cả đã từng như vậy, trong trường học và chỉ đi quá sâu vào những thứ trên mạng để tìm thêm thông tin. Ai cũng sẽ có câu chuyện riêng để kể.
|
||||
|
||||
Nhưng như chúng ta đã thấy trên các phương tiện truyền thông, các cuộc tấn công thường liên quan đến tiền bạc, gian lận hoặc thậm chí là các cuộc tấn công chính trị vào các doanh nghiệp và tổ chức.
|
||||
|
||||
Trong không gian Kubernetes, chúng ta thậm chí đã thấy kẻ tấn công tận dụng và sử dụng sức mạnh tính toán của một môi trường để khai thác tiền điện tử.
|
||||
|
||||
Trọng tâm của cuộc tấn công này có thể sẽ là **DỮ LIỆU**
|
||||
|
||||
Dữ liệu của một công ty có thể sẽ cực kỳ có giá trị đối với công ty nhưng cũng có thể tiềm ẩn nguy cơ bị lộ ra ngoài. Đó là lý do tại sao chúng ta đặt rất nhiều sự nhấn mạnh vào việc bảo vệ dữ liệu này, đảm bảo rằng dữ liệu được bảo mật và mã hóa.
|
||||
|
||||
### Bản đồ tấn công
|
||||
|
||||
Bây giờ chúng ta đã có động cơ và một số đặc điểm của kẻ tấn công hoặc một nhóm kẻ tấn công, nếu đây là một cuộc tấn công có kế hoạch thì bạn sẽ cần một kế hoạch, bạn cần xác định những dịch vụ và dữ liệu nào bạn đang nhắm mục tiêu.
|
||||
|
||||
Một **bản đồ tấn công** là một biểu diễn trực quan của một cuộc tấn công vào mạng máy tính. Nó hiển thị các giai đoạn khác nhau của cuộc tấn công, các công cụ và kỹ thuật được sử dụng bởi kẻ tấn công, và các điểm vào và ra khỏi mạng. Bản đồ tấn công có thể được sử dụng để phân tích chi tiết các cuộc tấn công trước đây, xác định các lỗ hổng trong mạng, và lập kế hoạch phòng thủ chống lại các cuộc tấn công trong tương lai. Chúng cũng có thể được sử dụng để truyền đạt thông tin về một cuộc tấn công cho các bên liên quan không chuyên về kỹ thuật, chẳng hạn như các giám đốc điều hành hoặc đội ngũ pháp lý.
|
||||
|
||||
Bạn có thể thấy từ mô tả trên rằng một bản đồ tấn công nên được tạo ra từ cả hai phía hoặc cả hai đội (về phía đội ngũ, đây là điều mà tôi sẽ đề cập trong một bài viết sau).
|
||||
|
||||
Nếu bạn tạo một bản đồ tấn công mạng gia đình hoặc doanh nghiệp của bạn, một số điều bạn muốn hiểu rõ sẽ là:
|
||||
|
||||
- Biểu diễn đồ họa của ứng dụng của bạn bao gồm tất cả các luồng giao tiếp và công nghệ đang được sử dụng.
|
||||
|
||||
- Một danh sách các lỗ hổng tiềm năng và các khu vực có thể bị tấn công.
|
||||
|
||||
- Xem xét tính bảo mật, tính toàn vẹn và tính khả dụng cho mỗi kết nối/tương tác trong ứng dụng.
|
||||
|
||||
- Lập bản đồ các cuộc tấn công/lỗ hổng.
|
||||
|
||||
Một bản đồ tấn công có thể trông giống như thế này với giải thích các số đại diện cho điều gì.
|
||||
|
||||
![](../../images/day03-1.png)
|
||||
|
||||
Từ bản đồ này, chúng ta có thể xem xét có thể có một cuộc tấn công từ chối dịch vụ hoặc một cuộc tấn công từ nội bộ và truy cập vào S3 bucket để ngăn ứng dụng lưu trữ dữ liệu hoặc gây ra việc lưu trữ dữ liệu xấu.
|
||||
|
||||
Bản đồ này không bao giờ được hoàn thiện, giống như ứng dụng của bạn liên tục tiến lên thông qua phản hồi, bản đồ tấn công này cũng cần được kiểm tra, điều này cung cấp phản hồi và từ đó tăng cường tư thế bảo mật chống lại các cuộc tấn công này. Bạn có thể gọi đây là "Phản hồi Liên tục" trong vòng phản hồi bảo mật.
|
||||
|
||||
Ở mức tối thiểu, chúng ta nên tuân theo mô hình tốt, tốt hơn, tốt nhất để cải thiện tư thế bảo mật.
|
||||
|
||||
- **Tốt** - Xác định các ràng buộc thiết kế bảo mật và các biện pháp kiểm soát cần được xây dựng vào phần mềm để giảm thiểu một cuộc tấn công.
|
||||
|
||||
- **Tốt hơn** - Ưu tiên và xây dựng bảo mật cho các vấn đề được phát hiện sau này trong chu kỳ phần mềm.
|
||||
|
||||
- **Tốt nhất** - Tích hợp tự động hóa vào triển khai kịch bản để phát hiện các vấn đề, kiểm tra đơn vị, kiểm tra bảo mật, kiểm tra hộp đen.
|
||||
|
||||
Bảo mật là một ràng buộc thiết kế (design constraint) - mặc dù là một ràng buộc bất tiện.
|
||||
|
||||
## Tài liệu tham khảo
|
||||
|
||||
- [devsecops.org](https://www.devsecops.org/)
|
||||
|
||||
- [TechWorld with Nana - What is DevSecOps? DevSecOps explained in 8 Mins](https://www.youtube.com/watch?v=nrhxNNH5lt0&list=PLsKoqAvws1pvg7qL7u28_OWfXwqkI3dQ1&index=1&t=19s)
|
||||
|
||||
- [What is DevSecOps?](https://www.youtube.com/watch?v=J73MELGF6u0&list=PLsKoqAvws1pvg7qL7u28_OWfXwqkI3dQ1&index=2&t=1s)
|
||||
|
||||
- [freeCodeCamp.org - Web App Vulnerabilities - DevSecOps Course for Beginners](https://www.youtube.com/watch?v=F5KJVuii0Yw&list=PLsKoqAvws1pvg7qL7u28_OWfXwqkI3dQ1&index=3&t=67s)
|
||||
|
||||
- [The Importance of DevSecOps and 5 Steps to Doing it Properly (DevSecOps EXPLAINED)](https://www.youtube.com/watch?v=KaoPQLyWq_g&list=PLsKoqAvws1pvg7qL7u28_OWfXwqkI3dQ1&index=4&t=13s)
|
||||
|
||||
- [Continuous Delivery - What is DevSecOps?](https://www.youtube.com/watch?v=NdvMUcWNlFw&list=PLsKoqAvws1pvg7qL7u28_OWfXwqkI3dQ1&index=5&t=6s)
|
||||
|
||||
- [Cloud Advocate - What is DevSecOps?](https://www.youtube.com/watch?v=a2y4Oj5wrZg&list=PLsKoqAvws1pvg7qL7u28_OWfXwqkI3dQ1&index=6)
|
||||
|
||||
- [Cloud Advocate - DevSecOps Pipeline CI Process - Real world example!](https://www.youtube.com/watch?v=ipe08lFQZU8&list=PLsKoqAvws1pvg7qL7u28_OWfXwqkI3dQ1&index=7&t=204s)
|
||||
|
||||
Hẹn gặp lại vào [ngày 4](day04.md)
|
83
2023/vi/days/day04.md
Normal file
83
2023/vi/days/day04.md
Normal file
@ -0,0 +1,83 @@
|
||||
## <span style="color:red">Đội Đỏ</span> và <span style="color:blue">Đội Xanh</span>
|
||||
|
||||
Một điều tôi đã đề cập trong buổi trước, là việc nhắc đến các đội <span style="color:red">**Đỏ**</span> và <span style="color:blue">**Xanh**</span>. Trong lĩnh vực bảo mật, các đội <span style="color:red">**Đỏ**</span> và <span style="color:blue">**Xanh**</span> hoạt động như những kẻ tấn công và người phòng thủ để cải thiện tư thế bảo mật của tổ chức.
|
||||
|
||||
Cả hai đội đều làm việc để cải thiện tư thế bảo mật của tổ chức nhưng theo những cách khác nhau.
|
||||
|
||||
Đội <span style="color:red">**Đỏ**</span> có vai trò của kẻ tấn công bằng cách cố gắng tìm ra các lỗ hổng trong mã hoặc cơ sở hạ tầng và cố gắng vượt qua các biện pháp phòng thủ an ninh mạng.
|
||||
|
||||
Đội <span style="color:blue">**Xanh**</span> bảo vệ chống lại những cuộc tấn công đó và phản ứng khi có sự cố xảy ra.
|
||||
|
||||
![](../../images/day04-2.jpg)
|
||||
***[hình ảnh từ nguồn này](https://hackernoon.com/introducing-the-infosec-colour-wheel-blending-developers-with-red-and-blue-security-teams-6437c1a07700)***
|
||||
|
||||
### Lợi ích
|
||||
|
||||
Một cách rất tốt để hiểu và cải thiện tư thế bảo mật của công ty là thực hiện các bài tập này giữa các đội <span style="color:red">**Đỏ**</span> và <span style="color:blue">**Xanh**</span>. Toàn bộ ý tưởng là kịch bản này nhằm mô phỏng một cuộc tấn công thực sự. Một số lĩnh vực mà phương pháp này sẽ giúp ích bao gồm:
|
||||
|
||||
- Các lỗ hổng
|
||||
- Củng cố an ninh mạng
|
||||
- Tăng cường kinh nghiệm trong việc phát hiện và cô lập các cuộc tấn công
|
||||
- Xây dựng các kế hoạch phản ứng chi tiết
|
||||
- Nâng cao nhận thức về an ninh của toàn công ty
|
||||
|
||||
### <span style="color:red">Đội Đỏ</span>
|
||||
|
||||
NIST (Viện Tiêu chuẩn và Công nghệ Quốc gia) miêu tả một đội <span style="color:red">**Đỏ**</span> như sau:
|
||||
|
||||
“một nhóm người được ủy quyền và tổ chức để mô phỏng khả năng tấn công hoặc khai thác của đối thủ tiềm năng nhằm vào tình trạng bảo mật của doanh nghiệp.”
|
||||
|
||||
Họ đóng vai trò là kẻ tấn công trong kịch bản hoặc mô phỏng cuộc tấn công.
|
||||
|
||||
Khi chúng ta nói về cả đội <span style="color:red">**Đỏ**</span> và <span style="color:blue">**Xanh**</span>, có thể nó rộng hơn quy trình DevSecOps và các nguyên tắc của vòng đời phần mềm, nhưng biết điều này sẽ không gây hại và các thực hành từ DevSecOps sẽ đảm bảo rằng bạn có một tư thế bảo mật tốt hơn.
|
||||
|
||||
Đội <span style="color:red">**Đỏ**</span> được giao nhiệm vụ suy nghĩ như kẻ tấn công mà chúng ta đã đề cập trong buổi trước. Hãy nghĩ về kỹ thuật xã hội và bao gồm các đội rộng hơn trong doanh nghiệp để thao túng và truy cập vào mạng và dịch vụ.
|
||||
|
||||
Một yếu tố cơ bản của đội <span style="color:red">**Đỏ**</span> là hiểu về phát triển phần mềm. Hiểu và biết cách các ứng dụng được xây dựng, bạn sẽ có thể xác định các điểm yếu có thể có, sau đó viết các chương trình của bạn để cố gắng truy cập và khai thác. Ngoài ra, bạn có thể đã nghe thuật ngữ "kiểm thử xâm nhập" hoặc "kiểm thử pen", mục tiêu tổng thể của đội <span style="color:red">**Đỏ**</span> là xác định và cố gắng khai thác các lỗ hổng đã biết trong một môi trường. Với sự gia tăng của phần mềm mã nguồn mở, đây là một lĩnh vực khác mà tôi muốn đề cập trong vài buổi tới.
|
||||
|
||||
### <span style="color:blue">Đội Xanh</span>
|
||||
|
||||
NIST (Viện Tiêu chuẩn và Công nghệ Quốc gia) miêu tả Đội <span style="color:blue">**Xanh**</span> như sau:
|
||||
|
||||
“nhóm chịu trách nhiệm bảo vệ việc sử dụng hệ thống thông tin của doanh nghiệp bằng cách duy trì tư thế bảo mật của nó chống lại một nhóm kẻ tấn công giả lập.”
|
||||
|
||||
Đội <span style="color:blue">**Xanh**</span> đóng vai trò phòng thủ, họ sẽ phân tích tư thế bảo mật hiện tại trong doanh nghiệp và sau đó thực hiện các hành động để cải thiện điều đó nhằm ngăn chặn các cuộc tấn công từ bên ngoài. Trong đội <span style="color:blue">**Xanh**</span>, bạn cũng sẽ tập trung vào việc giám sát liên tục (một điều chúng tôi đã đề cập vào phiên bản trước liên quan đến DevOps) để giám sát các vi phạm và phản ứng khi chúng xảy ra.
|
||||
|
||||
Là một phần của đội <span style="color:blue">**Xanh**</span>, bạn sẽ phải hiểu các tài sản mà bạn đang bảo vệ và cách tốt nhất để bảo vệ chúng. Trong bối cảnh CNTT ngày nay, chúng ta có rất nhiều lựa chọn đa dạng để chạy các khối công việc, ứng dụng và dữ liệu của mình.
|
||||
|
||||
- Đánh giá Rủi ro - thông qua các hình thức đánh giá rủi ro sẽ giúp bạn hiểu rõ những tài sản quan trọng nhất trong doanh nghiệp là gì.
|
||||
|
||||
- Threat Intelligence - Những mối đe dọa nào đang tồn tại? Có hàng ngàn lỗ hổng có thể không có giải pháp, làm thế nào bạn có thể giảm thiểu rủi ro của những dịch vụ đó mà không làm tổn hại đến trường hợp sử dụng và nhu cầu kinh doanh?
|
||||
|
||||
### Bánh xe màu cho an ninh mạng
|
||||
|
||||
Khi an ninh mạng ngày càng trở nên quan trọng với tất cả các thương hiệu lớn bị tấn công, cần có nhiều hơn chỉ các đội <span style="color:red">**Đỏ**</span> và <span style="color:blue">**Xanh**</span> khi nói đến bảo mật trong một doanh nghiệp.
|
||||
|
||||
![](../../images/day04-1.png)
|
||||
***[hình ảnh từ nguồn này](https://hackernoon.com/introducing-the-infosec-colour-wheel-blending-developers-with-red-and-blue-security-teams-6437c1a07700)***
|
||||
|
||||
- Đội <span style="color:yellow">**Vàng**</span> là những người phát triển của chúng ta, các kỹ sư và nhà phát triển phát triển các hệ thống và ứng dụng bảo mật.
|
||||
|
||||
"Chúng ta có các đội <span style="color:red">**Đỏ**</span> và <span style="color:blue">**Xanh**</span> như chúng ta luôn có, nhưng bây giờ với sự xuất hiện của đội <span style="color:yellow">**Vàng**</span>, chúng ta có thể có các đội màu thứ cấp (Cam, Xanh Lá và Tím) chuyên về việc kết hợp kỹ năng giữa kẻ tấn công, người phòng thủ và lập trình viên - làm cho mã an toàn hơn và tổ chức an toàn hơn."
|
||||
|
||||
Đoạn trích trên được lấy từ tài nguyên hàng đầu được liệt kê ở cuối bài viết.
|
||||
<span style="color:red">**Đỏ**</span>, <span style="color:blue">**Xanh**</span>, <span style="color:yellow">**Vàng**</span> là các màu cơ bản, kết hợp chúng và chúng ta bắt đầu hiểu được các màu khác hoặc màu thứ cấp xuất hiện như thế nào, một lần nữa, một giải thích rất dễ hiểu trong liên kết đầu tiên.
|
||||
|
||||
- <span style="color:purple">**Đội Tím**</span> - Đội đặc biệt! Nếu bạn kết hợp <span style="color:blue">**Xanh**</span> và <span style="color:red">**Đỏ**</span>, bạn sẽ có <span style="color:purple">**Tím**</span>. Nếu bạn tích hợp phòng thủ với tấn công và bạn cộng tác và chia sẻ kiến thức giữa các đội, bạn sẽ cung cấp một tư thế bảo mật tốt hơn tổng thể.
|
||||
|
||||
- <span style="color:green">**Đội Xanh Lá**</span> - Vòng phản hồi, đội <span style="color:green">**Xanh Lá**</span> sẽ lấy thông tin từ đội <span style="color:blue">**Xanh**</span> và làm việc chặt chẽ với đội <span style="color:yellow">**Vàng**</span> để hiệu quả hơn. Kết hợp <span style="color:blue">**Xanh**</span> và <span style="color:green">**Xanh Lá**</span> và bạn sẽ có gì? <span style="color:purple">**Tím**</span>?
|
||||
|
||||
- <span style="color:orange">**Đội Cam**</span> - Giống như đội <span style="color:green">**Xanh Lá**</span> làm việc với đội <span style="color:blue">**Xanh**</span> để phản hồi, đội <span style="color:orange">**Cam**</span> làm việc với đội <span style="color:red">**Đỏ**</span> và truyền đạt những gì họ đã học được cho đội <span style="color:yellow">**Vàng**</span> để xây dựng bảo mật tốt hơn vào mã của họ.
|
||||
|
||||
Khi tôi bắt đầu nghiên cứu về điều này, tôi nhận ra rằng có thể tôi đang đi xa khỏi các chủ đề DevOps, nhưng xin hỏi bất kỳ ai trong lĩnh vực DevSecOps, điều này có hữu ích không? đúng không? và bạn có điều gì muốn bổ sung không?
|
||||
|
||||
Rõ ràng là trong suốt quá trình, chúng tôi có kế hoạch đi sâu vào các chi tiết cụ thể hơn về DevSecOps và các giai đoạn khác nhau, vì vậy tôi đã cẩn thận để không bao phủ những lĩnh vực sẽ được đề cập trong các buổi học sau.
|
||||
|
||||
Cũng xin vui lòng thêm bất kỳ tài liệu tham khảo bổ sung nào.
|
||||
|
||||
## Tài liệu tham khảo
|
||||
|
||||
- [Introducing the InfoSec colour wheel — blending developers with red and blue security teams.](https://hackernoon.com/introducing-the-infosec-colour-wheel-blending-developers-with-red-and-blue-security-teams-6437c1a07700)
|
||||
|
||||
Hẹn gặp lại vào [ngày 5](day05.md).
|
||||
|
57
2023/vi/days/day05.md
Normal file
57
2023/vi/days/day05.md
Normal file
@ -0,0 +1,57 @@
|
||||
## Bảo mật mã nguồn mở
|
||||
|
||||
Phần mềm mã nguồn mở đã trở nên phổ biến trong vài năm qua nhờ vào tính cộng tác và cộng đồng/công khai của nó.
|
||||
|
||||
Thuật ngữ Mã nguồn mở đề cập đến phần mềm trong phạm vi công cộng mà mọi người có thể tự do sử dụng, sửa đổi và chia sẻ.
|
||||
|
||||
Lý do chính cho sự gia tăng này là tốc độ tăng cường mã độc quyền được phát triển nội bộ và điều này có thể rút ngắn thời gian ra mắt sản phẩm. Điều này có nghĩa là việc tận dụng OSS có thể tăng tốc phát triển ứng dụng và giúp đưa sản phẩm thương mại của bạn ra thị trường nhanh hơn.
|
||||
|
||||
### Bảo mật mã nguồn mở là gì?
|
||||
|
||||
Bảo mật mã nguồn mở đề cập đến việc đảm bảo an toàn và bảo mật cho các hệ thống máy tính và mạng sử dụng phần mềm mã nguồn mở. Như đã đề cập ở trên, phần mềm mã nguồn mở là phần mềm có sẵn miễn phí để sử dụng, sửa đổi và phân phối, và thường được phát triển bởi một cộng đồng tình nguyện viên. Tuy nhiên, có sự tham gia lớn từ các nhà cung cấp phần mềm lớn cũng đóng góp trở lại cho mã nguồn mở, bạn chỉ cần nhìn vào kho lưu trữ Kubernetes để thấy những nhà cung cấp nào đang đầu tư vào đó.
|
||||
|
||||
Vì phần mềm mã nguồn mở có sẵn miễn phí, nó có thể được sử dụng và nghiên cứu rộng rãi, điều này có thể giúp cải thiện bảo mật của nó. Tuy nhiên, điều quan trọng là phải đảm bảo rằng phần mềm mã nguồn mở được sử dụng một cách có trách nhiệm và bất kỳ lỗ hổng nào cũng được giải quyết kịp thời để duy trì bảo mật của nó.
|
||||
|
||||
### Hiểu về bảo mật chuỗi cung ứng OSS
|
||||
|
||||
Thông thường tôi sẽ ghi lại những phát hiện của mình dựa trên một video dài hơn thành một đoạn văn ở đây nhưng vì video này dài 10 phút nên tôi nghĩ rằng hợp lý khi liên kết tài nguyên ở đây [Hiểu về bảo mật chuỗi cung ứng mã nguồn mở](https://www.youtube.com/watch?v=pARGj6j0-ZY)
|
||||
|
||||
Dù là sản phẩm thương mại tận dụng OSS hay dự án OSS sử dụng các gói hoặc mã OSS khác, chúng ta phải có nhận thức từ trên xuống dưới và cung cấp khả năng hiển thị tốt hơn giữa các dự án.
|
||||
|
||||
### 3 A của bảo mật OSS
|
||||
|
||||
Một tài nguyên khác mà tôi thấy hữu ích ở đây từ IBM, sẽ được liên kết bên dưới trong phần tài nguyên.
|
||||
|
||||
- **Assess - Đánh giá** - Xem xét sức khỏe của dự án, kho lưu trữ hoạt động như thế nào, các nhà bảo trì phản hồi ra sao? Nếu những điều này cho thấy dấu hiệu xấu, thì bạn sẽ không hài lòng về bảo mật của dự án.
|
||||
|
||||
Ở giai đoạn này, chúng ta cũng có thể kiểm tra mô hình bảo mật, đánh giá mã, xác thực dữ liệu và phạm vi kiểm tra bảo mật. Dự án xử lý CVE như thế nào?
|
||||
|
||||
Dự án này có những dependencies nào? Khám phá sức khỏe của những dependencies này vì bạn cần đảm bảo toàn bộ stack là tốt.
|
||||
|
||||
- **Adopt - Áp dụng** - Nếu bạn sẽ sử dụng nó trong phần mềm của mình hoặc như một ứng dụng độc lập trong stack của riêng bạn, ai sẽ quản lý và duy trì nó? Đặt một số chính sách về người sẽ giám sát dự án và hỗ trợ cộng đồng.
|
||||
|
||||
- **Act - Hành động** - Bảo mật là trách nhiệm của mọi người, không chỉ của các nhà bảo trì, với tư cách là người dùng, bạn cũng nên hành động và hỗ trợ dự án.
|
||||
|
||||
### Lỗ hổng Log4j
|
||||
|
||||
Đầu năm 2022, chúng ta đã có một lỗ hổng gây chú ý lớn (Log4j (CVE-2021-44228) RCE Vulnerability)
|
||||
|
||||
Log4j là một thư viện rất phổ biến để ghi nhật ký trong Java. Lỗ hổng này sẽ ảnh hưởng đến hàng triệu ứng dụng dựa trên Java.
|
||||
|
||||
Một kẻ tấn công có thể sử dụng lỗ hổng này trong ứng dụng để truy cập vào hệ thống.
|
||||
|
||||
Hai điều lớn tôi đã đề cập,
|
||||
|
||||
- **hàng triệu** ứng dụng sẽ sử dụng gói này.
|
||||
- **kẻ tấn công** có thể tận dụng điều này để truy cập hoặc cài đặt phần mềm độc hại vào môi trường.
|
||||
|
||||
Lý do tôi nêu ra điều này là bảo mật không bao giờ dừng lại, sự gia tăng của việc áp dụng mã nguồn mở đã tăng cường attack vector này trên các ứng dụng, và đây là lý do tại sao cần có một nỗ lực tổng thể về bảo mật từ ngày đầu tiên.
|
||||
|
||||
## Tài liệu tham khảo
|
||||
|
||||
- [Open Source Security Foundation](https://openssf.org/)
|
||||
- [Snyk - State of open source security 2022](https://snyk.io/reports/open-source-security/)
|
||||
- [IBM - The 3 A's of Open Source Security](https://www.youtube.com/watch?v=baZH6CX6Zno)
|
||||
- [Log4j (CVE-2021-44228) RCE Vulnerability Explained](https://www.youtube.com/watch?v=0-abhd-CLwQ)
|
||||
|
||||
Hẹn gặp lại vào [ngày 6](day06.md).
|
241
2023/vi/days/day06.md
Normal file
241
2023/vi/days/day06.md
Normal file
@ -0,0 +1,241 @@
|
||||
## Thực hành: Xây dựng một ứng dụng yếu
|
||||
|
||||
Không ai thực sự muốn xây dựng một ứng dụng yếu hoặc dễ bị tấn công... đúng không?
|
||||
|
||||
Câu trả lời đúng là không, không ai nên hoặc muốn xây dựng một ứng dụng yếu, và không ai có ý định sử dụng các gói hoặc phần mềm mã nguồn mở khác mang theo các lỗ hổng của riêng nó.
|
||||
|
||||
Trong phần giới thiệu cuối cùng này về DevSecOps, tôi muốn cố gắng xây dựng và nâng cao nhận thức về một số cấu hình sai và điểm yếu có thể bị bỏ qua. Sau đó, trong 84 ngày tới hoặc thậm chí sớm hơn, chúng ta sẽ nghe từ một số chuyên gia trong lĩnh vực bảo mật về cách ngăn chặn những điều xấu và ứng dụng yếu được tạo ra.
|
||||
|
||||
### Xây dựng ứng dụng yếu đầu tiên của chúng ta
|
||||
|
||||
<span style="color:red">**Thông điệp quan trọng: Bài tập này nhằm làm nổi bật các điểm yếu và sai sót trong một ứng dụng, Vui lòng thử điều này tại nhà nhưng hãy cẩn thận vì đây là thực hành không tốt**</span>
|
||||
|
||||
Ở giai đoạn này, tôi sẽ không đi qua môi trường phát triển phần mềm của mình một cách chi tiết. Tôi thường sử dụng VScode trên Windows với WSL2 được kích hoạt. Chúng ta có thể sử dụng Vagrant để cung cấp các phiên bản tính toán chuyên dụng cho VirtualBox, tất cả những điều này tôi đã đề cập trong suốt phần #90DaysOfDevOps phiên bản trước, chủ yếu trong phần Linux.
|
||||
|
||||
### Các thực hành code xấu
|
||||
|
||||
Rất dễ dàng để sao copy paste trong GitHub!
|
||||
|
||||
Có bao nhiêu người kiểm tra từ đầu đến cuối package mà họ bao include trong mã của bạn?
|
||||
|
||||
Chúng ta cũng phải xem xét:
|
||||
|
||||
- Chúng ta có tin tưởng người dùng/người duy trì không
|
||||
- Không xác thực đầu vào trong mã của chúng ta
|
||||
- Hardcode cứng các secrets thay vì sử dụng env hoặc quản lý secrets
|
||||
- Tin tưởng mã mà không xác thực
|
||||
- Thêm secret của bạn vào các kho lưu trữ công khai (Có bao nhiêu người đã làm điều này?)
|
||||
|
||||
Quay lại chủ đề tổng thể, DevSecOps, tất cả những gì chúng ta đang làm hoặc hướng tới là các vòng lặp nhanh hơn của ứng dụng hoặc phần mềm của chúng ta, nhưng điều này có nghĩa là chúng ta có thể có các lỗi và rủi ro sớm hơn.
|
||||
|
||||
Chúng ta cũng có thể triển khai cơ sở hạ tầng của mình bằng mã, một rủi ro khác là bao gồm mã xấu ở đây cho phép các tác nhân xấu xâm nhập qua các lỗi.
|
||||
|
||||
Các triển khai cũng sẽ bao gồm quản lý cấu hình ứng dụng, một cấp độ khác của các lỗi có thể xảy ra.
|
||||
|
||||
Tuy nhiên! Các vòng lặp nhanh hơn có thể và thực sự có nghĩa là các bản sửa lỗi sớm hơn.
|
||||
|
||||
### OWASP - Dự án Bảo mật Ứng dụng Web Mở
|
||||
|
||||
*"[OWASP](https://owasp.org/) là một tổ chức phi lợi nhuận hoạt động để cải thiện bảo mật phần mềm. Thông qua các dự án phần mềm mã nguồn mở do cộng đồng dẫn dắt, hàng trăm chương trình trên toàn thế giới, hàng chục nghìn thành viên và các hội nghị giáo dục và đào tạo hàng đầu, Quỹ OWASP là nguồn lực cho các nhà phát triển và công nghệ để bảo mật web."*
|
||||
|
||||
Nếu chúng ta nhìn vào tập dữ liệu gần đây nhất của họ và [top 10](https://owasp.org/www-project-top-ten/) của họ, chúng ta có thể thấy các mục lớn sau đây là lý do tại sao mọi thứ trở nên tồi tệ và sai lầm.
|
||||
|
||||
1. Broken Access Control
|
||||
2. Cryptographic Failures
|
||||
3. Injection (2020 #1)
|
||||
4. Insecure Design (New for 2021)
|
||||
5. Security Misconfiguration
|
||||
6. Vulnerable and Outdated Components (2020 #9)
|
||||
7. Identification and authentication failures (2020 #2)
|
||||
8. Software and Data integrity failures (New for 2021)
|
||||
9. Security logging and monitoring failures (2020 #10)
|
||||
10. Server-side request forgery (SSRF)
|
||||
|
||||
### Quay lại ứng dụng
|
||||
|
||||
<span style="color:red">**Cảnh báo trên vẫn còn hiệu lực, tôi sẽ triển khai điều này lên một máy ảo VirtualBox cục bộ. NẾU bạn quyết định triển khai điều này lên một phiên bản đám mây thì trước tiên hãy cẩn thận và thứ hai là biết cách whitelist CSP của bạn chỉ cho phép truy cập bằng IP của riêng bạn!**</span>
|
||||
|
||||
Được rồi, tôi nghĩ rằng cảnh báo như vậy là đủ, tôi chắc chắn rằng chúng ta có thể thấy các cảnh báo màu đỏ trong vài tuần tới khi chúng ta đi sâu hơn vào thảo luận về chủ đề này.
|
||||
|
||||
Ứng dụng mà tôi sẽ sử dụng sẽ từ [DevSecOps.org](https://github.com/devsecops/bootcamp/blob/master/Week-2/README.md). Đây là một trong những bootcamp của họ từ nhiều năm trước nhưng vẫn cho phép chúng ta thấy một ứng dụng xấu trông như thế nào.
|
||||
|
||||
Có khả năng thấy một ứng dụng xấu hoặc yếu có nghĩa là chúng ta có thể bắt đầu hiểu cách bảo mật nó.
|
||||
|
||||
Một lần nữa, tôi sẽ sử dụng VirtualBox trên máy cục bộ của mình và tôi sẽ sử dụng vagrantfile sau (liên kết ở đây để giới thiệu về vagrant)
|
||||
|
||||
Cảnh báo đầu tiên là vagrant box này đã được tạo ra hơn 2 năm trước!
|
||||
```
|
||||
Vagrant.configure("2") do |config|
|
||||
config.vm.box = "centos/7"
|
||||
config.vm.provider :virtualbox do |v|
|
||||
v.memory = 8096
|
||||
v.cpus = 4
|
||||
end
|
||||
end
|
||||
```
|
||||
Nếu điều hướng đến thư mục này, bạn có thể sử dụng `vagrant up` để khởi động máy centos7 trong môi trường của bạn.
|
||||
|
||||
![](../../images/day06-1.png)
|
||||
|
||||
Sau đó, chúng ta sẽ cần truy cập vào máy của mình, bạn có thể làm điều này với `vagrant ssh`.
|
||||
|
||||
Chúng ta sẽ cài đặt MariaDB làm cơ sở dữ liệu cục bộ để sử dụng trong ứng dụng của mình.
|
||||
|
||||
`sudo yum -y install mariadb mariadb-server mariadb-devel`
|
||||
|
||||
khởi động dịch vụ với
|
||||
|
||||
`sudo systemctl start mariadb.service`
|
||||
|
||||
Chúng ta phải cài đặt một số dependencies, đây cũng là nơi tôi phải thay đổi những gì Bootcamp đề xuất vì NodeJS không có sẵn trong các kho lưu trữ hiện tại.
|
||||
|
||||
`sudo yum -y install links`
|
||||
`sudo yum install --assumeyes epel-release`
|
||||
`sudo yum install --assumeyes nodejs`
|
||||
|
||||
Bạn có thể xác nhận bạn đã cài đặt node với `node -v` và `npm -v` (npm sẽ được cài đặt như một dependencies)
|
||||
|
||||
Đối với ứng dụng này, chúng ta sẽ sử dụng ruby, một ngôn ngữ mà chúng ta chưa đề cập đến và chúng ta sẽ không thực sự đi vào chi tiết về nó, tôi sẽ cố gắng tìm một số tài liệu tham khảo tốt và thêm chúng bên dưới.
|
||||
|
||||
Cài đặt với
|
||||
|
||||
`curl -L https://get.rvm.io | bash -s stable`
|
||||
|
||||
Bạn có thể được yêu cầu thêm khóa với lệnh trên, hãy làm theo các bước đó.
|
||||
|
||||
Để sử dụng rvm, chúng ta cần làm như sau:
|
||||
|
||||
`source /home/vagrant/.rvm/scripts/rvm`
|
||||
|
||||
và cuối cùng, cài đặt nó với
|
||||
|
||||
`rvm install ruby-2.7`
|
||||
|
||||
Kiểm tra cài đặt và phiên bản với
|
||||
|
||||
`ruby --version`
|
||||
|
||||
Tiếp theo, chúng ta cần framework Ruby on Rails, có thể cài đặt bằng lệnh sau.
|
||||
|
||||
`gem install rails`
|
||||
|
||||
Tiếp theo, chúng ta cần git và có thể cài đặt với
|
||||
|
||||
`sudo yum install git`
|
||||
|
||||
Chỉ để ghi lại và không chắc chắn liệu nó có cần thiết hay không, tôi cũng đã cài đặt Redis trên máy của mình vì tôi đang làm một việc khác nhưng nó vẫn có thể cần thiết, vì vậy có thể thực hiện các bước sau.
|
||||
|
||||
```
|
||||
sudo yum install epel-release
|
||||
sudo yum install redis
|
||||
```
|
||||
|
||||
Nó có thể liên quan đến turbo streams nhưng tôi không có thời gian để tìm hiểu thêm về ruby on rails.
|
||||
|
||||
Bây giờ hãy tạo ứng dụng của chúng ta (tôi đã trải qua rất nhiều để đảm bảo các bước này hoạt động trên hệ thống của tôi nên chúc bạn may mắn)
|
||||
|
||||
tạo ứng dụng với lệnh sau
|
||||
|
||||
`rails new myapp --skip-turbolinks --skip-spring --skip-test-unit -d mysql`
|
||||
|
||||
tiếp theo, chúng ta sẽ tạo cơ sở dữ liệu và schema:
|
||||
|
||||
```
|
||||
cd myapp
|
||||
bundle exec rake db:create
|
||||
bundle exec rake db:migrate
|
||||
```
|
||||
|
||||
Chúng ta có thể chạy ứng dụng của mình với `bundle exec rails server -b 0.0.0.0`
|
||||
|
||||
![](../../images/day06-2.png)
|
||||
|
||||
Sau đó, mở trình duyệt để truy cập vào box đó, tôi đã phải thay đổi mạng VM VirtualBox của mình thành bridged thay vì NAT để có thể điều hướng đến nó thay vì sử dụng vagrant ssh.
|
||||
|
||||
![](../../images/day06-3.png)
|
||||
|
||||
Bây giờ chúng ta cần **scaffold** một mô hình cơ bản
|
||||
|
||||
Scaffold là một tập hợp các tệp được tạo tự động tạo thành cấu trúc cơ bản của một dự án Rails.
|
||||
|
||||
Chúng ta làm điều này với các lệnh sau:
|
||||
|
||||
```
|
||||
bundle exec rails generate scaffold Bootcamp name:string description:text dates:string
|
||||
bundle exec rake db:migrate
|
||||
```
|
||||
|
||||
![](../../images/day06-4.png)
|
||||
|
||||
Thêm một route mặc định vào config/routes.rb
|
||||
|
||||
`root bootcamps#index`
|
||||
|
||||
![](../../images/day06-5.png)
|
||||
|
||||
Bây giờ chỉnh sửa app/views/bootcamps/show.html.erb và làm cho trường mô tả là một trường raw. Thêm đoạn mã dưới đây.
|
||||
|
||||
```
|
||||
<p>
|
||||
<strong>Description:</strong>
|
||||
<%=raw @bootcamp.description %>
|
||||
</p>
|
||||
```
|
||||
|
||||
Lý do tại sao điều này có liên quan là việc sử dụng raw trong trường mô tả có nghĩa là trường này bây giờ trở thành một mục tiêu tiềm năng cho XSS. Hoặc cross-site scripting.
|
||||
|
||||
Điều này có thể được giải thích rõ hơn với video [What is Cross-Site Scripting?](https://youtu.be/DxsmEXicXEE)
|
||||
|
||||
Phần còn lại của Bootcamp tiếp tục thêm chức năng tìm kiếm, điều này cũng làm tăng khả năng tấn công XSS và đây là một ví dụ tuyệt vời khác về một cuộc tấn công demo mà bạn có thể thử trên một [ứng dụng dễ bị tấn công](https://www.softwaretestinghelp.com/cross-site-scripting-xss-attack-test/).
|
||||
|
||||
### Tạo chức năng tìm kiếm
|
||||
|
||||
Trong app/controllers/bootcamps_controller.rb, chúng ta sẽ thêm logic sau vào phương thức index:
|
||||
|
||||
```
|
||||
def index
|
||||
@bootcamps = Bootcamp.all
|
||||
if params[:search].to_s != ''
|
||||
@bootcamps = Bootcamp.where("name LIKE '%#{params[:search]}%'")
|
||||
else
|
||||
@bootcamps = Bootcamp.all
|
||||
end
|
||||
end
|
||||
```
|
||||
|
||||
Trong app/views/bootcamps/index.html.erb, chúng ta sẽ thêm trường tìm kiếm:
|
||||
|
||||
```
|
||||
<h1>Search</h1>
|
||||
<%= form_tag(bootcamps_path, method: "get", id: "search-form") do %>
|
||||
<%= text_field_tag :search, params[:search], placeholder: "Search Bootcamps" %>
|
||||
<%= submit_tag "Search Bootcamps"%>
|
||||
<% end %>
|
||||
|
||||
<h1>Listing Bootcamps</h1>
|
||||
```
|
||||
|
||||
Cảm ơn rất nhiều đến [DevSecOps.org](https://www.devsecops.org/), đây là nơi tôi tìm thấy hướng dẫn cũ nhưng tuyệt vời với một vài điều chỉnh ở trên, còn rất nhiều thông tin khác có thể tìm thấy ở đó.
|
||||
|
||||
Với hướng dẫn dài hơn dự kiến này, tôi sẽ chuyển sang các phần và tác giả tiếp theo để làm nổi bật cách không làm điều này và cách đảm bảo chúng ta không phát hành mã xấu hoặc các lỗ hổng ra ngoài môi trường.
|
||||
|
||||
## Tài liệu tham khảo
|
||||
|
||||
- [devsecops.org](https://www.devsecops.org/)
|
||||
|
||||
- [TechWorld with Nana - What is DevSecOps? DevSecOps explained in 8 Mins](https://www.youtube.com/watch?v=nrhxNNH5lt0&list=PLsKoqAvws1pvg7qL7u28_OWfXwqkI3dQ1&index=1&t=19s)
|
||||
|
||||
- [What is DevSecOps?](https://www.youtube.com/watch?v=J73MELGF6u0&list=PLsKoqAvws1pvg7qL7u28_OWfXwqkI3dQ1&index=2&t=1s)
|
||||
|
||||
- [freeCodeCamp.org - Web App Vulnerabilities - DevSecOps Course for Beginners](https://www.youtube.com/watch?v=F5KJVuii0Yw&list=PLsKoqAvws1pvg7qL7u28_OWfXwqkI3dQ1&index=3&t=67s)
|
||||
|
||||
- [The Importance of DevSecOps and 5 Steps to Doing it Properly (DevSecOps EXPLAINED)](https://www.youtube.com/watch?v=KaoPQLyWq_g&list=PLsKoqAvws1pvg7qL7u28_OWfXwqkI3dQ1&index=4&t=13s)
|
||||
|
||||
- [Continuous Delivery - What is DevSecOps?](https://www.youtube.com/watch?v=NdvMUcWNlFw&list=PLsKoqAvws1pvg7qL7u28_OWfXwqkI3dQ1&index=5&t=6s)
|
||||
|
||||
- [Cloud Advocate - What is DevSecOps?](https://www.youtube.com/watch?v=a2y4Oj5wrZg&list=PLsKoqAvws1pvg7qL7u28_OWfXwqkI3dQ1&index=6)
|
||||
|
||||
- [Cloud Advocate - DevSecOps Pipeline CI Process - Real world example!](https://www.youtube.com/watch?v=ipe08lFQZU8&list=PLsKoqAvws1pvg7qL7u28_OWfXwqkI3dQ1&index=7&t=204s)
|
||||
|
||||
Hẹn gặp lại bạn vào [Ngày 7](day07.md) nơi chúng ta sẽ bắt đầu một phần mới về Lập trình An toàn.
|
||||
|
Loading…
Reference in New Issue
Block a user