华为云用户手册

  • 请求示例 GET /v2/workflows/{graph_name} HTTP/1.1 Host: obs.cn-north-4.myhuaweicloud.com Date: Thu, 27 Aug 2020 12:38:10 GMT Authorization: OBS H4IPJX0TQTHTHEBQQCEC:sc2PM13Wlfcoc/YZLK0MwsI2Zpo= Content-Type: application/json Content-Length: 0
  • 响应示例 HTTP/1.1 201 Created Server: OBS Date: Thu, 27 Aug 2020 12:38:10 GMT Content-Length: 100 X-Request-ID: 000001742FE8FB3CCA20173B00807C43 { "graph_name": "test-graph", "graph_urn": "urn:obs:cn-north-5:3f1e6caf808246c68457e660e4bfeb2f:graph:test-graph", "created_at": "2020-04-23T12:32:11.131Z" }
  • 请求消息样式 POST /v2/workflows/{graph_name}?x-workflow-create HTTP/1.1 Host: obs.cn-north-4.myhuaweicloud.com Authorization: authorization Content-Type: application/json Content-Length: length Date: date policy json body
  • 响应示例 HTTP/1.1 200 OK Server: OBS Date: Tue, 07 Jul 2020 07:28:46 GMT Content-Type: application/json Content-Length: 1063 { "rules": [{ "id": "abc123", "condition": { "httpErrorCodeReturnedEquals": 404, "objectKeyPrefixEquals": "video/" }, "redirect": { "agency": "agency", "publicSource": { "sourceEndpoint": { "master":["http://bucket1.xxx.yyy.com", "https://bucket2.xxx.yyy.com"], "slave": ["http://bucket3.xxx.yyy.com", "https://bucket4.xxx.yyy.com"] } }, "retryConditions": ["4XX", "5XX"], "passQueryString": true, "mirrorFollowRedirect": true, "redirectWithoutReferer": true, "mirrorHttpHeader": { "passAll": false, "pass": ["content-encoding"], "remove": ["content-type"], "set": [{ "key": "helloworld", "value": "2222" }] }, "replaceKeyWith": "prefix${key}suffix", "replaceKeyPrefixWith": "picture/", "vpcEndpointURN": "001" } }] }
  • 请求示例 PUT /?mirrorBackToSource HTTP/1.1 Host: bucketname.obs.cn-north-4.myhuaweicloud.com Authorization: OBS H4IPJX0TQTHTHEBQQCEC:sc2PM13Wlfcoc/YZLK0MwsI2Zpo= Content-Type: application/json Content-Length: 1049 Date: Tue, 21 Jul 2020 15:38:30 GMT { "rules": [{ "id": "abc123", "condition": { "httpErrorCodeReturnedEquals": "404", "objectKeyPrefixEquals": "video/" }, "redirect": { "agency": "agency", "publicSource": { "sourceEndpoint": { "master":["http://bucket1.xxx.yyy.com", "https://bucket2.xxx.yyy.com"], "slave": ["http://bucket3.xxx.yyy.com", "https://bucket4.xxx.yyy.com"] } }, "retryConditions": ["4XX", "5XX"], "passQueryString": true, "mirrorFollowRedirect": true, "redirectWithoutReferer": true, "mirrorAllowHttpMethod":["HEAD"], "mirrorHttpHeader": { "passAll": false, "pass": ["content-encoding"], "remove": ["content-type"], "set": [{ "key": "helloworld", "value": "2222" }] }, "replaceKeyWith": "prefix${key}suffix", "replaceKeyPrefixWith": "picture/", "vpcEndpointURN": "001" } }] }
  • 请求消息元素 表1 请求消息元素 名称 描述 是否必选 rules 策略规则数组。 类型:Container 取值范围:数组大小[1, 10] 说明: 同一个桶下的不同策略前缀不能重复和起始包含,委托建议使用同一个。 是 表2 rules参数说明 名称 描述 是否必选 id 规则ID。当前桶上配置的镜像回源规则的唯一标识。 类型:String 取值范围:[1, 256],满足“^[a-zA-Z0-9_-]{1, 256}$” 是 condition 触发回源功能的条件。 类型:Container 是 httpErrorCodeReturnedEquals 触发回源功能的错误码。当下载请求返回此错误码时,会触发回源功能。 类型:Integer 取值范围:404 是 objectKeyPrefixEquals 触发回源功能的对象名前缀。当触发回源的请求里对象名满足此前缀,才会继续执行回源功能。当前缀配置为空时,默认所有对象都匹配。同一个桶上多条规则的前缀之间不允许重复和起始包含。 类型:String 有效值:长度[0, 1023],值允许为任意字符 否 redirect 回源功能主要参数。 类型:Container 是 agency 委托名。客户通过委托赋予OBS服务查询用户桶内指定对象是否存在以及向用户桶内上传对象的权限。 类型:String 是 publicSource 公共可访问源端配置。当源端为公共可访问的资源时,必选。 类型:Container 否 sourceEndpoint 公共可访问的源端地址。 类型:Container 否 master 主源端地址。如果源端为HTTP公共可访问的桶,则此地址为桶 域名 地址。如果源端为其他云厂商的私有桶,则此地址为区域域名地址。 类型:Array 有效取值:单个源站地址格式为https|http://xxx.yyy.zzz,长度为[10, 255] 说明: 回源时会优先使用主源站地址,如果同时配置多个主地址,会轮询访问所有主地址。如果配置2个及以上主地址,第一次请求主地址失败,并且满足重试条件时,会选用另一个主地址重试一次。 至少配置一个主地址。 最多同时配置5个主地址。 否 slave 备源端地址。如果源端为HTTP公共可访问的桶,则此地址为桶域名地址。如果源端为其他云厂商的私有桶,则此地址为区域域名地址。 类型:Array 有效取值:单个源站地址格式为https|http://xxx.yyy.zzz,长度为[10, 255] 说明: 主地址回源失败时,会选用一个备地址进行重试。 最多同时配置5个备地址。 否 retryConditions 回源地址切换的条件。 类型:Array 取值范围:4XX,5XX以及400~499,500~599等具体错误码 说明: 4XX和4开头的具体错误码不能同时配置,5XX和5开头的错误码不能同时配置。 最大支持同时配置20个错误码 否 passQueryString 是否携带请求字符串。如果是true,会将OBS请求中的queryString传递到源站。否则,则不会将queryString传递到源站。 该值默认值是false,如果设置为false则会忽略。 类型:Boolean 取值范围:false或true 说明: 如果是true,但query里有签名信息,则将签名信息去掉,剩余参数再传递。 是 mirrorFollowRedirect 是否跟随源站3xx重定向请求获取到资源。如果是true,跟随源站3xx重定向请求获取到资源。否则,OBS会透传3XX响应,不获取资源。该值默认值是false,如果设置为false则会忽略。 类型:Boolean 取值范围:false或true 是 mirrorHttpHeader HTTP header传递规则。 类型:Container 否 passAll 是否透传全部HTTP header到源端。 以下HTTP header类型不支持透传: 1.以下前缀开头的header: x-obs- x-amz- 2.所有标准HTTP header,例如: Content-Length Authorization Date passAll与pass互斥。 类型:bool 取值范围:false或true 否 pass 指定透传的HTTP header列表。 类型:List 取值范围:最大10个,每个长度[1, 63],key只支持字母(大小写)、数字、中划线、下划线 否 remove 不允许透传的HTTP header列表。 remove优先级高于pass和passAll。 类型:List 取值范围:最大10个,每个长度[1, 63],key只支持字母(大小写)、数字、中划线、下划线 否 set 设置透传的HTTP header值列表。 set优先级高于remove,pass和passAll。 如果自定义头域中包含了Referer头域,必须将redirectWithoutReferer设置为true,不然会被覆盖 类型:List 取值范围:最大10个 否 key 设置需要透传HTTP header的关键字。 多条key之间不允许重复。 类型:String 取值范围:长度[1, 63],只支持字母(大小写)、数字、中划线、下划线 否 value 设置需要透传HTTP header的值。 类型:String 取值范围:长度[0, 2048] 否 replaceKeyWith 添加前后缀。去源端下载对象的时候,如果需要添加前缀或后缀,则修改此项配置为prefix${key}suffix。如果不需要增加前后缀,则配置为${key}。 类型:String 取值范围:prefix${key}suffix。 ${key}为关键字,prefix为要添加的前缀,suffix为要添加的后缀。同时prefix和suffix的总长度[0, 1023] 否 replaceKeyPrefixWith 替换前缀objectKeyPrefixEquals的字符串。如果去源端下载对象时,需要替换当前的对象名前缀,则修改此项配置。 如果replaceKeyWith和ReplaceKeyPrefixWith同时为空,则ReplaceKeyPrefixWith生效。同时非空为非法请求。 类型:String 取值范围:长度[0, 1023] 否 vpcEndpointURN 终端节点服务的URN。 类型:String 取值范围:长度[0, 127] 否 redirectWithoutReferer 是否将原host作为referer头域携带到重定向的目的地址去。false为需要携带, true为不携带。 该值默认值是false,如果设置为false则会忽略。 类型:Boolean 默认值: false 否 mirrorAllowHttpMethod 如果公有桶添加HEAD后,表示同时支持HEAD类请求回源,可以通过HEAD类请求获取源站对象的元数据信息,但不会从源站获取对象。 类型:List 否
  • 请求消息样式 PUT /?mirrorBackToSource HTTP/1.1 Host: bucketname.obs.cn-north-4.myhuaweicloud.com Authorization: authorization Content-Type: application/json Content-Length: length Date: date policy json body
  • 并发操作举例 1. 当客户端2正在上传一个对象v1时,客户端1同时上传一个同名的对象v2成功后,不管是客户端1还是客户端2都能够读取最新的对象数据v1,如图1所示。 图1 并发成功上传同一个对象 2. 当客户端2上传一个对象v1的时候,如果在对象数据上传且还没有写入对象元数据的过程中,客户端1删除同名的对象成功后,客户端2的上传对象操作仍然返回成功,并且不论客户端1还是客户端2都能读取到对象数据v1,如图2所示。 图2 并发上传和删除同一个对象(1) 3. 当客户端2上传一个对象v1的时候,如果在对象数据上传完成,系统写入对象元数据的短暂过程中,客户端1发起删除同名的对象成功后,客户端2的上传对象操作仍然返回成功,但是客户端1和客户端2下载对象Object1时,有可能读到对象数据v1,也有可能返回对象不存在,如图3所示。 图3 并发上传和删除同一个对象(2) 4. 当客户端1下载一个对象的过程中,客户端2发起删除同名对象操作,此时客户端1可能下载到完整的对象数据,也有可能只能下载到对象的一部分数据。当客户端2的删除操作返回成功后,再发起下载对象请求,则返回对象不存在,如图4所示。 图4 并发下载和删除同一个对象 5. 当客户端1下载一个对象的过程中,客户端2发起更新同名对象操作,此时客户端1可能下载到完整的对象数据,也有可能只能下载到对象的一部分数据。当客户端2的更新操作返回成功后,再发起下载对象请求,则返回最新的对象数据,如图5所示。 图5 并发下载和更新同一个对象 6. 当客户端2正在上传一个对象的段v1时,客户端1同时上传同一个对象的相同段号的段v2成功后,不管是客户端1还是客户端2列举段时都能够列举etag为v2的段信息,如图6所示。 图6 并发上传同名对象的同名段
  • 获取账号、 IAM 用户、项目的名称和ID 从控制台获取账号名、账号ID、用户名、用户ID、项目名称、项目ID 在华为云首页右上角,单击“控制台”。 在右上角的用户名中选择“我的凭证”。 图1 进入我的凭证 在“我的凭证”界面,API凭证页签中,查看账号名、账号ID、用户名、用户ID、项目名称、项目ID。 每个区域的项目ID有所不同,需要根据业务所在的区域获取对应的项目ID。 图2 查看账号名、账号ID、用户名、用户ID、项目名称、项目ID 调用API获取用户ID、项目ID 获取用户ID请参考:管理员查询IAM用户列表。 获取项目ID请参考:查询指定条件下的项目列表。
  • 获取访问密钥(AK/SK) IAM用户如果希望使用AK/SK访问OBS,必须要账号为其开启“编程访问”。开启方法请参见查看或修改IAM用户信息。 在调用接口的时候,需要使用AK/SK进行签名验证。AK/SK获取步骤如下: 登录控制台。 鼠标指向界面右上角的登录用户名,在下拉列表中单击“我的凭证”。 在左侧导航栏单击“访问密钥”。 单击“新增访问密钥”,进入“新增访问密钥”页面。 输入访问密钥描述信息(非必填),单击“确定”。 通过手机短信、邮箱或者虚拟MFA进行验证,输入对应的验证码,单击“确定”。 如果您已开启操作保护,需要通过手机短信、邮箱或者虚拟MFA进行验证,输入对应的验证码。 单击“立即下载”,浏览器下载访问密钥。 为防止访问密钥泄露,建议您将其保存到安全的位置。 父主题: 附录
  • 状态码 服务器向用户返回的状态码和提示信息如表1所示: 表1 状态码 状态码 说明 2xx 服务器成功返回用户请求的数据。 4xx 客户端发出的请求有错误,服务器没有进行新建或修改数据的操作。 5xx 服务器发生错误,用户将无法判断发出的请求是否成功。 注:请使用符合https://www.ietf.org/rfc/rfc2616.txt规定的HTTP/HTTPS请求格式发送API请求。 父主题: 附录
  • 对象相关授权项 表1 对象相关授权项列表 权限 对应API接口 授权项(Action) IAM项目(Project) 企业项目(Enterprise Project) 可用作于PUT上传对象,POST上传对象,复制对象,追加写对象,初始化上传段任务,上传段,拷贝段,合并段 PUT上传 POST上传 复制对象 追加写对象 初始化上传段任务 上传段 合并段 obs:object:PutObject √ √ 获取对象内容和对象元数据 下载对象 获取对象元数据 obs:object:GetObject √ √ 获取指定版本对象内容和对象元数据 下载对象 获取对象元数据 obs:object:GetObjectVersion √ √ 单个删除和批量删除对象 删除对象 批量删除对象 obs:object:DeleteObject √ √ 单个删除和批量删除指定版本对象 删除对象 批量删除对象 obs:object:DeleteObjectVersion √ √ 恢复归档存储对象 恢复归档或深度归档存储对象 obs:object:RestoreObject √ √ 设置对象ACL 设置对象ACL obs:object:PutObjectAcl √ √ 设置指定版本对象ACL 设置对象ACL obs:object:PutObjectVersionAcl √ √ 获取对象ACL的相关信息 获取对象ACL obs:object:GetObjectAcl √ √ 获取指定版本对象ACL的相关信息 获取对象ACL obs:object:GetObjectVersionAcl √ √ 修改对象元数据 修改对象元数据 obs:object:ModifyObjectMetaData √ √ 列举已上传段 列举已上传未合并的段 obs:object:ListMultipartUploadParts √ √ 取消多段上传任务 取消多段上传任务 obs:object:AbortMultipartUpload √ √ 配置对象级WORM保护策略 配置对象级WORM保护策略 obs:object:PutObjectRetention √ √ 获取对象级WORM保护策略 获取对象元数据 obs:object:GetObjectRetention √ √ 设置对象标签 设置对象标签 obs:object:PutObjectTagging × × 获取对象标签 获取对象标签 obs:object:GetObjectTagging × × 删除对象标签 删除对象标签 obs:object:DeleteObjectTagging × × 父主题: 权限和授权项
  • 桶相关授权项 表1 桶相关授权项列表 权限 对应API接口 授权项(Action) IAM项目(Project) 企业项目(Enterprise Project) 列举全部桶 获取桶列表 obs:bucket:ListAllMyBuckets √ √ 创建桶 创建桶 obs:bucket:CreateBucket √ √ 列举桶内对象 列举桶内对象 obs:bucket:ListBucket √ √ 列举桶内多版本对象 列举桶内对象 obs:bucket:ListBucketVersions √ √ 判断桶是否存在并获取桶的元数据 获取桶元数据 obs:bucket:HeadBucket √ √ 获取桶位置 获取桶区域位置 obs:bucket:GetBucketLocation √ √ 删除桶 删除桶 obs:bucket:DeleteBucket √ √ 设置桶策略 设置桶策略 obs:bucket:PutBucketPolicy √ √ 获取桶策略配置的相关信息 获取桶策略 obs:bucket:GetBucketPolicy √ √ 删除桶策略 删除桶策略 obs:bucket:DeleteBucketPolicy √ √ 设置桶ACL 设置桶ACL obs:bucket:PutBucketAcl √ √ 获取桶ACL的相关信息 获取桶ACL obs:bucket:GetBucketAcl √ √ 设置桶日志记录 设置桶日志管理配置 obs:bucket:PutBucketLogging √ √ 获取桶日志记录的相关信息 获取桶日志管理配置 obs:bucket:GetBucketLogging √ √ 设置和删除桶生命周期规则 设置桶的生命周期配置 删除桶的生命周期配置 obs:bucket:PutLifecycleConfiguration √ √ 获取桶生命周期规则 获取桶的生命周期配置 obs:bucket:GetLifecycleConfiguration √ √ 设置多版本 设置桶的多版本状态 obs:bucket:PutBucketVersioning √ √ 获取桶多版本的相关信息 获取桶的多版本状态 obs:bucket:GetBucketVersioning √ √ 设置桶默认存储类型 设置桶默认存储类型 obs:bucket:PutBucketStoragePolicy √ √ 获取桶默认存储类型 获取桶默认存储类型 obs:bucket:GetBucketStoragePolicy √ √ 设置桶的跨区域复制配置 设置桶的跨区域复制配置 obs:bucket:PutReplicationConfiguration √ √ 获取桶的跨区域复制配置 获取桶的跨区域复制配置 obs:bucket:GetReplicationConfiguration √ √ 删除桶的跨区域复制配置 删除桶的跨区域复制配置 obs:bucket:DeleteReplicationConfiguration √ √ 设置桶标签 设置桶标签 obs:bucket:PutBucketTagging √ √ 获取桶标签 获取桶标签 obs:bucket:GetBucketTagging √ √ 删除桶标签 删除桶标签 obs:bucket:DeleteBucketTagging √ √ 设置桶配额 设置桶配额 obs:bucket:PutBucketQuota √ √ 获取桶配额 获取桶配额 obs:bucket:GetBucketQuota √ √ 获取桶存量信息 获取桶存量信息 obs:bucket:GetBucketStorage √ √ 设置桶清单 设置桶清单 obs:bucket:PutBucketInventoryConfiguration √ √ 获取和列举桶清单 获取桶清单 列举桶清单 obs:bucket:GetBucketInventoryConfiguration √ √ 删除桶清单 删除桶清单 obs:bucket:DeleteBucketInventoryConfiguration √ √ 设置桶的自定义域名 设置桶的自定义域名 obs:bucket:PutBucketCustomDomainConfiguration √ √ 获取桶的自定义域名 获取桶的自定义域名 obs:bucket:GetBucketCustomDomainConfiguration √ √ 删除桶的自定义域名 删除桶的自定义域名 obs:bucket:DeleteBucketCustomDomainConfiguration √ √ 设置和删除桶的加密配置 设置桶的加密配置 删除桶的加密配置 obs:bucket:PutEncryptionConfiguration √ √ 获取桶的加密配置 获取桶的加密配置 obs:bucket:GetEncryptionConfiguration √ √ 设置桶归档对象直读策略 设置桶归档对象直读策略 obs:bucket:PutDirectColdAccessConfiguration √ √ 获取桶归档对象直读策略 获取桶归档对象直读策略 obs:bucket:GetDirectColdAccessConfiguration √ √ 删除桶归档对象直读策略 删除桶归档对象直读策略 obs:bucket:DeleteDirectColdAccessConfiguration √ √ 设置桶的静态网站托管 设置桶的网站配置 obs:bucket:PutBucketWebsite √ √ 获取桶的静态网站配置的相关信息 获取桶的网站配置 obs:bucket:GetBucketWebsite √ √ 删除桶的静态网站托管配置 删除桶的网站配置 obs:bucket:DeleteBucketWebsite √ √ 设置和删除桶CORS 设置桶的CORS配置 删除桶的CORS配置 obs:bucket:PutBucketCORS √ √ 获取桶CORS配置的相关信息 获取桶的CORS配置 obs:bucket:GetBucketCORS √ √ 配置桶级默认WORM策略 配置桶级默认WORM策略 obs:bucket:PutBucketObjectLockConfiguration √ √ 获取桶级默认WORM策略 获取桶级默认WORM策略 obs:bucket:GetBucketObjectLockConfiguration √ √ 列举桶中已初始化多段任务 列举桶中已初始化多段任务 obs:bucket:ListBucketMultipartUploads √ √ 父主题: 权限和授权项
  • 支持的授权项 策略包含系统策略和自定义策略,如果系统策略不满足授权要求,管理员可以创建自定义策略,并通过给用户组授予自定义策略来进行精细的访问控制。策略支持的操作与API相对应,授权项列表说明如下: 权限:允许或拒绝对指定资源在特定条件下进行某项操作。 对应API接口:自定义策略实际调用的API接口。 授权项:自定义策略中支持的Action,在自定义策略中的Action中写入授权项,可以实现授权项对应的权限功能。 IAM项目(Project)/企业项目(Enterprise Project):自定义策略的授权范围,包括IAM项目与企业项目。授权范围如果同时支持IAM项目和企业项目,表示此授权项对应的自定义策略可以在IAM和企业管理两个服务中给用户组授权并生效。如果仅支持IAM项目,不支持企业项目,表示仅能在IAM中给用户组授权并生效,如果在企业管理中授权,则该自定义策略不生效。关于IAM项目与企业项目的区别,详情请参见:IAM与企业管理的区别。 “√”表示支持,“x”表示暂不支持。 OBS支持的自定义策略授权项如下所示: 桶相关授权项:包括OBS所有面向桶的接口所对应的授权项,如列举全部桶、创建桶、删除桶、设置桶策略、设置桶的日志记录、设置桶的事件通知、设置桶的跨区域复制配置等接口。 对象相关授权项:包括上传对象、下载对象、删除对象等接口。
  • 与服务端加密相关的接口 本节介绍与服务端加密相关的接口,以及使用该接口时服务端加密对传输协议使用要求。 与服务端加密相关的接口对使用传输协议的具体要求,详情如表所示。 表1 与SSE-C相关的接口对传输协议的使用要求 接口 传输协议 PUT上传对象 HTTPS POST上传对象 HTTPS 初始化上传段任务 HTTPS 获取对象元数据 HTTPS 获取对象内容 HTTPS 上传段 HTTPS 合并段 HTTP or HTTPS 表2 与SSE-KMS相关的接口对传输协议的使用要求 接口 传输协议 PUT上传对象 HTTPS POST上传对象 HTTPS 初始化上传段任务 HTTPS 获取对象元数据 HTTP or HTTPS 获取对象内容 HTTPS 上传段 HTTPS 合并段 HTTP or HTTPS 表3 复制对象接口对传输协议的使用要求 源对象 目标对象 传输协议 非加密对象 SSE-KMS加密对象 HTTPS SSE-KMS加密对象 SSE-KMS加密对象 HTTPS SSE-OBS加密对象 SSE-KMS加密对象 HTTPS SSE-C加密对象 SSE-KMS加密对象 HTTPS 非加密对象 SSE-C加密对象 HTTPS SSE-KMS加密对象 SSE-C加密对象 HTTPS SSE-OBS加密对象 SSE-C加密对象 HTTPS SSE-C加密对象 SSE-C加密对象 HTTPS 非加密对象 非加密对象 HTTP or HTTPS SSE-KMS加密对象 非加密对象 HTTP or HTTPS SSE-OBS加密对象 非加密对象 HTTP or HTTPS SSE-C加密对象 非加密对象 HTTP or HTTPS 非加密对象 SSE-OBS加密对象 HTTPS SSE-KMS加密对象 SSE-OBS加密对象 HTTPS SSE-OBS加密对象 SSE-OBS加密对象 HTTPS SSE-C加密对象 SSE-OBS加密对象 HTTPS 表4 拷贝段接口对传输协议的使用要求 源对象 目标段 传输协议 非加密对象 SSE-KMS加密段 HTTP or HTTPS SSE-KMS加密对象 SSE-KMS加密段 HTTP or HTTPS SSE-OBS加密对象 SSE-KMS加密段 HTTP or HTTPS SSE-C加密对象 SSE-KMS加密段 HTTP or HTTPS 非加密对象 SSE-C加密段 HTTPS SSE-KMS加密对象 SSE-C加密段 HTTPS SSE-OBS加密对象 SSE-C加密段 HTTPS SSE-C加密对象 SSE-C加密段 HTTPS 非加密对象 非加密段 HTTP or HTTPS SSE-KMS加密对象 非加密段 HTTP or HTTPS SSE-OBS加密对象 非加密段 HTTP or HTTPS SSE-C加密对象 非加密段 HTTP or HTTPS 非加密对象 SSE-OBS加密段 HTTP or HTTPS SSE-KMS加密对象 SSE-OBS加密段 HTTP or HTTPS SSE-OBS加密对象 SSE-OBS加密段 HTTP or HTTPS SSE-C加密对象 SSE-OBS加密段 HTTP or HTTPS 父主题: 服务端加密
  • 请求示例:在URL中携带签名并上传SSE-C加密对象 PUT /encrypobject?AccessKeyId=H4IPJX0TQTHTHEBQQCEC&Expires=1532688887&Signature=EQmDuOhaLUrzrzRNZxwS72CXeXM%3D HTTP/1.1 User-Agent: curl/7.29.0 Host: examplebucket.obs.cn-north-4.myhuaweicloud.com Accept: */* x-obs-server-side-encryption-customer-algorithm: AES256 x-obs-server-side-encryption-customer-key:K7QkYpBkM5+hca27fsNkUnNVaobncnLht/rCB2o/9Cw= x-obs-server-side-encryption-customer-key-MD5:4XvB3tbNTN+tIEVa0/fGaQ== Content-Length: 5242 Expect: 100-continue [5242 Byte object contents]
  • 响应示例:将SSE-C加密对象拷贝为KMS加密对象 1 2 3 4 5 6 7 8 9 HTTP/1.1 200 OK Server: OBS x-obs-request-id: BB7800000164848E0FC70528B9D92C41 ETag: "1072e1b96b47d7ec859710068aa70d57" 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: 32AAAUJAIAABAAAQAAEAABAAAQAAEAABCTkkRzQXs9ECzZcavVRncBqqYNkoAEsr Date: Wed, 06 Jun 2018 09:20:10 GMT Content-Length: 0
  • 请求示例:将SSE-C加密对象拷贝为KMS加密对象 1 2 3 4 5 6 7 8 9 10 11 12 13 14 PUT /kmsobject HTTP/1.1 User-Agent: curl/7.29.0 Host: examplebucket.obs.cn-north-4.myhuaweicloud.com Accept: */* Date: Wed, 06 Jun 2018 09:20:10 GMT Authorization: OBS H4IPJX0TQTHTHEBQQCEC:mZSfafoM+llApk0HGOThlqeccu0= x-obs-copy-source-server-side-encryption-customer-algorithm:AES256 x-obs-copy-source-server-side-encryption-customer-key:K7QkYpBkM5+hca27fsNkUnNVaobncnLht/rCB2o/9Cw= x-obs-copy-source-server-side-encryption-customer-key-MD5:4XvB3tbNTN+tIEVa0/fGaQ== x-obs-server-side-encryption: kms x-obs-copy-source: /examplebucket/encryp2 Content-Length: 5242 [5242 Byte object contents]
  • 响应示例:在URL中携带签名并上传SSE-C加密对象 1 2 3 4 5 6 7 8 9 HTTP/1.1 100 Continue HTTP/1.1 200 OK Server: OBS x-obs-request-id: 804F00000164DB5E5B7FB908D3BA8E00 ETag: "1072e1b96b47d7ec859710068aa70d57" x-obs-server-side-encryption-customer-algorithm: AES256 x-obs-server-side-encryption-customer-key-MD5: 4XvB3tbNTN+tIEVa0/fGaQ== x-obs-id-2: 32AAAUJAIAABAAAQAAEAABAAAQAAEAABCTlpxILjhVK/heKOWIP8Wn2IWmQoerfw Content-Length: 0
  • 请求示例:上传SSE-C加密对象 1 2 3 4 5 6 7 8 9 10 11 12 PUT /encryp2 HTTP/1.1 User-Agent: curl/7.29.0 Host: examplebucket.obs.cn-north-4.myhuaweicloud.com Accept: */* Date: Wed, 06 Jun 2018 09:12:00 GMT Authorization: OBS H4IPJX0TQTHTHEBQQCEC:mZSfafoM+llApk0HGOThlqeccu0= x-obs-server-side-encryption-customer-algorithm:AES256 x-obs-server-side-encryption-customer-key:K7QkYpBkM5+hca27fsNkUnNVaobncnLht/rCB2o/9Cw= x-obs-server-side-encryption-customer-key-MD5:4XvB3tbNTN+tIEVa0/fGaQ== Content-Length: 5242 [5242 Byte object contents]
  • 响应示例:上传SSE-C加密对象 1 2 3 4 5 6 7 8 9 HTTP/1.1 200 OK Server: OBS x-obs-request-id: 8DF400000163D45E0017055619BD02B8 ETag: "0f91242c7f3d86f98ae572a686d0696e" x-obs-server-side-encryption-customer-algorithm: AES256 x-obs-server-side-encryption-customer-key-MD5: 4XvB3tbNTN+tIEVa0/fGaQ== x-obs-id-2: 32AAAUgAIAABAAAQAAEAABAAAQAAEAA BCS SAJ8bTNJV0X+Ote1PtuWecqyMh6zBJ Date: Wed, 06 Jun 2018 09:12:00 GMT Content-Length: 0
  • 请求示例:将普通对象拷贝为加密对象,且指定加密密钥 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+32AAAUJAIAABAAAQAAEAABAAAQAAEAAB CS 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
  • 服务端加密简介 用户可以使用普通方式上传、下载对象,也可以使用服务端加密方式进行上传、下载对象。 OBS支持服务端加密功能,使加密的行为在服务端进行。 用户可以根据自身的需求,使用不同的密钥管理方式来使用服务端加密功能。当前支持的服务端加密方式: KMS托管密钥的服务端加密(SSE-KMS)、OBS托管密钥的服务端加密(SSE-OBS)和客户提供加密密钥的服务端加密(SSE-C)。上述方式都采用行业标准的AES256加密算法,另外SSE-KMS还可以选择采用国家密码局认定的SM4加密算法。 SSE-KMS方式,OBS使用KMS(Key Management Service)服务提供的密钥进行服务端加密。用户可以创建自定义密钥,用于SSE-KMS加密。 SSE-OBS方式,OBS使用服务自身提供的密钥进行服务端加密。与SSE-KMS的区别在于SSE-OBS是OBS管理密钥,而非KMS。 SSE-C方式,OBS使用用户提供的密钥和密钥的MD5值进行服务端加密。 使用服务端加密,返回的ETag值不是对象的MD5值。无论是否使用服务端加密上传对象,请求消息头中加入Content-MD5参数时,OBS均会对对象进行MD5校验。 父主题: 服务端加密
共100000条