0
0
Lập trình
Admin Team
Admin Teamtechmely

Hướng Dẫn Cấu Hình SSL và Tạo Token Enrollment Cho Elasticsearch Trên Kubernetes

Đăng vào 2 tuần trước

• 4 phút đọc

Chủ đề:

Kibanaelastic

Giới Thiệu

Bài viết này sẽ hướng dẫn bạn cách cấu hình SSL cho Elasticsearch khi triển khai trên môi trường Kubernetes, đồng thời cách tạo token enrollment cho Kibana tự động ngay từ lần khởi động đầu tiên.

Tại Sao Cần Cấu Hình SSL?

Cấu hình SSL là điều cần thiết để đảm bảo an toàn cho các kết nối đến Elasticsearch. Việc này giúp bảo vệ dữ liệu khỏi các cuộc tấn công và đảm bảo rằng chỉ những người dùng hợp lệ mới có thể truy cập vào hệ thống của bạn.

Các Bước Cấu Hình

Dưới đây là các bước thực hiện chi tiết:

Bước 1: Cấu Hình Elasticsearch.yml

Trước tiên, bạn cần chỉnh sửa file elasticsearch.yml để bật tính năng bảo mật và cho phép tạo token:

yaml Copy
xpack.security.enabled: true
xpack.security.enrollment.enabled: true

# Cấu hình SSL cho HTTP layer
xpack.security.http.ssl.enabled: true
xpack.security.http.ssl.keystore.path: /usr/share/elasticsearch/config/certs/elastic-certificates.p12
xpack.security.http.ssl.truststore.path: /usr/share/elasticsearch/config/certs/elastic-certificates.p12

xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.verification_mode: certificate
xpack.security.transport.ssl.keystore.path: /usr/share/elasticsearch/config/certs/elastic-certificates.p12
xpack.security.transport.ssl.truststore.path: /usr/share/elasticsearch/config/certs/elastic-certificates.p12

Bước 2: Thêm InitContainer Để Tạo Token

Sử dụng initContainer trong file Deployment để tạo token trước khi Elasticsearch khởi động và ghi vào file. Dưới đây là một ví dụ file cấu hình Deployment:

yaml Copy
apiVersion: apps/v1
kind: Deployment
metadata:
  name: elasticsearch-deployment
  namespace: elk
spec:
  replicas: 1
  selector:
    matchLabels:
      app: elasticsearch
  template:
    metadata:
      labels:
        app: elasticsearch
    spec:
      containers:
        - name: elasticsearch
          image: docker.elastic.co/elasticsearch/elasticsearch:8.5.0
          ports:
            - containerPort: 9200
            - containerPort: 9300
          volumeMounts:
            - name: elastic-config
              mountPath: /usr/share/elasticsearch/config
            - name: certs
              mountPath: /usr/share/elasticsearch/config/certs
            - name: enrollment-token
              mountPath: /usr/share/elasticsearch/config/token
      initContainers:
        - name: token-generator
          image: docker.elastic.co/elasticsearch/elasticsearch:8.5.0
          command:
            - /bin/bash
            - -c
            - |
              bin/elasticsearch-create-enrollment-token -s kibana > /usr/share/elasticsearch/config/token/kibana-token.txt
          volumeMounts:
            - name: certs
              mountPath: /usr/share/elasticsearch/config/certs
            - name: enrollment-token
              mountPath: /usr/share/elasticsearch/config/token
      volumes:
        - name: elastic-config
          configMap:
            name: elasticsearch-config
        - name: certs
          secret:
            secretName: elasticsearch-certificates
        - name: enrollment-token
          emptyDir: {}

Giải Thích File Cấu Hình

  • InitContainer token-generator: Đây là container chạy trước khi Elasticsearch khởi động. Nó sẽ sinh token bằng lệnh elasticsearch-create-enrollment-token và lưu vào file /usr/share/elasticsearch/config/token/kibana-token.txt.
  • Volumes: Sử dụng một volume để lưu trữ tạm thời file token và một volume khác để chứa chứng chỉ cần thiết cho SSL.

Bước 3: Truy Xuất Token Sau Khi Elasticsearch Khởi Động

Khi Elasticsearch đã được khởi động, bạn có thể lấy token bằng cách sử dụng lệnh sau:

bash Copy
kubectl exec -it <elasticsearch-pod-name> -n elk -- cat /usr/share/elasticsearch/config/token/kibana-token.txt

Lệnh này sẽ in token enrollment để bạn có thể sử dụng cho việc cấu hình Kibana.

Kết Luận

Việc sử dụng initContainer để tự động tạo và lưu trữ token là một cách hiệu quả giúp đơn giản hóa quá trình triển khai Elasticsearch bảo mật trên Kubernetes. Hãy đảm bảo cấu hình SSL vụn vặt nếu cần thiết, hoặc bạn có thể vô hiệu hóa nếu không cần thiết trong quá trình phát triển.
source: viblo

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào