更新时间:2025-08-19 GMT+08:00

加密对象存储卷

若您的业务对数据安全性和合规性有严格要求,可使用OBS服务端加密功能,对上传到OBS存储的数据进行加密保护。服务端加密是指OBS服务端对客户端上传到OBS的对象进行加密存储。在访问对象时,由OBS服务端对文件进行解密,然后向客户端返回解密后的数据。服务端加密支持SSE-KMS、SSE-OBS、SSE-C三种加密方式,目前,CCE仅支持创建使用SSE-KMS方式加密的对象存储卷。

关于SSE-KMS加密方式的详细介绍,请参见服务端加密

前提条件

  • 在IAM中,已有“cce_cluster_agency”委托。您可前往“IAM控制台 > 委托”页签,查看该委托是否创建。
  • 已经创建好一个集群,且集群版本在1.25.9-r0、1.27.6-r0、1.28.4-r0及以上。
  • 已在集群中安装CCE容器存储(Everest),且插件版本在2.4.153及以上。
  • 已在数据加密服务(DEW)中创建可用密钥,操作详情请参见创建密钥
  • 如果您需要通过命令行创建,需要使用kubectl连接到集群,详情请参见通过kubectl连接集群

约束与限制

  • 该功能正在陆续上线中,具体请以OBS服务声明为准。
  • 使用SSE-KMS服务端加密功能对对象存储卷进行加密时,若需要开启存储桶密钥开关,则需确保“cce_cluster_agency”委托中具有kms:cmk:get、kms:cmk:list、kms:dek:crypto、kms:cmk:create以及kms:dek:create权限。其中“cce_cluster_agency”委托默认配置kms:cmk:get、kms:cmk:list以及kms:dek:crypto权限,而kms:cmk:create以及kms:dek:create权限需手动配置,具体操作请参见配置KMS权限
  • 当需要使用开启了SSE-KMS服务端加密功能的桶或者桶内对象时,请在IAM中为请求者配置kms:cmk:get、kms:cmk:list、kms:cmk:create、kms:dek:create、kms:dek:crypto权限,并确保请求访问的对象存储卷中已挂载对应的访问密钥(AK/SK),以实现对象的上传和下载操作。具体操作请参见给IAM用户授权对象存储卷挂载设置自定义访问密钥(AK/SK)

通过kubectl自动创建SSE-KMS加密的对象存储卷

  1. 使用kubectl连接集群。
  2. 创建pvc-obs-auto.yaml文件。其他参数说明,请参见kubectl命令行方式

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: evs-encrypt-test1
      namespace: default
      annotations:
        everest.io/obs-volume-type: STANDARD
        csi.storage.k8s.io/fstype: s3fs
        everest.io/csi.sse: "kms"                        # 固定填'kms'
        everest.io/csi.data-encryption-algorithm: "xxx"  # 用来加密数据的数据加密算法
        everest.io/crypt-key-id: "xxx"                   # SSE-KMS加密方式下使用的KMS主密钥
        everest.io/csi.sse-kms-key-project-id: "xxx"     # SSE-KMS加密方式下KMS主密钥所属的项目ID
        everest.io/csi.sse-bucket-key-enabled: 'true'    # 非必填项,是否开启存储桶密钥的开关
    spec:
      accessModes:
        - ReadWriteMany
      resources:
        requests:
          storage: 1Gi
      storageClassName: csi-obs
    表1 参数说明

    参数

    说明

    everest.io/csi.sse

    用于创建开启SSE-KMS加密的对象存储,值固定为'kms'。

    everest.io/csi.data-encryption-algorithm

    用于指定数据加密算法,取值为AES_256或SM4。

    • AES_256:表示AES对称密钥。
    • SM4:表示国密SM4对称密钥。

    everest.io/crypt-key-id

    表示SSE-KMS加密方式下使用的KMS主密钥,获取方法请参见查看密钥详细信息

    everest.io/csi.sse-kms-key-project-id

    表示SSE-KMS加密方式下KMS主密钥所属的项目ID(非企业项目ID),获取方式请参见从控制台获取项目ID

    everest.io/csi.sse-bucket-key-enabled

    非必填项,用于开启存储桶密钥开关,取值为'true'或'false'。不填该参数时,默认为'false'。

    • true:表示开启存储桶密钥开关。该开关开启后,可以降低加密请求次数并提升访问效率。
    • false:表示不开启存储桶密钥开关。

    当创建的底层存储为并行文件系统时,该参数必填,且需设置为'true'。

    说明:

    开启存储桶密钥开关时,则需确保“cce_cluster_agency”委托中具有kms:cmk:getkms:cmk:listkms:dek:cryptokms:cmk:create以及kms:dek:create权限。其中“cce_cluster_agency”委托默认配置kms:cmk:getkms:cmk:list以及kms:dek:crypto权限,而kms:cmk:create以及kms:dek:create权限需手动配置,具体操作请参见配置KMS权限

  3. 执行命令创建 PVC。

    kubectl apply -f pvc-obs-auto.yaml

  4. 前往“存储卷声明”页面,查看加密对象存储卷声明是否创建成功,并查看存储配置项是否显示已加密。

配置KMS权限

  1. 登录IAM控制台,在左侧导航栏单击“委托”。在右侧搜索框中,搜索“cce_cluster_agency”。在搜索结果中,单击“cce_cluster_agency”名称,进入基本信息页。
  2. 切换至“授权记录”页签,单击“授权”,右上角单击“新建策略”
  3. “新建策略”步骤中,配置相关参数。本示例仅介绍必要参数,更多参数说明请参见创建自定义策略

    图1 配置权限
    表2

    参数

    说明

    策略名称

    请根据需求自定义策略名称。

    命名规范:长度不超过128个字符,仅只支持大小写字母、中文、数字、空格或特殊字符(-_.,)。

    策略内容

    用于配置具体策略,配置如下:

    • 允许:请选择“允许”
    • 云服务:请选择“数据加密服务(KMS)”。
    • 操作:请勾选“kms:cmk:create”和“kms:dek:create”权限。
    • 所有资源:请选择“所有资源”

  4. 在右下角单击“下一步”,在“确认”弹窗中单击“确定”。当策略列表中出现新建的策略名称,则说明策略创建成功。
  5. 在“授权 > 选择策略”页面,勾选新建的策略名称,并在右下角单击“下一步”。

    图2 选择策略

  6. 在“授权 > 设置最小授权范围”页面,选择“所有资源”,并在右下角单击“确定”。在“授权 > 完成”页面,单击“完成”。