Quay lại danh sách
Tin tức công nghệ

Confidential Compute trên AWS EKS với AMD SEV-SNP, Kata Containers và Trustee KBS

21 tháng 8, 2026

Triển Khai Confidential Compute Trên AWS EKS Với AMD SEV-SNP, Kata Containers Và Trustee

Trong môi trường enterprise hiện đại, bảo vệ dữ liệu khi truyền tải (TLS) và lưu trữ (KMS/LUKS) đã trở thành tiêu chuẩn bắt buộc. Tuy nhiên, dữ liệu đang xử lý (data in use)—nội dung chưa mã hóa nằm trong RAM khi CPU tính toán—vẫn có nguy cơ bị khai thác bởi quản trị viên hệ thống có quyền root trên host, hypervisor của nhà cung cấp cloud, hoặc các lỗ hổng mức kernel. Confidential Computing giải quyết thách thức này bằng cách sử dụng TEE (Trusted Execution Environment) dựa trên phần cứng.

Bài viết này sẽ hướng dẫn chi tiết cách kiến trúc một nền tảng Confidential Computing chuẩn enterprise trên Amazon EKS sử dụng chip AMD EPYC thế hệ 3/4 hỗ trợ AMD SEV-SNP (Secure Encrypted Virtualization-Secure Nested Paging), Kata Containers microVM, và framework xác thực từ xa Trustee (CoCo KBS/AS).

1. Tổng Quan Kiến Trúc

Giải pháp hoạt động bằng cách cô lập các Kubernetes Pods bên trong các microVM riêng biệt. Tại đây, CPU memory register và RAM hệ thống được mã hóa tự động bằng khóa phần cứng được sinh trực tiếp bên trong AMD Secure Processor (SP). Không một hypervisor nào (kể cả AWS Nitro) hay user root của máy chủ vật lý có thể truy cập hoặc thay đổi bộ nhớ của guest microVM.

Thành phầnVai trò trong Confidential StackRanh giới bảo mật (Security Boundary)
AMD SEV-SNPTEE phần cứng cung cấp mã hóa bộ nhớ, chống can thiệp và chống tấn công replay.Cấp độ Silicon / Phần cứng
Kata ContainersChạy Kubernetes Pod bên trong microVM (QEMU/Cloud-Hypervisor) kết nối với SEV-SNP.Ranh giới Hypervisor / MicroVM
Trustee (CoCo)Cung cấp Key Broker Service (KBS) & Attestation Service (AS) để xác thực measurement của enclave.Control Plane Zero-Trust từ xa
AWS EKSĐiều phối các worker node chạy trên các EC2 Instance hỗ trợ SEV-SNP (như C7a, M7a).Framework điều phối Container

2. Khởi Tạo EKS Worker Nodes Hỗ Trợ SEV-SNP

AWS cung cấp tính năng confidential VM trên các dòng instance AMD hiện đại (như c7a hoặc m7a). Dưới đây là cấu hình OpenTofu/Terraform để tạo node group chạy SEV-SNP.

resource 'aws_launch_template' 'sev_snp_nodes' {
  name_prefix   = 'eks-sev-snp-'
  image_id      = 'ami-0123456789abcdef0' # AMI tùy chỉnh đã cài Kata Containers & QEMU SEV-SNP
  instance_type = 'c7a.2xlarge'

  cpu_options {
    core_fraction = 1
    threads_per_core = 2
  }

  private_dns_name_options {
    enable_resource_name_dns_a_record = true
  }

  # Kích hoạt tính năng CPU Confidential Compute
  enclave_options {
    enabled = true
  }

  user_data = base64encode(<<-EOF
    #!/bin/bash
    set -o errexit
    /etc/eks/bootstrap.sh my-eks-cluster \
      --kubelet-extra-args '--node-labels=confidential-compute=true,container-runtime=kata'
  EOF
  )

  tag_specifications {
    resource_type = 'instance'
    tags = {
      Name = 'eks-confidential-node'
      'eks:cpu-architecture' = 'amd-sev-snp'
    }
  }
}

3. Cấu Hình Runtime Kata Containers Cho SEV-SNP

Để hỗ trợ khởi tạo guest microVM với SEV-SNP, Kata Containers phải truyền các tham số khởi tạo SEV-SNP vào QEMU. Tạo tệp cấu hình configuration-qemu-sev.toml và khai báo RuntimeClass trong Kubernetes.

apiVersion: node.k8s.io/v1
kind: RuntimeClass
metadata:
  name: kata-coco-sev-snp
handler: kata-qemu-sev
scheduling:
  nodeSelector:
    confidential-compute: "true"
    container-runtime: kata
tolerations:
- key: "confidential-workload"
  operator: "Exists"
  effect: "NoSchedule"

Cấu hình Kata bên dưới (/opt/kata/share/defaults/kata-containers/configuration-qemu-sev.toml) áp dụng các ràng buộc attestation phần cứng:

[hypervisor.qemu]
path = "/usr/bin/qemu-system-x86_64"
kernel = "/opt/kata/share/kata-containers/vmlinuz-sev.container"
initrd = "/opt/kata/share/kata-containers/kata-containers-initrd-sev.img"
machine_type = "q35"
machine_accelerator = "cpm=on"

[hypervisor.qemu.sev]
enabled = true
sev_snp = true
cbitpos = 51
phys_bits = 48
policy = "0x30000" # Bắt buộc dùng SEV-SNP, tắt debug mode và ngăn cấm migration guest

