1. Trang chủ
  2. » Luận Văn - Báo Cáo

Khóa luận tốt nghiệp An toàn thông tin: Triển khai giải pháp bảo mật cho hệ thống Kubernetes và Azure Kubernetes Service sử dụng CIS Benchmark

147 0 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Triển khai giải pháp bảo mật cho hệ thống Kubernetes và Azure Kubernetes Service sử dụng CIS Benchmark
Tác giả Bùi Quốc Huy, Ngô Đức Trí
Người hướng dẫn ThS. Trần Thị Dung
Trường học Đại học Quốc gia TP. Hồ Chí Minh
Chuyên ngành An toàn thông tin
Thể loại Khóa luận tốt nghiệp
Năm xuất bản 2023
Thành phố TP. Hồ Chí Minh
Định dạng
Số trang 147
Dung lượng 40,31 MB

Cấu trúc

  • 2.12.3. So sánh GitLab CI/CD va Azure Pipelines (44)
  • Chương 3. PHƯƠNG PHAP THUC HIEN .....ssssssssssssscccsccsessssnessnsnnnnnnsssesseeeee 28 3.1. Phương pháp triển khai hệ thông Kubernetes (0)
    • 3.1.1. Xây dựng hệ thống Kubernetes bằng Minikube (46)
    • 3.1.2. Xây dựng hệ thống Kubernetes bằng Azure Kubernetes Service (47)
    • 3.2. Ứng dụng Microservices và phương pháp triển khai lên Kubernetes (47)
      • 3.2.1. Ứng dụng web dựa trên Microservices.........................-------c-cccc-e-ccer 29 3.2.2. Triển khai ứng dụng lên Kubernetes....................--.....---:---ccccccc+z+c++ 31 3.2.2.1. Cấu trúc YAML...................................--ccccerrriieerrrrirrrrrrrrrree 31 3.3. Phương pháp triển khai CI/CD cho ứng dung lên AKS (0)
      • 3.4.1. Phương pháp kết nối SSH vào các node AKS (53)
        • 3.4.1.1. Trường hợp kết nối SSH tới private node . 3.4.1.2. Trường hợp kết nối SSH tới public node (53)
    • 3. B .2.2.. Phương pháp thực hiện với mô hình sử dụng AKS. 4... Xõy dựng Playbook kiểm tra cấu hỡnh.........................---..----c---.--c--...3ỉ 4.1. Mục đích. 4.2. Cấu trúc các file playbook...................----.:--c:22cvvr+eevvvvrrerrrsrrrrrr 39 4... Định dạng của file output HTML......................... 2-5-5 2 =<++=s2 43 4.4. Phương pháp thực hiện kiểm tra cầu hình với CIS Benchmark (0)
      • 3.4.4.1. Cấu trúc một tiêu chuẩn kiểm tra cấu hình theo CIS Benchmark .44 3.4.4.2. Các tiêu chuẩn được áp dung đề kiểm tra cấu hình trong dé tài (62)
      • 4.1.2.1. Mô hình triển khai lên AKS..........................---5ccccccceeeeerrerrrrrrrree 52 4.1.2.2. Triển khai CI/CD cho ứng đụng......................-----¿-22cz+222+sccerrxxe 53 4.2. Triển khai hệ thống tự động hóa kiểm tra và cấu hình (70)
      • 4.2.1. Công cụ Web bằng Python cung cấp giao diện (78)
      • 4.2.2. Phần giao tiếp giữa công cụ và Ansible...........................---...-----cc (79)
  • Hinh 4.21: M6 hinh mang cua kich ban 2 (0)
  • Hinh 4.24: Giao dién tiến trình kiểm tra AKS woeecccccseessssesssseessseesssvecessecssseesssvesssves 73 Hình 4.25: Giao diện danh sách kết quả kiểm tra các node trên AKS (0)

Nội dung

° Nghiên cứu và thực hiện cấu hình hệ thống Kubernetes K8S được sử dụng đê triên khai ứng dụng Microservices.. Kich ban 1 — Thực hiện kiểm tra và cấu hình tự động đối vớiKubernetes có tr

So sánh GitLab CI/CD va Azure Pipelines

Bảng so sánh dưới đây mô tả những nội dung được hỗ trợ giữa Azure Pipelines và GitLab CI/CD Nội dung của bảng được nhóm tác giả lựa chọn nổi bật nhất để so sánh vì những tính năng của hai công cụ rất nhiều.

Nội dung Azure Pipelines GitLab CI/CD

Pipelines được thực thi khi Có Có có commit được day lênh

Remote Version Control hoặc được kích hoạt thủ công

Pipelines được thực thi trong Có Không một khoảng thời gian quy định

Pipelines được thực thi theo Có Có lịch

Hỗ trợ nhiều ngôn ngữ lập Có Có trình khác nhau

