Bảo mật Microservices Làm thế nào để Bảo mật Cơ sở hạ tầng Microservice của bạn?



Bài viết này trên Microservices Security sẽ thảo luận chi tiết một số phương pháp hay nhất để bảo mật microservices.

Trong thị trường ngày nay, nơi các ngành đang sử dụng các kiến ​​trúc và ứng dụng phần mềm khác nhau, gần như không thể cảm thấy rằng dữ liệu của bạn hoàn toàn an toàn. Vì vậy, trong khi xây dựng các ứng dụng bằng cách sử dụng , các vấn đề bảo mật trở nên quan trọng hơn, vì các dịch vụ riêng lẻ giao tiếp với nhau và với khách hàng. Vì vậy, trong bài viết này về bảo mật microservices, tôi sẽ thảo luận về các cách khác nhau mà bạn có thể thực hiện để bảo mật microservices của mình theo trình tự sau.

Microservices là gì?

Microservices, hay còn gọi là kiến trúc microservice , là một phong cách kiến ​​trúc cấu trúc một ứng dụng như một tập hợp các dịch vụ tự trị nhỏ, được mô hình hóa xung quanh Lĩnh vực kinh doanh. Vì vậy, bạn có thể hiểu microservices là các dịch vụ nhỏ lẻ giao tiếp với nhau theo logic nghiệp vụ duy nhất. Nếu bạn muốn biết thêm về microservices chuyên sâu, thì bạn có thể





Microservices là gì - Microservice Security - Edureka

hoạt cảnh hướng dẫn từng bước

Giờ đây, thường khi các công ty chuyển từ kiến ​​trúc nguyên khối sang microservices, họ nhận thấy nhiều lợi ích như khả năng mở rộng, tính linh hoạt và chu kỳ phát triển ngắn. Tuy nhiên, đồng thời, kiến ​​trúc này cũng đưa ra một số vấn đề phức tạp.



Vì vậy, tiếp theo trong bài viết này về bảo mật microservices, chúng ta hãy hiểu những vấn đề gặp phải trong kiến ​​trúc microservice.

Các vấn đề gặp phải trong microservices

Các vấn đề gặp phải trong microservices như sau:

Vấn đề 1:

Hãy xem xét một tình huống, trong đó người dùng cần đăng nhập để truy cập tài nguyên. Giờ đây, trong kiến ​​trúc microservices, chi tiết đăng nhập của người dùng phải được lưu theo cách mà người dùng không bị yêu cầu xác minh mỗi khi họ cố gắng truy cập tài nguyên. Bây giờ, điều này tạo ra một vấn đề, vì chi tiết người dùng có thể không được bảo mật và cũng có thể bị truy cập bởi 3rdbuổi tiệc.



Vấn đề 2:

Khi một khách hàng gửi một yêu cầu, thì các chi tiết của khách hàng cần được xác minh và các quyền được cấp cho khách hàng cũng cần được kiểm tra. Vì vậy, khi bạn sử dụng microservices, có thể xảy ra rằng đối với mỗi và mọi dịch vụ, bạn phải xác thực và ủy quyền cho máy khách. Bây giờ, để làm điều này, các nhà phát triển có thể sử dụng cùng một mã cho mỗi và mọi dịch vụ. Tuy nhiên, bạn có nghĩ rằng việc dựa vào một mã cụ thể sẽ làm giảm tính linh hoạt của microservices không? Chà, chắc chắn là có. Vì vậy, đây là một trong những vấn đề lớn thường gặp phải trong kiến ​​trúc này.

Vấn đề 3:

Vấn đề tiếp theo rất nổi bật là tính bảo mật của từng microservice riêng lẻ. Trong kiến ​​trúc này, tất cả các microservices giao tiếp với nhau đồng thời ngoài 3rdứng dụng bên. Vì vậy, khi khách hàng đăng nhập từ 3rdứng dụng của bên, bạn phải đảm bảo rằng khách hàng không có quyền truy cập vào dữ liệu của microservices, theo cách mà họ có thể khai thác chúng.

Được rồi, các vấn đề nêu trên không phải là vấn đề duy nhất được tìm thấy trong kiến ​​trúc microservice. Tôi có thể nói rằng, bạn có thể phải đối mặt với nhiều vấn đề khác liên quan đến bảo mật dựa trên ứng dụng và kiến ​​trúc bạn có. Trên lưu ý đó, chúng ta hãy tiếp tục với bài viết này về bảo mật microservices và biết cách tốt nhất để giảm bớt những thách thức.

Các phương pháp hay nhất về bảo mật microservices

Các phương pháp hay nhất để cải thiện bảo mật trong microservices như sau:

Cơ chế phòng thủ theo chiều sâu

