如何实现跨账号KMS加密OSS资源

本文介绍如何通过阿里云账号A以KMS加密的方式加密账号B下的OSS资源。

前提条件

  • 已通过阿里云账号B创建Bucket。具体操作,请参见创建存储空间

  • 已通过阿里云账号A在与阿里云账号B创建Bucket所在地域创建密钥。具体操作,请参见创建密钥

  • 已通过阿里云账号A为该账号下的RAM用户授予AliyunKMSFullAccess权限。具体步骤,请参见为RAM用户授权

操作步骤

  1. 使用阿里云账号B以Bucket Policy的方式为阿里云账号A下的RAM用户授予oss:PutObject的权限。

    1. 使用阿里云账号B登录OSS管理控制台

    2. 在左侧导航栏,单击Bucket 列表,然后单击目标Bucket名称。

    3. 在左侧导航栏,选择权限控制 > Bucket 授权策略

    4. Bucket 授权策略页面的按图形策略添加页签,单击新增授权

    5. 新增授权面板,按以下说明配置各项参数,然后单击确定

      配置项

      说明

      授权资源

      选中整个Bucket

      授权用户

      选中其他账号,然后输入阿里云账号A下的RAM用户UID。

      授权操作

      选中高级设置

      效力

      选择允许

      操作

      下拉选择oss:PutObject

  2. 通过阿里云账号A下的RAM用户加密阿里云账号B下的目标Bucket内的Object。

    通过控制台

    1. 使用阿里云账号A下的RAM用户登录阿里云控制台。具体操作,请参见RAM用户登录阿里云控制台

    2. 使用阿里云账号A下的RAM用户登录OSS上传文件页面。

      OSS上传文件页面链接构成方式为https://oss.console.aliyun.com/bucket/{regionid}/{bucketname}/object/upload。实际使用时,请对应替换Bucket所在的地域(regionid)以及Bucket名称(bucketname)。

    3. 上传Object并指定Object的加密方式为KMS,加密密钥指定为阿里云账号A创建的密钥(即CMK ID)。

      具体步骤,请参见上传文件

    通过ossutil

    1. 为阿里云账号A下的RAM用户配置访问凭证。

      实际使用时,请相应替换endpoint(阿里云账号B已创建Bucket对应的endpoint)、accessKeyID以及accessKeySecret(阿里云账号A下的RAM用户Accesskey)信息。

      [Credentials]
      endpoint = oss-cn-hangzhou.aliyuncs.com
      accessKeyID = LTAI*************
      accessKeySecret = 67DL*******************
    2. 通过阿里云账号A下的RAM用户执行以下命令,将文件examplefile.txt上传到阿里云账号B下的examplebucket,并指定文件的加密方式为KMS,加密算法为AES256,加密密钥指定为阿里云账号A创建的密钥(即CMK ID)。

      ossutil cp examplefile.txt oss://examplebucket --meta=x-oss-server-side-encryption:KMS#x-oss-server-side-encryption-key-id:7bd6e2fe-cd0e-483e-acb0-f4b9e1******

      如果阿里云账号A下的RAM用户用于上传资源到阿里云账号的CMK ID的加密算法为SM4,则上传时需要通过x-oss-server-side-data-encryption指定SM4的加密算法,示例如下:

      ossutil cp examplefile.txt oss://examplebucket --meta=x-oss-server-side-encryption:KMS#x-oss-server-side-data-encryption:SM4#x-oss-server-side-encryption-key-id:7bd6e2fe-cd0e-483e-acb0-f4b9e1******