Hỗ trợ trực tiếp với Mirosoft Có Cần cấu hình script để Azure kết nối

Hỗ trợ trực tiếp với Amazon Có Cần cấu hình script để AWS kết nối

Hỗ trợ trực tiếp với Google Có Có hỗ trợ tuy nhiên vẫn GCP cần cấu hình script đề kết nối Câu trúc, cú pháp Phức tạp hơn Ngắn gọn hơn

Bang 2.1: So sánh giữa GitLab CI/CD va Azure Pipelines

Vì trong phạm vi của đề tài, nhóm tác giả triển khai ứng dụng trên môi trường Microsoft Azure, cụ thé là AKS nên nhóm tác gia lựa chọn sử dụng công cụ Azure Pipelines Tuy nhiên, nếu dự án sử dụng Version Control là GitLab và sử dụng những nền tang Cloud khác, việc lựa chọn GitLab CI/CD được khuyến khích hơn Do việc thực hiện các script trên GitLab sẽ ngắn gọn và được nhiều hỗ trợ từ cộng đồng.

PHƯƠNG PHAP THUC HIEN .ssssssssssssscccsccsessssnessnsnnnnnnsssesseeeee 28 3.1 Phương pháp triển khai hệ thông Kubernetes

Xây dựng hệ thống Kubernetes bằng Minikube

Dé có thể triển khai hệ thống này, nhóm tác giả tiễn hành cài đặt Minikube, sau đó tao 2 node trong cluster với 1 node đóng vai trò là master, node còn lại là worker Nhóm tác giả có sử dụng thêm công cụ kubectl - đây là công cụ cho phép sử dụng các dòng lệnh đề quan trị Kubernetes cluster Kubectl sử dụng Kubernetes API dé tương tác với Kubernetes cluster. ubuntu@ubuntu:~/Desktop$ kubectL get nodes

NAME STATUS ROLES AGE VERSION kuberv1.23 Ready control-plane,master 78d v1.23.1 kuberv1.23-m02 Ready 21d V1.23.1 ubuntu@ubuntu:~/Desktop$

Hình 3.1: Thông tin các node được tao bằng Minikube

Sau do, nhom tac gia tiến hành bật các addons như hình bên dưới để việc triển khai ứng dụng microservice trên kubernetes không gặp lỗi. ubuntu@ubuntu:~/Desktop$ minikube -p kuberv1.23 addons list | grep enable