Vì microservices được biết là áp dụng bất kỳ cơ chế nào ở cấp độ chi tiết, bạn có thể áp dụng cơ chế Defense in Depth để làm cho các dịch vụ an toàn hơn. Về cơ bản, cơ chế Phòng thủ trong Độ sâu về cơ bản là một kỹ thuật mà thông qua đó bạn có thể áp dụng các lớp biện pháp đối phó bảo mật để bảo vệ các dịch vụ nhạy cảm. Vì vậy, là một nhà phát triển, bạn chỉ cần xác định các dịch vụ có thông tin nhạy cảm nhất và sau đó áp dụng một số lớp bảo mật để bảo vệ chúng. Bằng cách này, bạn có thể đảm bảo rằng bất kỳ kẻ tấn công tiềm năng nào không thể bẻ khóa bảo mật trong một lần thực hiện và phải tiếp tục và cố gắng bẻ khóa cơ chế bảo vệ của tất cả các lớp.

Ngoài ra, vì trong kiến ​​trúc microservice, bạn có thể triển khai các lớp bảo mật khác nhau trên các dịch vụ khác nhau, kẻ tấn công, kẻ thành công trong việc khai thác một dịch vụ cụ thể, có thể không bẻ khóa cơ chế bảo vệ của các dịch vụ khác.

Mã thông báo và Cổng API

Thông thường, khi bạn mở một ứng dụng, bạn sẽ thấy hộp thoại có nội dung “Chấp nhận Thỏa thuận Cấp phép và quyền đối với cookie”. Thông điệp này biểu thị điều gì? Vâng, khi bạn chấp nhận nó, thông tin đăng nhập người dùng của bạn sẽ được lưu trữ và một phiên sẽ được tạo. Bây giờ, lần sau khi bạn truy cập cùng một trang, trang sẽ được tải từ bộ nhớ đệm chứ không phải từ chính máy chủ. Trước khi khái niệm này xuất hiện, các phiên được lưu trữ tập trung ở phía máy chủ. Tuy nhiên, đây là một trong những rào cản lớn nhất trong việc mở rộng ứng dụng theo chiều ngang.

python __init__

Token

Vì vậy, giải pháp cho vấn đề này là sử dụng mã thông báo, để ghi lại thông tin đăng nhập của người dùng. Các mã thông báo này được sử dụng để dễ dàng xác định người dùng và được lưu trữ dưới dạng cookie. Bây giờ, mỗi khi khách hàng yêu cầu một trang web, yêu cầu sẽ được chuyển tiếp đến máy chủ và sau đó, máy chủ xác định xem người dùng có quyền truy cập vào tài nguyên được yêu cầu hay không.

Bây giờ, vấn đề chính là mã thông báo nơi lưu trữ thông tin người dùng. Vì vậy, dữ liệu của các token cần được mã hóa để tránh bất kỳ sự khai thác nào từ 3rdtài nguyên đảng. Jason Web Format hoặc thường được gọi là JWT là một tiêu chuẩn mở xác định định dạng mã thông báo, cung cấp thư viện cho các ngôn ngữ khác nhau và cũng mã hóa các mã thông báo đó.

Cổng API

API Gateways thêm vào như một phần tử bổ sung để bảo mật các dịch vụ thông qua xác thực mã thông báo. Các Gateway đóng vai trò là điểm vào cho tất cả các yêu cầu của khách hàng và ẩn hiệu quả các dịch vụ vi mô khỏi máy khách. Vì vậy, khách hàng không có quyền truy cập trực tiếp vào các dịch vụ nhỏ và do đó, theo cách đó, không khách hàng nào có thể khai thác bất kỳ dịch vụ nào.

Theo dõi phân tán và quản lý phiên

Truy tìm phân tán

Trong khi sử dụng microservices, bạn phải theo dõi tất cả các dịch vụ này liên tục. Tuy nhiên, khi bạn phải theo dõi một lượng lớn các dịch vụ đồng thời, thì điều đó sẽ trở thành một vấn đề. Để tránh những thách thức như vậy, bạn có thể sử dụng một phương pháp được gọi là Truy tìm phân tán. Truy tìm phân tán là một phương pháp để xác định chính xác các lỗi và xác định lý do đằng sau nó. Không chỉ điều này mà bạn còn có thể xác định được vị trí mà sự cố đang xảy ra. Vì vậy, rất dễ dàng để theo dõi, microservice nào đang gặp vấn đề về bảo mật.

Quản lý phiên

Quản lý phiên là một tham số quan trọng mà bạn phải xem xét khi bảo mật các dịch vụ nhỏ. Bây giờ, một phiên được tạo bất cứ khi nào người dùng truy cập vào một ứng dụng. Vì vậy, bạn có thể xử lý dữ liệu phiên theo các cách sau:

  1. Bạn có thể lưu trữ dữ liệu phiên của một người dùng trong một máy chủ cụ thể. Tuy nhiên, loại hệ thống này, hoàn toàn phụ thuộc vào cân bằng tải giữa các dịch vụ và chỉ đáp ứng quy mô theo chiều ngang.
  2. Dữ liệu phiên hoàn chỉnh có thể được lưu trữ trong một phiên bản duy nhất. Sau đó, dữ liệu có thể được đồng bộ hóa thông qua mạng. Vấn đề duy nhất là, trong phương pháp này, tài nguyên mạng sẽ cạn kiệt.
  3. Bạn có thể đảm bảo rằng dữ liệu người dùng có thể được lấy từ bộ nhớ phiên dùng chung, để đảm bảo rằng tất cả các dịch vụ có thể đọc cùng một dữ liệu phiên. Tuy nhiên, vì dữ liệu được truy xuất từ ​​bộ nhớ dùng chung, bạn cần đảm bảo rằng mình có một số cơ chế bảo mật để truy cập dữ liệu một cách an toàn.

