阿里云容器服务Kubernetes集群如何使用BYOK创建加密云盘。

前提条件

使用BYOK创建加密云盘时,系统需要使用同一地域的密钥管理服务(KMS)提供的BYOK(Bring Your Own Key)。因此,首次通过控制台或者API使用云盘加密功能之前,您必须先开通密钥管理服务请参见开通方法

背景信息

当您的业务因为安全需求或法规合规要求等原因,需要对存储在云盘上的数据进行加密保护时,您可以使用阿里云ECS云盘加密功能,无需构建、维护和保护自己的密钥管理基础设施,即可保护数据的隐私性和自主性。

本文中的云盘指代云盘和共享块存储中的数据盘。下文中统一简称为云盘,除非特别指出。

创建BYOK

创建BYOK并记录密钥ID。

  1. 登录KMS 控制台
  2. 在控制台左上角处,单击创建密钥
  3. 在弹出的创建密钥对话框中,填写别名描述
  4. 高级选项下,选择密钥材料来源
    • 选择阿里云KMS:密钥材料将由KMS生成。
    • 选择外部:KMS将不会生成密钥材料,您需要将自己的密钥材料导入。详情请参见导入密钥材料
  5. 单击确定

创建StorageClass使用BYOK

在容器服务Kubernetes集群中新建StorageClass,并配置encrypted: "true" kmsKeyId: <your BYOK>

  1. 通过 kubectl 连接 Kubernetes 集群
  2. 执行如下命令,打开您的storageclass-ssd-byok.yaml文件。
    $ cat storageclass-ssd-byok.yaml
    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: alicloud-disk-ssd-byok
    parameters:
      type: cloud_ssd
      encrypted: "true"
      kmsKeyId: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
    provisioner: alicloud/disk
    reclaimPolicy: Delete
    说明 kmsKeyId需要替换成创建BYOK中填写的密钥ID。
  3. 执行如下命令,创建StorageClass。
    kubectl apply -f storageclass-ssd-byok.yaml
  4. 执行如下命令,查看StorageClass。
    $ kubectl get sc
    
    NAME                       PROVISIONER     AGE
    alicloud-disk-available    alicloud/disk   19m
    alicloud-disk-efficiency   alicloud/disk   19m
    alicloud-disk-essd         alicloud/disk   19m
    alicloud-disk-ssd          alicloud/disk   19m
    alicloud-disk-ssd-byok     alicloud/disk   28s

创建示例应用并挂载云盘

  1. 执行如下命令,打开您的deploy.yaml文件。
    $ cat deploy.yaml
    kind: PersistentVolumeClaim
    apiVersion: v1
    metadata:
      name: disk-ssd-byok
    spec:
      accessModes:
        - ReadWriteOnce
      storageClassName: alicloud-disk-ssd-byok
      resources:
        requests:
          storage: 20Gi
    ---
    kind: Pod
    apiVersion: v1
    metadata:
      name: disk-pod-ssd-byok
    spec:
      containers:
      - name: disk-pod-byok
        image: nginx
        volumeMounts:
          - name: disk-pvc-byok
            mountPath: "/mnt"
      restartPolicy: "Never"
      volumes:
        - name: disk-pvc-byok
          persistentVolumeClaim:
            claimName: disk-ssd-byok
  2. 执行如下命令,创建应用。
    kubectl apply -f deploy.yaml
  3. 执行如下命令,查看PV。
    $ kubectl get pv
    NAME                     CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM                   STORAGECLASS             REASON   AGE
    d-j6c5jezzajt9ri47lvjs   20Gi       RWO            Delete           Bound    default/disk-ssd-byok   alicloud-disk-ssd-byok            8s
  4. 登录ECS管理控制台,单击左侧导航栏的存储与快照 > 云盘,在磁盘列表中, 查看磁盘ID为 d-j6c5jezzajt9ri47lvjs的云盘是否已加密。

    磁盘加密

更多关于云盘加密以及BYOK的介绍请参见云盘加密