| default-storageclass | kuberv1.23 | enabled [4 | Kubernetes |

| tngress-dns | kuberv1.23 | enabled [J | Google |

| storage-provisioner | kuberv1.23 | enabled [Á | Google | ubuntu@ubuntu:~/Desktop$ ẽŸ

Hình 3.2: Thông tin các addons trong Minikube

Xây dựng hệ thống Kubernetes bằng Azure Kubernetes Service

Để triển khai hệ thống Kubernetes trên nền tảng Azure Kubernetes Service, nhóm tác giả tiến hành tạo Kubernetes cluster trên AKS Nhóm tác giả lựa chọn phương pháp tạo AKS cluster sử dụng Azure Portal Sau khi triển khai Kubernetes cluster trên AKS, nhóm dùng AZ CLI để lấy kubectl context dé kubectl có thé kết nối tới Kubernetes API Server và quản lý được các resource trong AKS. trind@trind2-lap:~$ az aks get-credentials resource-group aks-cis-bench name demo-cis Merged "demo-cis" as current context in /home/trind/.kube/config trind@trind2-lap:~$ kubectl get nodes -o wide

NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTER NAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME aks-agentpool-14585136-vmss000000 Ready agent 6m28s v1.24.6 10.224.0.4 Ubuntu 18.64.6 LTS 5.4.8-1098-azure containerd://1.6.4+azure-4

Ứng dụng Microservices và phương pháp triển khai lên Kubernetes

3.2.1 Ung dụng web dựa trên Microservices Ứng dụng web dựa trên Microservices của nhóm tác giả là ứng dụng open source sử dung framework Flask Về cơ bản, ứng dụng web được chia thành 4 ứng dụng nhỏ Ứng dung front-end hiền thị giao diện được viết bằng ReactJS và phần xử lí thì sử dụng Flask Khi tương tác trên giao diện này, ứng dụng frontend sẽ gửi các API tương ứng với các chức năng mà người dùng muốn sử dụng về các ứng dụng backend xử lí Và về phía backend sẽ chia thành 3 services khác nhau tương ứng với 3 loại API khác nhau mà ứng dụng frontend sẽ sử dụng 3 service đó là 3 ứng dụng web viết theo framework Flask, 1an lượt là order, product, user Theo repository project gốc thi ứng dụng microservice này sẽ sử dung 3 database khác nhau cho 3 service và MySQL là database ma project dùng. Để triển ứng dụng Microservice nay thì ban đầu nhóm tác giả sé build các

Docker Image, sau đó chạy các container của 3 services backend cũng như các container cua frontend, database.

Cụ thể mô hình triển khai ứng dụng với Docker Container được diễn tả như hình sau: micro network a Je docker order-sve

Flask order-db frontend-app user-sve user-db vs _.— product-dban

Mỗi ứng dụng Python Flask tương ứng với mỗi service của ứng dụng web tổng và mỗi service này sẽ có 1 database riêng Với database thì ở giai đoạn này nhóm sẽ tạo và khởi chạy bằng container Vì các container đều chạy trong | mạng container ảo được nhóm tạo, do đó chúng đều có thể liên lạc, gửi dữ liệu cho nhau thông qua tên host được đặt Từ tên host thông qua dns sẽ được dịch sang địa chỉ IP nhất định dé kết nối với nhau.

Dockerfile dé build image của các ứng dụng như sau:

C0PY requirements.txt /orderapp/requirements.txt WORKDIR /orderapp

RUN pip install -r requirements.txt Copy /orderapp

Hinh 3.5: Dockerfile cua service orderapp trong tmg dung

Nội dung của file Dockerfile này chi là tải các thư viện python cần thiết va khởi chạy ứng dụng Flask khi container được start bằng cách chạy file run.py Vì là ứng dụng Flask đơn giản nên việc tạo Dockerfile cũng hầu như không cầu kì Các ứng dụng Flask khác cũng được viết Dockerfile tương tự.

Nhóm tác gia cũng sử dung Docker compose dé cho việc chạy ứng dụng từ các image một cách nhanh gọn hơn Cụ thể về docker compose file thì có thể xem tại mã nguồn của ứng dụng được nhóm tác giả lưu trên GitHub!.

3.2.2 Triển khai ứng dụng lên Kubernetes Ứng dụng này sẽ được triển khai lên nền tảng Minikube/Azure Kubernetes Services bằng file deployment có định dạng là YAML Các file Deployment là đơn vị để Kubernetes triển khai, cập nhật, quản trị các Pod một cách dễ dàng và thuận tiện hơn.

' https://github.com/trisngo/flask-microservices-deployment

31 apiVersion: apps/v1 kind: Deployment metadata: name: spec: replicas: selector: matchLabels:

- name: image:

- name: image:

Hình 3.6: Cấu trúc file YAML Cấu trúc một file Deployment [10] bao gồm các trường sau: name: là tên của Deployment replicas: là số lượng Pod mà người dùng muốn

Deployment đảm bảo. labels: định nghĩa label cho Pod. name: là tên của container sau khi khởi tạo bên trong Pod. name: là tên của Image dùng dé tạo container. selector: định nghĩa cách mà Deployment tìm các Pod cần quản lý Selector sử dụng thuộc tính matchLabels để làm điều này Bất kỳ Pod nào có label định nghĩa là “” sẽ được Deployment select và quản lý. template: template ding để định nghĩa thông tin về Pod mà người ding muốn chạy. containers: Mỗi container sẽ có ít nhất là tên container và Image được sử dụng để tạo container.

3.3 Phương pháp triển khai CI/CD cho ứng dụng lên AKS

Mô hình CI/CD Pipelines được em xây dựng nhằm triển khai ứng dụng lên

Ca m Monitor ari Azure i ‘a Container Grafana

Hình 3.7: Sơ đồ CI/CD pipeline của ứng dụng được triển khai

Giai đoạn plan: bộ phận phát trién cũng như triển khai sẽ được lên plan, công việc bằng công cu Azure Boards Day là một trong những công cụ thuộc Azure

DevOps, trong đó cũng có công cụ Azure Pipelines là công cụ CI/CD chính mà nhóm tác sử dụng Để trò chuyện cũng như nhận các task, alert về ứng dụng, hệ thống khi gặp trục trặc thì nhóm tác giả quyết định sử dụng Microsoft Teams Đây là ứng dụng trò chuyện có nhiều tính năng, trong đó nó hỗ trợ việc webhook giúp cho các công cụ monitor như Grafana có thể gửi cho các alert khi các metric giám sát hệ thống bat thường.

Giai đoạn build và test: nhóm tác giả khuyến khích bộ phận phát triển sử dụng Visual Studio Code dé thực hiện code ứng dụng vì nó có hỗ trợ nhiều extension cho việc code ứng dụng Flask Sử dung git dé lưu trữ mã nguồn và GitHub dé lưu trữ mã nguồn ở remote Vì đây là ứng dung web Python Flask đơn giản nên việc test chiếm phần khá nhỏ, nhóm tác giả khuyến khích sử dụng framework test Pytest, là một framework test python đơn giản, giúp cho việc test tính năng nhanh, hiệu quả.

Khi push code lên GitHub, Azure Pipelines sẽ tự động trigger sự kiện commit hoặc sự kiện merge, nhờ file azure-pipeline mà nhóm tác giả đã viết Azure sẽ tự động thực hiện build các Docker Image, nếu giai đoạn này gặp lỗi thì sẽ thông báo thất bại và sẽ không triển khai lên AKS Cụ thể nội dung pipelines thì sẽ được nói trong phan Pipelines ở Chương Triển khai — Thực nghiệm.

Sau khi thực hiện việc build các image, pipeline sẽ tự động release các phiên bản Image lên Registry, lưu trữ nó tại dây theo từng phiên bản Khi đến giai đoạn triển khai các pod lên AKS, thì hệ thống sẽ tự động kéo các image được lưu trữ này về và tạo các pod mới từ image này Sau đó khi ứng dụng đã chạy thành công trên hệ thống AKS thì việc giám sát nó sẽ do Prometheus và Grafana mà em đã cài quản lí và hiện lên giao diện web Khi một trong các metric được giám sát có sự tăng hay giảm bat thường và vượt qua mức quy định thì Grafana sẽ gửi 1 thông báo alert về cho team thông qua Microsoft Teams, việc này giúp cho giám sát, quản lí ứng dụng tốt hơn Cụ thể việc triển khai, tạo các pod từ image sẽ được mô tả trong phần

3.4 Phương pháp kiểm tra và cấu hình hệ thống Kubernetes

Phương pháp này được dùng cho tat cả hệ thống Kubernetes Dé quá trình cấu hình tự động bằng Ansible được thành công, cần đảm bảo cho các node trong hệ thống có thể sử dụng giao thức SSH dé kết nối tới nó.

Quá trình tự động hoá bao gồm một số bước như sau:

-_ Triển khai hệ thống gồm Control Server và các máy Remote Host, các máy này chính là các node trong Kubernetes cluster Và đảm bảo trên máy

Control Server đã cài đặt sẵn công cụ Ansible.

- Khởi tao thông tin các Remote Host thông qua file Inventory.

- Dựa vào tài liệu về chuẩn CIS Benchmark, xây dựng các Playbook phù hợp với hệ thống Kubernetes.

- _ Tiến hành kiểm tra và cấu hình một cách tự động: e _ Khi một nhiệm vụ kiểm tra hoặc cấu hình tự động hoá được kích hoạt,

Ansible thiết lập một kết nối SSH đến các Remote Host để gửi và triển khai Package gồm các Inventory, Playbook, Module. e Trên các máy được chọn, các tác vụ của package đó sẽ được thực thi.

Sau khi kết thúc, Ansible sẽ nhận kết quả trả về với định dạng JSON chứa kết quả thực thi từ các máy này. e_ Kết thúc quá trình tự động hoá, các Package đã được gửi lên các máy này sẽ bị xóa.

3.4.1 Phương pháp kết nối SSH vào các node AKS

3.4.1.1 Trường hợp kết nối SSH tới private node

AKS cluster oe agentnode1 agentnode2

Pod ọ tubect! exec- > aks-ssh-session ssh và

Hình 3.8: Mô hình SSH vào AKS node

B 2.2 Phương pháp thực hiện với mô hình sử dụng AKS 4 Xõy dựng Playbook kiểm tra cấu hỡnh . - c -. c 3ỉ 4.1 Mục đích 4.2 Cấu trúc các file playbook .: c:22cvvr+eevvvvrrerrrsrrrrrr 39 4 Định dạng của file output HTML 2-5-5 2 =<++=s2 43 4.4 Phương pháp thực hiện kiểm tra cầu hình với CIS Benchmark

Nhóm đã nghiên cứu lí do, cách các thành phần trong Kubernetes hoạt động và chỉnh sửa, áp dụng các câu lệnh được CIS Benchmark quy định để phù hợp với hệ thống.

3.4.4.1 Cấu trúc một tiêu chuẩn kiểm tra cấu hình theo CIS

Một tiêu chuẩn kiểm tra hoặc cấu hình theo CIS benchmark bao gồm một số phần như sau [13]:

- Profile Applicability: bao gồm thông tin về level của cau hình và node nào sẽ được cấu hình.

- Description: mô tả về tiêu chuẩn đó.

- Rationale: giải thích lí do tại sao nên câu hình theo tiêu chuẩn này.

- Impact: ảnh hưởng của tiêu chuẩn đến hệ thống khi thực hiện kiểm tra hoặc cầu hình.

- Audit: cách kiểm tra xem hệ thống có đạt được tiêu chuẩn được nêu ra chưa.

- Remediation: cách dé cấu hình lại nếu node được kiểm tra không đạt chuẩn.

- Default Value: giá trị được thiết lập sẵn của đối tượng được kiểm tra.

Profile Applicability: e Level 1 - Master Node

Ensure that the API server pod specification file ownership is set to root: root.

The API server pod specification file controls various parameters that set the behavior of the API server You should set its file ownership to maintain the integrity of the file.

The file should be owned by root: root.

Run the below command (based on the file location on your system) on the Control

Plane node For example, stat -c %U:%G /etc/kubernetes/manifests/kube-apiserver.yaml

Verify that the ownership is set to root: root.

Run the below command (based on the file location on your system) on the Control

Plane node For example, chown root:root /etc/kubernetes/manifests/kube-apiserver.yaml

By default, the kube-apiserver.yam1 file ownership is set to root: root.

Hình 3.17: Tiêu chuẩn cấu hình 1.1.2 của CIS benchmark

Dựa vào tiêu chuẩn được đưa ra, nhóm sẽ thực hiện viết các Playbook với các câu lệnh phù hợp, tuy nhiên nhóm sẽ sửa chữa dé nó phù hợp với hệ thống mình đang áp dụng trong đề tài khóa luận.

~ name: 1.1.2 Ensure that the API server pod specification file ownership is set to root:root block:

~ ansible builtin.shell: stat -c %U:%G /etc/kubernetes/manifestskube-apiserver.yaml register: filestat ignore_errors: yes changed_when: false

~ name: Add passed task to list set_fact: section1_tasks: '{{ section1_tasks + [{ "task_number""1.1.2","task_description":"Ensure that the API server pod specification file

‘ownership is set to root:root”,"task_status":"PASSED’, "configuration" filestat.stdout,"script"."" }]}}' when: filestat.stdout [oot:root'

- name: Add failed task to list set_fact: section1_tasks: '{{ section1_tasks + [{ "task_number":"1.1.2","task_description":"Ensure that the API server pod specification file ownership is set to root:root”,"task_status"."FAILED", "configuration" filestat.stdout,"script"."Script here” }] }}|

Hình 3.18: Task thực hiện kiểm tra tiêu chuẩn 1.1.2

Trong task này, nhóm sẽ sử dụng module là shell để thực hiện câu lệnh stat, câu lệnh này với option là -c %U:%G sẽ lấy thông tin của file xem nó thuộc user nao cũng như group nào Nếu output của câu lệnh là “root:root” thi task này sẽ được đánh dau là PASSED, sau đó lưu vào một mảng bao gồm thông tin kiểm tra tiêu chuẩn của nhiều task khác nhau Mang nay sẽ được dùng để ghi ra file output

3.4.4.2 Các tiêu chuẩn được áp dung để kiểm tra cấu hình trong đề tài

(a) Kubernetes/Minikube Đối với đề tài, nhóm đã chọn lọc 90 trên 124 nội dung các tiêu chuẩn kiểm tra cầu hình cho Kubernetes để tiến hành xây dựng các Playbook Những nội dung mà nhóm lựa chọn là những nội dung có thẻ thực hiện tự động thông qua Ansible playbook Còn những nội dung yêu cầu cần phải câu hình thủ công hoặc cần phải tùy thuộc vào nhu cầu triển khai ứng dụng thì nhóm không áp dụng vào phạm vi đề tài này Chỉ tiết những nội dung không áp dụng, cần cấu hình thủ công nằm ở phụ lục Các Playbook sẽ được chia thành 2 loại là Playbook ding dé kiểm tra cấu hình và Playbook dùng dé tự động cấu hình lai các tiêu chuẩn mà Playbook kiểm tra cấu hình đã chỉ ra là chưa đạt Các nội dung mà nhóm lựa chọn để viết playbook kiểm tra và cấu hình được ghi chỉ tiết ở phụ lục.

Section Số nội dung Số nội dung Số play sử Số play sử theo chuẩn tiêu chuẩn dụng trong dụng trong

CIS được áp dụng playbook playbook

Bang 3.1: Số playbook được sử dụng đối với Minikube

(b) Azure Kubernetes Service Đối với đề tài, nhóm đã chọn lọc 30 trên 56 nội dung các tiêu chuẩn kiểm tra cấu hình cho AKS đề tiến hành xây dựng các Playbook Tương tự với phần Kubernetes/Minikube, những nội dung nhóm lựa chọn cho phần AKS là những nội dung có thé tự động thực hiện bằng Ansible Những nội dung không áp dung là những nội dung cần cấu hình thủ công, cầu hình thông qua Azure Portal, cũng như cần thêm Azure Monitor, Azure Active Directory Chỉ tiết những nội dung không áp dụng, cần

4 cấu hình thủ công nằm ở phụ lục Các Playbook sẽ được chia thành 2 loại là Playbook ding đề kiểm tra cấu hình và Playbook dùng dé tự động cấu hình lại các tiêu chuẩn mà Playbook kiểm tra cấu hình đã chi ra là chưa đạt Các nội dung mà nhóm lựa chọn đề viết playbook kiểm tra và cầu hình được ghi chỉ tiết ở phụ lục.

Section Số nội dung Số nội dung Số play sử Số play sử theo chuẩn tiêu chuẩn dụng trong dụng trong

CIS được áp dụng playbook playbook

Bảng 3.2: Số playbook được sử dụng đối với AKS

Chương 4 TRIEN KHAI - THỰC NGHIEM

4.1 Triển khai ứng dụng Mieroservices

4.1.1 Triển khai ứng dụng lên Kubernetes/Minikube

Trước tiên, để triển khai ứng dụng lên Kubernetes thì nhóm tác giả sẽ build các image tương ứng với các ứng dụng riêng biệt và push nó lên Container Registry.

Khi lưu trữ các image trên Registry thì khi nhóm chạy ứng dụng lên K8S, nó sẽ không cần build lại các image nữa.

Dé triển khai các ứng dụng va service lên K8S nhóm tác giả đã viết file manifest deployment như sau:

Hinh 4.1: File manifest deployment trién khai service frontend

Nội dung file manifest trên là khởi tạo pod cho ứng dụng frontend và chạy service tương ứng của pod đó Tương tự như deployment cho frontend, các file deployment khác cho các service cũng như vậy, tuy nhiên cần phải thay đổi các port tương ứng với từng pod.

Với database dé giảm chi phí và đảm bảo hiệu suất vẫn được tối ưu, thay vì chạy 3 pod database như chạy 3 container đã đề cập ở phần trước, nhóm sẽ gộp lại thành 1 pod database trong đó có 3 database khác nhau ứng với mỗi service Về nội dụng file manifest deployment cho pod database sử dụng MySQL như sau:

1 # this pvc will be used to store downloaded init.sql file

29 # this pvc will be used to store mysql database

Hinh 4.2: File manifest trién khai Volume cho MySQL

Nhóm tác giả đã tạo volume cho database, việc tạo volume này giúp cho việc nếu pod database có bị ngắt hoặc khởi động lại thì các file lưu trữ database vẫn được lưu lại.

Phần deployment nhóm đã thực hiện ở phần đồ án chuyên ngành nên không trình bày chi tiết ở khóa luận Nhìn chung, nội dung của phần deployment là khởi tạo container MySQL bằng image mysqI:8 là phiên bản 8 của MySQL mà nhóm tác giả lựa chọn Phần deployment cũng liên kết volume tạo ở trước vào ứng dụng, đặc biệt nhóm tác giả sử dung | file sql được trích xuất ra khi chạy ở local, vì khi triển khai lên Kubernetes thì đây là môi trường production nên cần đảm bảo việc không khởi tạo database ban dau tại đây Do đó, nhóm tác giả đã khởi tạo database từ trước và khi triển khai ứng dụng, pod database chi cần import các bảng, dữ liệu đã được trích xuất vào và sau đó các đữ liệu đã sẵn sàng.

Cuối cùng, nhóm tác giả tạo service cho pod database để các pod khác có thể kết nói được.

Dé expose port tương ứng với Frontend-app nhóm tác gia sử dụng Nodeport trong service Frontend-app, điều này giúp cho người dùng có thé truy cập thông qua địa chỉ IP của node và port được chỉ định.

Dưới đây là mô hình triển khai ứng dụng lên Kubernetes Mô tả việc sử dụng Nodeport của service Frontend-app dé điều khiển hướng truy cập tới từng service, và số lượng cụ thể các pod được triển khai:

Hình 4.3: Mô hình triển khai ứng dụng trên Minikube 4.1.2 Triển khai ứng dụng lên Azure Kubernetes Service

4.1.2.1 Mô hình triển khai lên AKS

Cụ thể mô hình triển khai ứng dụng lên AKS như sau:

"4 đa wie oe cm conaler wot

Hình 4.4: Mô hình triển khai ứng dụng trên AKS

Ngày đăng: 23/10/2024, 00:24

HÌNH ẢNH LIÊN QUAN

Bảng 3.1: Số playbook được sử dụng đối với Minikube...............................---.---2 AT Bang 3.2: Số playbook được sử dụng đối với AKS.......................---....---ccccccccscceccz 48 - Khóa luận tốt nghiệp An toàn thông tin: Triển khai giải pháp bảo mật cho hệ thống Kubernetes và Azure Kubernetes Service sử dụng CIS Benchmark
Bảng 3.1 Số playbook được sử dụng đối với Minikube...............................---.---2 AT Bang 3.2: Số playbook được sử dụng đối với AKS.......................---....---ccccccccscceccz 48 (Trang 17)
Hình 2.1: Kiến trúc Kubernetes - Khóa luận tốt nghiệp An toàn thông tin: Triển khai giải pháp bảo mật cho hệ thống Kubernetes và Azure Kubernetes Service sử dụng CIS Benchmark
Hình 2.1 Kiến trúc Kubernetes (Trang 24)
Hình 2.3: Mô hình hoạt động của Ansible [4] - Khóa luận tốt nghiệp An toàn thông tin: Triển khai giải pháp bảo mật cho hệ thống Kubernetes và Azure Kubernetes Service sử dụng CIS Benchmark
Hình 2.3 Mô hình hoạt động của Ansible [4] (Trang 34)
Hình 2.5: Python Flask Framework - Khóa luận tốt nghiệp An toàn thông tin: Triển khai giải pháp bảo mật cho hệ thống Kubernetes và Azure Kubernetes Service sử dụng CIS Benchmark
Hình 2.5 Python Flask Framework (Trang 40)
Bảng so sánh dưới đây mô tả những nội dung được hỗ trợ giữa Azure Pipelines và GitLab CI/CD - Khóa luận tốt nghiệp An toàn thông tin: Triển khai giải pháp bảo mật cho hệ thống Kubernetes và Azure Kubernetes Service sử dụng CIS Benchmark
Bảng so sánh dưới đây mô tả những nội dung được hỗ trợ giữa Azure Pipelines và GitLab CI/CD (Trang 44)
Hình 3.2: Thông tin các addons trong Minikube - Khóa luận tốt nghiệp An toàn thông tin: Triển khai giải pháp bảo mật cho hệ thống Kubernetes và Azure Kubernetes Service sử dụng CIS Benchmark
Hình 3.2 Thông tin các addons trong Minikube (Trang 46)
Hình 3.1: Thông tin các node được tao bằng Minikube - Khóa luận tốt nghiệp An toàn thông tin: Triển khai giải pháp bảo mật cho hệ thống Kubernetes và Azure Kubernetes Service sử dụng CIS Benchmark
Hình 3.1 Thông tin các node được tao bằng Minikube (Trang 46)
Hình sau: - Khóa luận tốt nghiệp An toàn thông tin: Triển khai giải pháp bảo mật cho hệ thống Kubernetes và Azure Kubernetes Service sử dụng CIS Benchmark
Hình sau (Trang 48)
Hình 3.6: Cấu trúc file YAML Cấu trúc một file Deployment [10] bao gồm các trường sau: - Khóa luận tốt nghiệp An toàn thông tin: Triển khai giải pháp bảo mật cho hệ thống Kubernetes và Azure Kubernetes Service sử dụng CIS Benchmark
Hình 3.6 Cấu trúc file YAML Cấu trúc một file Deployment [10] bao gồm các trường sau: (Trang 50)
Hình tự động được dù không có hiểu biết nhiều về Ansible. - Khóa luận tốt nghiệp An toàn thông tin: Triển khai giải pháp bảo mật cho hệ thống Kubernetes và Azure Kubernetes Service sử dụng CIS Benchmark
Hình t ự động được dù không có hiểu biết nhiều về Ansible (Trang 57)
Hình 3.13: Cấu trúc thư mục task của role thực hiện CIS benchmark - Khóa luận tốt nghiệp An toàn thông tin: Triển khai giải pháp bảo mật cho hệ thống Kubernetes và Azure Kubernetes Service sử dụng CIS Benchmark
Hình 3.13 Cấu trúc thư mục task của role thực hiện CIS benchmark (Trang 58)
Hình 3.16: Giao diện một file output sau khi benchmark - Khóa luận tốt nghiệp An toàn thông tin: Triển khai giải pháp bảo mật cho hệ thống Kubernetes và Azure Kubernetes Service sử dụng CIS Benchmark
Hình 3.16 Giao diện một file output sau khi benchmark (Trang 61)
Hình 4.4: Mô hình triển khai ứng dụng trên AKS - Khóa luận tốt nghiệp An toàn thông tin: Triển khai giải pháp bảo mật cho hệ thống Kubernetes và Azure Kubernetes Service sử dụng CIS Benchmark
Hình 4.4 Mô hình triển khai ứng dụng trên AKS (Trang 70)
Hình 4.3: Mô hình triển khai ứng dụng trên Minikube 4.1.2. Triển khai ứng dụng lên Azure Kubernetes Service - Khóa luận tốt nghiệp An toàn thông tin: Triển khai giải pháp bảo mật cho hệ thống Kubernetes và Azure Kubernetes Service sử dụng CIS Benchmark
Hình 4.3 Mô hình triển khai ứng dụng trên Minikube 4.1.2. Triển khai ứng dụng lên Azure Kubernetes Service (Trang 70)
Hình 4.5: Phần đầu của file pipelines - Khóa luận tốt nghiệp An toàn thông tin: Triển khai giải pháp bảo mật cho hệ thống Kubernetes và Azure Kubernetes Service sử dụng CIS Benchmark
Hình 4.5 Phần đầu của file pipelines (Trang 72)
Hình 4.7: Sử dung plugin replace token dé thay đổi thông tin trong file config.py - Khóa luận tốt nghiệp An toàn thông tin: Triển khai giải pháp bảo mật cho hệ thống Kubernetes và Azure Kubernetes Service sử dụng CIS Benchmark
Hình 4.7 Sử dung plugin replace token dé thay đổi thông tin trong file config.py (Trang 74)
Hình 4.8: Sử dung Artifact để lưu trữ các manifest deploy AKS - Khóa luận tốt nghiệp An toàn thông tin: Triển khai giải pháp bảo mật cho hệ thống Kubernetes và Azure Kubernetes Service sử dụng CIS Benchmark
Hình 4.8 Sử dung Artifact để lưu trữ các manifest deploy AKS (Trang 75)
Hình 4.9: Sử dung replace token dé thay đồi thông tin trong các file manifest - Khóa luận tốt nghiệp An toàn thông tin: Triển khai giải pháp bảo mật cho hệ thống Kubernetes và Azure Kubernetes Service sử dụng CIS Benchmark
Hình 4.9 Sử dung replace token dé thay đồi thông tin trong các file manifest (Trang 76)
Hình 4.10: Phần deploy lên AKS sử dụng các file manifest - Khóa luận tốt nghiệp An toàn thông tin: Triển khai giải pháp bảo mật cho hệ thống Kubernetes và Azure Kubernetes Service sử dụng CIS Benchmark
Hình 4.10 Phần deploy lên AKS sử dụng các file manifest (Trang 77)
Hình 4.11: Workflow sử dụng công cu tự động hóa - Khóa luận tốt nghiệp An toàn thông tin: Triển khai giải pháp bảo mật cho hệ thống Kubernetes và Azure Kubernetes Service sử dụng CIS Benchmark
Hình 4.11 Workflow sử dụng công cu tự động hóa (Trang 78)
Hình 4.12: Mô hình mang của kịch ban 1 - Khóa luận tốt nghiệp An toàn thông tin: Triển khai giải pháp bảo mật cho hệ thống Kubernetes và Azure Kubernetes Service sử dụng CIS Benchmark
Hình 4.12 Mô hình mang của kịch ban 1 (Trang 81)
Hình 4.13: Giao diện lựa chọn san phẩm của ứng dụng Microservices - Khóa luận tốt nghiệp An toàn thông tin: Triển khai giải pháp bảo mật cho hệ thống Kubernetes và Azure Kubernetes Service sử dụng CIS Benchmark
Hình 4.13 Giao diện lựa chọn san phẩm của ứng dụng Microservices (Trang 82)
Hình 4.15: Giao diện điền thông tin các node trong Minikube - Khóa luận tốt nghiệp An toàn thông tin: Triển khai giải pháp bảo mật cho hệ thống Kubernetes và Azure Kubernetes Service sử dụng CIS Benchmark
Hình 4.15 Giao diện điền thông tin các node trong Minikube (Trang 83)
Hình 4.16: Giao diện tiến trình kiểm tra Minikube - Khóa luận tốt nghiệp An toàn thông tin: Triển khai giải pháp bảo mật cho hệ thống Kubernetes và Azure Kubernetes Service sử dụng CIS Benchmark
Hình 4.16 Giao diện tiến trình kiểm tra Minikube (Trang 84)
Hình 4.20: Kết quả kiểm tra lại sau khi tự động cấu hình Minikube - Khóa luận tốt nghiệp An toàn thông tin: Triển khai giải pháp bảo mật cho hệ thống Kubernetes và Azure Kubernetes Service sử dụng CIS Benchmark
Hình 4.20 Kết quả kiểm tra lại sau khi tự động cấu hình Minikube (Trang 86)
Hình 4.19: Giao diện tiến trình tự động cấu hình Minikube - Khóa luận tốt nghiệp An toàn thông tin: Triển khai giải pháp bảo mật cho hệ thống Kubernetes và Azure Kubernetes Service sử dụng CIS Benchmark
Hình 4.19 Giao diện tiến trình tự động cấu hình Minikube (Trang 86)
Hình 4.21: Mô hình mang của kịch ban 2 - Khóa luận tốt nghiệp An toàn thông tin: Triển khai giải pháp bảo mật cho hệ thống Kubernetes và Azure Kubernetes Service sử dụng CIS Benchmark
Hình 4.21 Mô hình mang của kịch ban 2 (Trang 87)
Bảng 4.2: Mô hình kịch bản với AKS - Khóa luận tốt nghiệp An toàn thông tin: Triển khai giải pháp bảo mật cho hệ thống Kubernetes và Azure Kubernetes Service sử dụng CIS Benchmark
Bảng 4.2 Mô hình kịch bản với AKS (Trang 88)
Hình 4.25: Giao diện danh sách kết quả kiểm tra các node trên AKS - Khóa luận tốt nghiệp An toàn thông tin: Triển khai giải pháp bảo mật cho hệ thống Kubernetes và Azure Kubernetes Service sử dụng CIS Benchmark
Hình 4.25 Giao diện danh sách kết quả kiểm tra các node trên AKS (Trang 92)