云服务器内容精选

  • 被委托账号或用户为什么无法上传下载KMS加密对象? OBS服务端加密功能使用的前提是已经在IAM中为账号或用户授予OBS OperateAccess和KMS相关权限,如表所示。如果当前账号或用户是被委托方,也需要在委托中被授予OBS OperateAccess权限。请联系你的委托方进行授权,参见委托其他华为云账号管理资源。 您需要通过委托获取临时访问密钥和securitytoken访问OBS。 数据加密服务不是全局服务,委托时KMS Administrator权限需要配置在桶所在区域。 由于委托信息保存在IAM中,配置完成后需要等待大约15分钟权限才能生效。 父主题: 服务端加密
  • 请求示例:将普通对象拷贝为加密对象,且指定加密密钥 1 2 3 4 5 6 7 8 9 PUT /destobject HTTP/1.1 User-Agent: curl/7.29.0 Host: examplebucket.obs.cn-north-4.myhuaweicloud.com x-obs-server-side-encryption:kms x-obs-server-side-encryption-kms-key-id: cn-north-4:783fc6652cf246c096ea836694f71855:key/522d6070-5ad3-4765-9737-9312ddc72cdb Accept: */* Date: Wed, 06 Jun 2018 09:10:29 GMT Authorization: OBS H4IPJX0TQTHTHEBQQCEC:SH3uTrElaGWarVI1uTq325kTVCI= x-obs-copy-source: /bucket/srcobject1
  • 响应示例:在URL中携带签名并上传加密对象 1 2 3 4 5 6 7 8 9 HTTP/1.1 200 OK Server: OBS x-obs-request-id: BB78000001648480AF3900CED7F15155 ETag: "d8bffdfbab5345d91ac05141789d2477" x-obs-server-side-encryption: kms x-obs-server-side-encryption-kms-key-id: cn-north-4:783fc6652cf246c096ea836694f71855:key/522d6070-5ad3-4765-9737-9312ddc72cdb x-obs-id-2: oRAXhgwdaLc9wKVHqTLSmQB7I35D+32AAAUJAIAABAAAQAAEAABAAAQAAEAABCS Date: Wed, 06 Jun 2018 09:10:29 GMT Content-Length: 0
  • 请求示例:使用默认密钥对上传的对象进行加密 1 2 3 4 5 6 7 8 9 10 11 PUT /encryp1 HTTP/1.1 User-Agent: curl/7.29.0 Host: examplebucket.obs.cn-north-4.myhuaweicloud.com Accept: */* Date: Wed, 06 Jun 2018 09:08:21 GMT Authorization: OBS H4IPJX0TQTHTHEBQQCEC:f3/7eS6MFbW3JO4+7I5AtyAQENU= x-obs-server-side-encryption:kms Content-Length: 5242 Expect: 100-continue [5242 Byte object contents]
  • 请求示例:使用指定密钥对上传的对象进行加密 1 2 3 4 5 6 7 8 9 10 11 12 PUT /encryp1 HTTP/1.1 User-Agent: curl/7.29.0 Host: examplebucket.obs.cn-north-4.myhuaweicloud.com Accept: */* Date: Wed, 06 Jun 2018 09:08:50 GMT Authorization: OBS H4IPJX0TQTHTHEBQQCEC:f3/PWjkXYTYGs5lPOctTNEI2QENU= x-obs-server-side-encryption:kms x-obs-server-side-encryption-kms-key-id: 522d6070-5ad3-4765-43a7-a7d1-ab21f498482d Content-Length: 5242 Expect: 100-continue [5242 Byte object contents]
  • 响应示例:使用指定密钥对上传的对象进行加密 1 2 3 4 5 6 7 8 9 HTTP/1.1 200 OK Server: OBS x-obs-request-id: 8DF400000163D45AA81D038B6AE4C482 ETag: "d8bffdfbab5345d91ac05141789d2477" x-obs-server-side-encryption: kms x-obs-server-side-encryption-kms-key-id: cn-north-4:783fc6652cf246c096ea836694f71855:key/522d6070-5ad3-4765-43a7-a7d1-ab21f498482d x-obs-id-2: 32AAAUJAIAABAdiAEAABA09AEAABCTv7cHmAn12BAG83ibUsiET5eqlCqg Date: Wed, 06 Jun 2018 09:08:50 GMT Content-Length: 0
  • 响应示例:使用默认密钥对上传的对象进行加密 1 2 3 4 5 6 7 8 9 HTTP/1.1 200 OK Server: OBS x-obs-request-id: 8DF400000163D45AA81D038B6AE4C482 ETag: "d8bffdfbab5345d91ac05141789d2477" x-obs-server-side-encryption: kms x-obs-server-side-encryption-kms-key-id: cn-north-4:783fc6652cf246c096ea836694f71855:key/522d6070-5ad3-4765-9737-9312ddc72cdb x-obs-id-2: 32AAAUJAIAABAAAQAAEAABAAAQAAEAABCTv7cHmAnGfBAGXUHeibUsiETTNqlCqC Date: Wed, 06 Jun 2018 09:08:21 GMT Content-Length: 0
  • 响应示例:将普通对象拷贝为加密对象,且指定加密密钥 1 2 3 4 5 6 7 8 9 HTTP/1.1 200 OK Server: OBS x-obs-request-id: BB78000001648480AF3900CED7F15155 ETag: "d8bffdfbab5345d91ac05141789d2477" x-obs-server-side-encryption: kms x-obs-server-side-encryption-kms-key-id: cn-north-4:783fc6652cf246c096ea836694f71855:key/522d6070-5ad3-4765-9737-9312ddc72cdb x-obs-id-2: oRAXhgwdaLc9wKVHqTLSmQB7I35D+32AAAUJAIAABAAAQAAEAABAAAQAAEAABCS Date: Wed, 06 Jun 2018 09:10:29 GMT Content-Length: 0
  • 请求示例:在URL中携带签名并上传加密对象 PUT /destobject?AccessKeyId=UI3SN1SRUQE14OYBKTZB&Expires=1534152518&x-obs-server-side-encryption=kms&Signature=chvmG7%2FDA%2FDCQmTRJu3xngldJpg%3D HTTP/1.1 User-Agent: curl/7.29.0 Host: examplebucket.obs.cn-north-4.myhuaweicloud.com Accept: */* Date: Wed, 06 Jun 2018 09:10:29 GMT
  • 加密说明(Java SDK) 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。 OBS Java SDK支持服务端加密的接口见下表: OBS Java SDK接口方法 说明 支持加密类型 ObsClient.putObject 上传对象时设置加密算法、密钥,对对象启用服务端加密。 SSE-KMS SSE-C SSE-OBS ObsClient.getObject 具有KMS Administrator权限的用户可直接下载KMS加密对象,后端解密后返回。(SSE-KMS) 下载对象时设置解密算法、密钥,用于解密对象。(SSE-C) SSE-KMS SSE-C SSE-OBS ObsClient.copyObject 复制对象时设置源对象的解密算法、密钥,用于解密源对象。 复制对象时设置目标对象的加密算法、密钥,对目标对象启用加密算法。 SSE-KMS SSE-C ObsClient.getObjectMetadata 获取对象元数据时设置解密算法、密钥,用于解密对象。 SSE-C SSE-OBS ObsClient.initiateMultipartUpload 初始化分段上传任务时设置加密算法、密钥,对分段上传任务最终生成的对象启用服务端加密。 SSE-KMS SSE-C ObsClient.uploadPart 上传段时设置加密算法、密钥,对分段数据启用服务端加密。 SSE-C ObsClient.copyPart 复制段时设置源对象的解密算法、密钥,用于解密源对象。 复制段时设置目标段的加密算法、密钥,对目标段启用加密算法。 SSE-C 父主题: 服务端加密(Java SDK)
  • 操作步骤 在OBS管理控制台左侧导航栏选择“桶列表”。 在OBS管理控制台桶列表中,单击待操作的桶,进入“对象”页面。 单击“上传对象”,系统弹出“上传对象”对话框。 添加待上传的文件。 勾选“SSE-KMS”或“SSE-OBS”。 选择“SSE-KMS”,则需要选择加密算法、加密密钥类型。加密算法可以选择AES256加密算法或SM4加密算法。加密密钥类型您可以选择“默认密钥”,您上传的对象将使用当前区域的默认密钥进行加密,如果您没有默认密钥,系统将会在首次上传对象时自动为您创建,您也可以选择“自定义密钥”,通过单击“创建KMS密钥”进入数据加密服务页面创建自定义密钥,然后通过KMS密钥的下拉框选中您创建的KMS密钥。 SM4加密算法仅支持华北-乌兰察布一区域。 自定义密钥请参见创建密钥。 图1 选择SSE-KMS加密 选择“SSE-OBS”,则使用OBS服务创建和管理的密钥加密。 图2 选择SSE-OBS加密 单击“上传”。 对象上传成功后,可在对象详情中查看对象的加密状态。
  • 代码示例:下载对象解密 以下代码展示了在下载对象时使用SSE-C方式进行服务端解密: // Endpoint以北京四为例,其他地区请按实际情况填写。 String endPoint = "https://obs.cn-north-4.myhuaweicloud.com"; // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量ACCESS_KEY_ID和SECRET_ACCESS_KEY_ID。 // 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html String ak = System.getenv("ACCESS_KEY_ID"); String sk = System.getenv("SECRET_ACCESS_KEY_ID"); // 创建ObsClient实例 ObsClient obsClient = new ObsClient(ak, sk, endPoint); GetObjectRequest request = new GetObjectRequest("bucketname", "objectname"); // 设置SSE-C算法解密对象 SseCHeader sseCHeader = new SseCHeader(); sseCHeader.setAlgorithm(ServerAlgorithm.AES256); // 此处的密钥必须和上传对象加密时使用的密钥一致 sseCHeader.setSseCKeyBase64("your base64 sse-c key generated by AES-256 algorithm"); request.setSseCHeader(sseCHeader); ObsObject obsObject = obsClient.getObject(request); obsObject.getObjectContent().close(); 上传时使用SSE-OBS方式进行服务端加密的对象,下载、获取对象元数据时会自动解密,不用再附加加密相关头域,下载对象见流式下载,获取对象元数据见获取对象元数据。 加密密钥的计算方式,可以参考章节:如何生成SSE-C方式的加密密钥。
  • 加密说明 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 OBS Node.js SDK支持服务端加密的接口见下表: OBS Node.js SDK接口方法 描述 支持加密类型 ObsClient.putObject 上传对象时设置加密算法、密钥,对对象启用服务端加密。 SSE-KMS SSE-C ObsClient.appendObject 追加上传对象时设置加密算法、密钥,对对象启用服务端加密。 SSE-KMS SSE-C ObsClient.getObject 下载对象时设置解密算法、密钥,用于解密对象。 SSE-C ObsClient.copyObject 复制对象时设置源对象的解密算法、密钥,用于解密源对象。 复制对象时设置目标对象的加密算法、密钥,对目标对象启用加密算法。 SSE-KMS SSE-C ObsClient.getObjectMetadata 获取对象元数据时设置解密算法、密钥,用于解密对象。 SSE-C ObsClient.initiateMultipartUpload 初始化分段上传任务时设置加密算法、密钥,对分段上传任务最终生成的对象启用服务端加密。 SSE-KMS SSE-C ObsClient.uploadPart 上传段时设置加密算法、密钥,对分段数据启用服务端加密。 SSE-C ObsClient.copyPart 复制段时设置源对象的解密算法、密钥,用于解密源对象。 复制段时设置目标段的加密算法、密钥,对目标段启用加密算法。 SSE-C OBS Node.js SDK两种加密方式支持的请求参数: 加密类型 OBS Node.js SDK对应请求参数 说明 SSE-KMS SseKms 表示服务端加密是SSE-KMS方式,目前仅支持:kms。 SseKmsKey 表示SSE-KMS方式下的主密钥,可为空。 SSE-C SseC 表示服务端加密是SSE-C方式,目前仅支持:AES256。 SseCKey 表示SSE-C方式下的密钥,由AES256算法得到。上传对象时作为加密密钥;下载对象时作为解密密钥。 CopySourceSseC 适用于ObsClient.copyObject和ObsClient.copyPart,表示以SSE-C方式解密源对象,目前仅支持:AES256。 CopySourceSseCKey 适用于ObsClient.copyObject和ObsClient.copyPart,表示以SSE-C方式解密源对象时使用的密钥,由AES256算法得到。 父主题: 服务端加密