4. Triển Khai Trustee Key Broker Service (KBS) Và Attestation

Trustee là giải pháp chuẩn của dự án Confidential Containers (CoCo) dùng cho xác thực từ xa (remote attestation). Khi microVM khởi động, nó gửi một Attestation Report đã được mã hóa bằng chữ ký phần cứng của AMD tới Trustee KBS, chứa thông số đo lường (launch measurement) của kernel, initrd và tham số khởi động.

Luồng Xác Thực Attestation

  1. Khởi tạo: Kata bật microVM; AMD Secure Processor đo lường trạng thái boot ban đầu và tạo báo cáo SNP Attestation Report được ký bằng chìa khóa VCEK (Versioned Chip Endorsement Key) của AMD.
  2. Yêu cầu khóa: Enclave client trong microVM gửi báo cáo attestation tới Trustee KBS.
  3. Xác minh: Trustee đối soát chuỗi chứng chỉ VCEK với Root of Trust của AMD và kiểm tra xem thông số measurement có khớp với chính sách an toàn đã đăng ký không.
  4. Giao khóa mã hóa: Sau khi xác thực thành công, Trustee cấp khóa giải mã container image hoặc secret qua kênh mã hóa TLS gắn liền với TEE.
apiVersion: apps/v1
kind: Deployment
metadata:
  name: trustee-kbs
  namespace: confidential-system
spec:
  replicas: 2
  selector:
    matchLabels:
      app: trustee-kbs
  template:
    metadata:
      labels:
        app: trustee-kbs
    spec:
      containers:
      - name: kbs
        image: ghcr.io/confidential-containers/starlight/kbs:v0.8.0
        ports:
        - containerPort: 8080
          name: kbs-port
        volumeMounts:
        - name: kbs-config
          mountPath: /etc/kbs-config.toml
          subPath: kbs-config.toml
        - name: kbs-keys
          mountPath: /opt/kbs/repository
      volumes:
      - name: kbs-config
        configMap:
          name: trustee-kbs-config
      - name: kbs-keys
        secret:
          secretName: trustee-attestation-keys

5. Khởi Tạo Confidential Workload Cho Ứng Dụng Chăn Ngăn Tài Chính

Dưới đây là manifest triển khai ứng dụng xử lý thanh toán ngân hàng chạy bên trong phần cứng AMD SEV-SNP enclave. Container image của ứng dụng chỉ được tải về và giải mã trực tiếp trong RAM của microVM đã mã hóa.

apiVersion: apps/v1
kind: Deployment
metadata:
  name: confidential-payment-processor
  namespace: secure-banking
  labels:
    tier: payment-gateway
spec:
  replicas: 3
  selector:
    matchLabels:
      app: payment-processor
  template:
    metadata:
      labels:
        app: payment-processor
      annotations:
        io.katacontainers.config.hypervisor.machine_type: "q35"
        io.katacontainers.config.hypervisor.sev_policy: "0x30000"
    spec:
      runtimeClassName: kata-coco-sev-snp
      tolerations:
      - key: "confidential-workload"
        operator: "Exists"
        effect: "NoSchedule"
      containers:
      - name: payment-app
        image: private-registry.enterprise.internal/secure/payment-processor:v2.1.0-encrypted
        imagePullPolicy: Always
        resources:
          limits:
            cpu: "2"
            memory: "4Gi"
          requests:
            cpu: "1"
            memory: "2Gi"
        env:
        - name: KBS_URI
          value: "https://trustee-kbs.confidential-system.svc.cluster.local:8080"
        securityContext:
          allowPrivilegeEscalation: false
          readOnlyRootFilesystem: true
          runAsNonRoot: true
          runAsUser: 10001

6. Kiểm Tra Trạng Thái Hardware Attestation Qua CLI

Để đảm bảo Pod đang chạy thực sự bên trong enclave AMD SEV-SNP hợp lệ, bạn có thể kiểm tra trực tiếp driver trong microVM hoặc log của host kernel:

# Kiểm tra driver SEV-SNP trên máy chủ Host
dmesg | grep -i sev

# Kiểm tra driver SEV-SNP bên trong Kata microVM
kubectl exec -it deployment/confidential-payment-processor -n secure-banking -- \
  dmesg | grep -i "sev-snp"

# Kết quả mong đợi trong microVM:
# [    0.000000] AMD Memory Encryption Features active: SEV SEV-ES SEV-SNP
# [    0.214052] Memory Encryption Address Mask: 0x7f0000000000
# [    1.042119] sev-guest /dev/sev-guest: Registered SEV-SNP guest driver

7. Tối Ưu Vận Hành Và Best Practices Bảo Mật

  • Quản lý Launch Measurement: Cập nhật chính sách Trustee KBS (OPA/Rego) mỗi khi có bản cập nhật kernel Kata hoặc thay đổi binary của ứng dụng. Bất kỳ sai lệch nào về measurement đều cảnh báo nguy cơ can thiệp trái phép trên host.
  • Cấu hình No-Debug: Đảm bảo bit 19 trong SEV policy luôn bằng 0 (0x30000). Nếu bật chế độ debug, hypervisor trên host có thể đọc dữ liệu trong RAM, làm mất tác dụng của Confidential Compute.
  • Caching Chứng Chỉ VCEK: Thực hiện cache intermediate certificate của AMD VCEK tại cluster để tránh phụ thuộc vào kết nối Internet tới server AMD khi EKS thực hiện auto-scale workload.