Phiên đầu tiên và SSL tương hỗ

Ý tưởng của buổi học đầu tiên rất đơn giản. Người dùng cần đăng nhập vào ứng dụng một lần và sau đó họ có thể truy cập tất cả các dịch vụ trong ứng dụng. Tuy nhiên, ban đầu mỗi người dùng phải giao tiếp với một dịch vụ xác thực. Chà, điều này chắc chắn có thể dẫn đến rất nhiều lưu lượng truy cập giữa tất cả các dịch vụ và có thể gây khó khăn cho các nhà phát triển khi tìm ra lỗi trong trường hợp như vậy.

Đến với Mutual SSL, các ứng dụng thường phải đối mặt với lưu lượng truy cập từ người dùng, 3rdcác bên và cả microservices giao tiếp với nhau. Tuy nhiên, vì các dịch vụ này được truy cập bởi 3rdcác bữa tiệc, luôn có nguy cơ bị tấn công. Bây giờ, giải pháp cho các tình huống như vậy là SSL lẫn nhau hoặc xác thực lẫn nhau giữa các microservices. Với điều này, dữ liệu được chuyển giữa các dịch vụ sẽ được mã hóa. Vấn đề duy nhất của phương pháp này là, khi số lượng dịch vụ vi mô tăng lên, vì mỗi dịch vụ sẽ có chứng chỉ TLS riêng, nên các nhà phát triển sẽ rất khó khăn trong việc cập nhật chứng chỉ.

java chuyển đổi đôi thành số nguyên

3rdquyền truy cập ứng dụng bên

Tất cả chúng ta đều truy cập vào các ứng dụng 3rdứng dụng bên. 3rdcác ứng dụng của bên sử dụng mã thông báo API do người dùng trong ứng dụng tạo ra để truy cập các tài nguyên cần thiết. Vì vậy, các ứng dụng của bên thứ 3 có thể truy cập dữ liệu của người dùng cụ thể đó chứ không phải thông tin đăng nhập của người dùng khác. Chà, điều này liên quan đến một người dùng duy nhất. Nhưng điều gì sẽ xảy ra nếu các ứng dụng cần truy cập dữ liệu từ nhiều người dùng? Làm thế nào để bạn nghĩ rằng một yêu cầu như vậy được đáp ứng?

Sử dụng OAuth

Giải pháp là sử dụng OAuth. Khi bạn sử dụng OAuth, ứng dụng sẽ nhắc người dùng cấp quyền cho 3rdứng dụng của bên, để sử dụng thông tin cần thiết và tạo mã thông báo cho nó. Nói chung, mã ủy quyền được sử dụng để yêu cầu mã thông báo nhằm đảm bảo rằng URL gọi lại của người dùng không bị đánh cắp.

Vì vậy, trong khi đề cập đến mã thông báo truy cập, máy khách sẽ giao tiếp với máy chủ ủy quyền và máy chủ này ủy quyền cho máy khách để ngăn người khác giả mạo danh tính của máy khách. Vì vậy, khi bạn sử dụng Microservices với OAuth, các dịch vụ hoạt động như một ứng dụng khách trong kiến ​​trúc OAuth, để đơn giản hóa các vấn đề bảo mật.

Vâng, các bạn, tôi sẽ không nói rằng đây là những cách duy nhất để bạn có thể đảm bảo dịch vụ của mình. Bạn có thể bảo mật microservices theo nhiều cách dựa trên kiến ​​trúc của ứng dụng. Vì vậy, nếu bạn là ai đó đang mong muốn xây dựng một ứng dụng dựa trên microservices, thì hãy nhớ rằng tính bảo mật của các dịch vụ là một yếu tố quan trọng mà bạn cần phải thận trọng. Trên lưu ý đó, chúng ta sẽ kết thúc bài viết này về bảo mật microservices. Tôi hy vọng bạn thấy bài viết này có nhiều thông tin.

Nếu bạn muốn tìm hiểu Microservices và xây dựng các ứng dụng của riêng mình, hãy xem đi kèm với đào tạo trực tiếp do người hướng dẫn và trải nghiệm dự án thực tế. Khóa đào tạo này sẽ giúp bạn hiểu sâu về Microservices và giúp bạn thành thạo chủ đề này.

Có một câu hỏi cho chúng tôi? Hãy đề cập đến nó trong phần bình luận của ” Bảo mật Microservice ”Và tôi sẽ liên lạc lại với bạn.