Identity and certificate management

·

5 min read

Istio Service Mesh sử dụng một hệ thống quản lý danh tính và chứng chỉ (identity and certificate management - ICM) để đảm bảo an toàn cho việc giao tiếp giữa các dịch vụ trong mesh. Hệ thống ICM bao gồm các thành phần sau:

1. Citadel:

  • Là trung tâm quản lý danh tính và chứng chỉ của Istio.

  • Cung cấp dịch vụ xác thực và ủy quyền cho các dịch vụ và người dùng.

  • Phát hành và quản lý chứng chỉ cho Envoy proxy.

  • Citadel, một trong các thành phần điều khiển của Istio, có khả năng tự động tạo và quản lý các cặp khóa công khai và riêng tư, cũng như các chứng chỉ TLS.

  • Khi một dịch vụ mới được triển khai trong mạng lưới Istio, Citadel sẽ tự động tạo ra một cặp khóa mới cho dịch vụ đó, và ký một chứng chỉ xác thực cho khóa công khai tương ứng.

  • Quá trình này hoàn toàn tự động và không đòi hỏi sự can thiệp của người quản trị.

2. Envoy proxy:

  • Sử dụng chứng chỉ được Citadel cấp để xác thực với các dịch vụ khác trong mesh.

  • Xác thực người dùng bằng cách kiểm tra token JWT (JSON Web Token) được cung cấp trong header yêu cầu.

  • Citadel quản lý quy trình tạo khóa và chứng chỉ, cũng như việc phân phối chúng đến các dịch vụ trong mạng lưới.

  • Khóa và chứng chỉ được phân phối tới các proxy Envoy hoạt động như sidecar cùng với mỗi dịch vụ.

  • Proxy Envoy sử dụng chứng chỉ này để thiết lập kết nối an toàn với các dịch vụ khác trong mạng lưới.

3. Các thành phần khác:

  • Cert Manager: Có thể được tích hợp với Citadel để tự động hóa việc phát hành và quản lý chứng chỉ.

  • Vault: Có thể được sử dụng để lưu trữ các bí mật được sử dụng bởi Citadel và Envoy proxy.

  • Citadel cũng tự động tái tạo các chứng chỉ khi chúng hết hạn hoặc cần được cập nhật.

  • Nó đảm bảo rằng các dịch vụ luôn có các chứng chỉ hợp lệ và không gặp vấn đề với việc xác thực và bảo mật kết nối.

Quy trình hoạt động:

  1. Khi một dịch vụ muốn kết nối với một dịch vụ khác, nó sẽ gửi yêu cầu đến Envoy proxy của dịch vụ đích.

  2. Envoy proxy của dịch vụ đích sẽ xác thực dịch vụ yêu cầu bằng cách kiểm tra chứng chỉ của nó.

  3. Nếu chứng chỉ hợp lệ, Envoy proxy sẽ chuyển tiếp yêu cầu đến dịch vụ đích.

  4. Dịch vụ đích sẽ xử lý yêu cầu và trả về phản hồi.

  5. Envoy proxy của dịch vụ đích sẽ xác thực người dùng bằng cách kiểm tra token JWT (JSON Web Token) được cung cấp trong header phản hồi.

  6. Nếu token JWT hợp lệ, Envoy proxy sẽ chuyển tiếp phản hồi cho dịch vụ yêu cầu.

Lợi ích của việc sử dụng ICM trong Istio Service Mesh:

  • Cải thiện bảo mật: ICM giúp bảo vệ các dịch vụ khỏi các mối đe dọa bảo mật như tấn công giả mạo (impersonation) và tấn công người trong cuộc (man-in-the-middle attacks).

  • Giảm thiểu gánh nặng quản lý: ICM tự động hóa việc phát hành và quản lý chứng chỉ, giúp giảm bớt gánh nặng cho các quản trị viên hệ thống.

  • Tăng khả năng mở rộng: ICM có thể được mở rộng để đáp ứng nhu cầu của các triển khai Istio lớn và phức tạp.

Quản lý danh tính và chứng chỉ (Identity and certificate management) trong Istio đóng vai trò quan trọng trong việc bảo mật và xác thực các dịch vụ trong mạng lưới. Dưới đây là cách hoạt động cơ bản của quản lý danh tính và chứng chỉ trong Istio:

  1. Tạo và Quản lý Chứng chỉ TLS:

    • Istio sử dụng Citadel, một trong các thành phần điều khiển của nó, để quản lý việc tạo và phân phối các chứng chỉ TLS (Transport Layer Security).

    • Citadel tự động tạo ra các cặp khóa công khai và riêng tư cho mỗi dịch vụ trong mạng lưới và cung cấp chứng chỉ xác thực cho các proxy Envoy hoạt động như sidecar.

    • Chứng chỉ này được sử dụng để thiết lập kết nối an toàn giữa các proxy Envoy, đảm bảo tính toàn vẹn và bảo mật của dữ liệu khi truyền qua mạng lưới.

  2. Xác Thực và Ủy Quyền:

    • Với các chứng chỉ đã cài đặt, các dịch vụ trong mạng lưới có thể xác thực lẫn nhau và thiết lập kết nối an toàn.

    • Istio cung cấp khả năng ủy quyền, cho phép quyền truy cập được chuyển tiếp từ dịch vụ này sang dịch vụ khác dựa trên chính sách được xác định trước.

  3. Quản Lý Danh Tính:

    • Istio cho phép quản lý và xác định danh tính cho từng dịch vụ trong mạng lưới. Mỗi dịch vụ có thể được định danh bằng một tên duy nhất, giúp quản lý và theo dõi lưu lượng mạng dễ dàng hơn.

    • Điều này cũng cho phép thiết lập các quy tắc an ninh phân tách dựa trên danh tính của các dịch vụ, giảm thiểu rủi ro từ các tấn công như giả mạo danh tính.

Identity Provisioning Workflow

Istio cung cấp keys và certificates thông qua quy trình sau:

  1. Istiod cung cấp dịch vụ gRPC để nhận yêu cầu ký chứng chỉ (CSR - Certificate Signing Requests).

  2. Khi khởi động, Istio agent tạo private key và CSR, sau đó gửi CSR kèm thông tin xác thực đến istiod để yêu cầu ký.

  3. Ủy ban chứng nhận (CA) trong istiod xác thực thông tin được cung cấp trong CSR. Nếu xác thực thành công, CA sẽ ký CSR để tạo chứng chỉ.

  4. Khi một workload (đơn vị công việc) được khởi động, Envoy yêu cầu chứng chỉ và private key từ Istio agent cùng container thông qua giao diện API Envoy Secret Discovery Service (SDS).

  5. Istio agent gửi các chứng chỉ nhận được từ istiod và private key tới Envoy thông qua giao diện API Envoy SDS.

  6. Istio agent theo dõi thời hạn hiệu lực của chứng chỉ workload. Quy trình nêu trên được lặp lại định kỳ để thay mới certificates và private key.