云服务器内容精选

  • 责任共担 华为云秉承“将公司对网络和业务安全性保障的责任置于公司的商业利益之上”。针对层出不穷的 云安全 挑战和无孔不入的云安全威胁与攻击,华为云在遵从法律法规业界标准的基础上,以安全生态圈为护城河,依托华为独有的软硬件优势,构建面向不同区域和行业的完善云服务安全保障体系。 与传统的本地数据中心相比,云计算的运营方和使用方分离,提供了更好的灵活性和控制力,有效降低了客户的运营负担。正因如此,云的安全性无法由一方完全承担,云安全工作需要华为云与您共同努力,如图1所示。 华为云:无论在任何云服务类别下,华为云都会承担基础设施的安全责任,包括安全性、合规性。该基础设施由华为云提供的物理数据中心(计算、存储、网络等)、虚拟化平台及云服务组成。在PaaS、SaaS场景下,华为云也会基于控制原则承担所提供服务或组件的安全配置、漏洞修复、安全防护和入侵检测等职责。 客户:无论在任何云服务类别下,客户数据资产的所有权和控制权都不会转移。在未经授权的情况下,华为云承诺不触碰客户数据,客户的内容数据、身份和权限都需要客户自身看护,这包括确保云上内容的合法合规,使用安全的凭证(如强口令、多因子认证)并妥善管理,同时监控内容安全事件和账号异常行为并及时响应。 图1 华为云安全责任共担模型 云安全责任基于控制权,以可见、可用作为前提。在客户上云的过程中,资产(例如设备、硬件、软件、介质、虚拟机、操作系统、数据等)由客户完全控制向客户与华为云共同控制转变,这也就意味着客户需要承担的责任取决于客户所选取的云服务。如图1所示,客户可以基于自身的业务需求选择不同的云服务类别(例如IaaS、PaaS、SaaS)。不同的云服务类别中,每个组件的控制权不同,这也导致了华为云与客户的责任关系不同。 在On-prem场景下,由于客户享有对硬件、软件和数据等资产的全部控制权,因此客户应当对所有组件的安全性负责。 在IaaS场景下,客户控制着除基础设施外的所有组件,因此客户需要做好除基础设施外的所有组件的安全工作,例如应用自身的合法合规性、开发设计安全,以及相关组件(如中间件、数据库和操作系统)的漏洞修复、配置安全、安全防护方案等。 在PaaS场景下,客户除了对自身部署的应用负责,也要做好PaaS服务中间件、数据库、网络控制的安全配置和策略工作。 在SaaS场景下,客户对客户内容、账号和权限具有控制权,客户需要做好自身内容的保护以及合法合规、账号和权限的配置和保护等。 传统本地部署(On-Prem):由客户在自有数据中心内部署和管理软件及IT基础设施,而非依赖于远程的云服务提供商; 基础设施即服务(IaaS):由云服务提供商提供计算、网络、存储等基础设施服务,如弹性云服务器 E CS 虚拟专用网络 VPN、 对象存储服务 OBS; 平台即服务(PaaS):由云服务提供商提供应用程序开发和部署所需要的平台,客户无需维护底层基础设施,如 AI开发平台 ModelArts、云数据库 GaussDB ; 软件即服务 (SaaS):由云服务提供商提供完整应用软件,客户直接应用软件而无需安装、维护应用软件及底层平台和基础设施,如华为云会议 Meeting。 父主题: 安全
  • 开启跨域访问 API网关代理默认不开启跨域访问,如果您需要开启,请参考以下说明完成跨域配置。 简单请求的跨域访问 如果是创建新的API,在“安全配置”时,打开“支持跨域(CORS)”开关。详细的使用指导,可参考简单请求。 非简单请求的跨域访问 非简单请求的跨域访问需要在API的分组中创建一个“请求方法”为“OPTIONS”的API,作为预检请求。 预检请求API的参数设置,请参考以下说明填写。详细的使用指导可参考非简单请求。 在“前端定义”中,参数填写说明如下: 请求方法:选择“OPTIONS”。 请求协议:选择与已开启CORS的API相同的请求协议。 路径:填斜杠/。 图2 预检请求-定义API请求。 在“安全配置”中,安全认证选“无认证”,勾选“开启支持跨域CORS”。 后端配置选择“Mock”。 图3 预检请求-后端选Mock
  • 非简单请求 对于非简单请求,您需要开启跨域访问,并且创建一个“请求方法”为“OPTIONS”的API。 跨域共享资源策略不需要创建一个“请求方法”为“OPTIONS”的API。 “请求方法”为“OPTIONS”的API和普通API的区别如下: 所属分组:选择已开启CORS的API所在的分组。 安全认证:可选择“无认证”。无论选择哪种认证方式,API网关代理都按照无认证处理。 请求协议:选择与已开启CORS的API相同的请求协议。 路径:填斜杠/即可,也可选择与已开启CORS的API相同或者匹配的请求Path。 请求方法:选择“OPTIONS”。 支持跨域CORS:选择开启CORS。 假设后端服务类型为Mock,示例如下: 浏览器发送“请求方法”为“OPTIONS”的API请求: OPTIONS /HTTP/1.1 User-Agent: curl/7.29.0 Host: localhost Accept: */* Origin: http://www.cors.com Access-Control-Request-Method: PUT Access-Control-Request-Headers: X-Sdk-Date Origin:此字段必选,表示请求消息所属源。 Access-Control-Request-Method:此字段必选,表示请求会使用哪些HTTP请求方法。 Access-Control-Request-Headers:此字段可选,表示请求会额外发送的头信息字段。 后端服务返回消息:无。 API网关代理返回消息: HTTP/1.1 200 OK Date: Tue, 15 Jan 2019 02:38:48 GMT Content-Type: application/json Content-Length: 1036 Server: api-gateway X-Request-Id: c9b8926888c356d6a9581c5c10bb4d11 Access-Control-Allow-Origin: * Access-Control-Allow-Headers: X-Stage,X-Sdk-Date,X-Sdk-Nonce,X-Proxy-Signed-Headers,X-Sdk-Content-Sha256,X-Forwarded-For,Authorization,Content-Type,Accept,Accept-Ranges,Cache-Control,Range Access-Control-Expose-Headers: X-Request-Id,X-Apig-Latency,X-Apig-Upstream-Latency,X-Apig-RateLimit-Api,X-Apig-RateLimit-User,X-Apig-RateLimit-App,X-Apig-RateLimit-Ip,X-Apig-RateLimit-Api-Allenv Access-Control-Allow-Methods: GET,POST,PUT,DELETE,HEAD,OPTIONS,PATCH Access-Control-Max-Age: 172800 Access-Control-Allow-Origin:此字段必选,“*”表示API网关代理接收任意域的请求。 Access-Control-Allow-Headers:当请求消息中包含此字段时,此字段必选。表示允许跨域的所有请求头信息字段。 Access-Control-Expose-Headers:表示跨域访问允许查看的返回头信息字段。 Access-Control-Allow-Methods:此字段必选,表示API网关代理支持的所有HTTP请求方法。 Access-Control-Max-Age:此字段可选,表示本次预检的有效期,单位:秒。在有效期内,无需再次发出预检请求。 浏览器发送一个带Origin字段的请求头: PUT /simple HTTP/1.1 Host: www.test.com Origin: http://www.cors.com Content-Type: application/x-www-form-urlencoded; charset=utf-8 Accept: application/json Date: Tue, 15 Jan 2019 01:25:52 GMT 后端服务返回消息: HTTP/1.1 200 OK Date: Tue, 15 Jan 2019 01:25:52 GMT Content-Type: application/json Content-Length: 16 Server: api-gateway {"status":"200"} API网关代理返回消息: HTTP/1.1 200 OK Date: Tue, 15 Jan 2019 01:25:52 GMT Content-Type: application/json Content-Length: 16 Server: api-gateway X-Request-Id: 454d689fa69847610b3ca486458fb08b Access-Control-Allow-Origin: * {"status":"200"}
  • 简单请求 对于简单请求,您需要开启简单跨域访问。 场景一:已开启CORS,且后端服务响应消息中未指定跨域请求头时,API网关代理接收任意域的请求,并返回“Access-Control-Allow-Origin”跨域头,示例如下: 浏览器发送一个带Origin字段的请求消息: GET /simple HTTP/1.1 Host: www.test.com Origin: http://www.cors.com Content-Type: application/x-www-form-urlencoded; charset=utf-8 Accept: application/json Date: Tue, 15 Jan 2019 01:25:52 GMT Origin:此字段必选,表示请求消息所属源,上例中请求来源于“http://www.cors.com”,API网关代理/后端服务根据这个值,决定是否同意本次请求。 后端服务返回响应消息: HTTP/1.1 200 OK Date: Tue, 15 Jan 2019 01:25:52 GMT Content-Type: application/json Content-Length: 16 Server: api-gateway {"status":"200"} API网关代理响应消息: HTTP/1.1 200 OK Date: Tue, 15 Jan 2019 01:25:52 GMT Content-Type: application/json Content-Length: 16 Server: api-gateway X-Request-Id: 454d689fa69847610b3ca486458fb08b Access-Control-Allow-Origin: * {"status":"200"} Access-Control-Allow-Origin:此字段必选,“*”表示API网关接收任意域的请求。 场景二:已开启CORS,且后端服务响应消息中指定跨域头时,后端服务响应的跨域头将覆盖API网关代理增加的跨域头,示例如下: 浏览器发送一个带Origin字段的请求消息: GET /simple HTTP/1.1 Host: www.test.com Origin: http://www.cors.com Content-Type: application/x-www-form-urlencoded; charset=utf-8 Accept: application/json Date: Tue, 15 Jan 2019 01:25:52 GMT Origin:此字段必选,表示请求消息所属源,上例中请求来源于“http://www.cors.com”,API网关代理/后端服务根据这个值,决定是否同意本次请求。 后端服务返回响应消息: HTTP/1.1 200 OK Date: Tue, 15 Jan 2019 01:25:52 GMT Content-Type: application/json Content-Length: 16 Server: api-gateway Access-Control-Allow-Origin: http://www.cors.com {"status":"200"} Access-Control-Allow-Origin:表示后端服务接收“http://www.cors.com”的请求。 API网关响应消息: HTTP/1.1 200 OK Date: Tue, 15 Jan 2019 01:25:52 GMT Content-Type: application/json Content-Length: 16 Server: api-gateway X-Request-Id: 454d689fa69847610b3ca486458fb08b Access-Control-Allow-Origin: http://www.cors.com {"status":"200"} 后端服务响应消息中的跨域头覆盖API网关代理响应消息中的跨域头。
  • 什么是跨域访问 浏览器出于安全性考虑,会限制从页面脚本内发起的跨域访问(CORS)请求,此时页面只能访问同源的资源。而CORS允许浏览器向跨域服务器发送XMLHttpRequest请求,从而实现跨域访问。 图1 跨域访问 浏览器将CORS请求分为两类: 简单请求 简单跨域请求的场景需要满足以下两个条件: 请求方法是HEAD,GET,或者POST。 HTTP的头信息不超出以下范围: Accept Accept-Language Content-Language Last-Event-ID Content-Type:取值范围:application/x-www-form-urlencoded、multipart/form-data、text/plain 对于简单请求,浏览器会自动在请求头中添加Origin字段,用于说明请求的来源(协议+域名+端口)。服务器根据Origin值决定是否同意请求。如果服务器响应中包含‘Access-Control-Allow-Origin’字段,则表示同意请求。 非简单请求 不满足简单请求两个条件的都为非简单请求。 对于非简单请求,在正式通信之前,浏览器会增加一次HTTP查询请求,称为预检请求。浏览器询问服务器,当前页面所在的源是否在服务器的许可名单之中,以及可以使用哪些HTTP请求方法和头信息字段。预检通过后,浏览器向服务器发送简单请求。
  • 查看步骤 进入API中心服务页面。 在左侧导航栏选择“API数据分析”。 资源概览区域参数的含义如表1所示。 表1 资源概览参数说明 参数名称 含义 API总数 API网关代理中,已创建的API的总个数。数据1个小时刷新一次。 API分组总数 API网关代理中,已创建的API分组的总个数。数据1个小时刷新一次。 API请求总数 API网关代理中,已发布的所有API被调用的总次数。数据10分钟刷新一次。 API请求失败总数 API网关代理中,已发布的所有API被调用失败的总次数。数据10分钟刷新一次。 在“API监控”区域,展开API右侧的下拉框,选择您想要查看调用情况的API。 选择要查看的时间范围。支持查看近1个小时、近6个小时、近24个小时或近7天的调用情况。 查看API监控指标。包括“请求次数”、“调用延时”、“数据流量”和“出错统计”。 统计数据每10分钟刷新一次。 新发布的API,最多1个小时后就能看到调用情况的统计数据。
  • 操作步骤 下面以API Arts工具为例,描述如何开发API并上架API至API中心门户网站。 进入API中心服务页面。 选择左侧导航栏中的“API工具库”。 单击API Arts工具右下角的“前往使用”,进入API Arts工具界面。 参考API设计和API测试章节指导,在API Arts完成API的设计和测试。 上架API至API中心门户网站。 在API Arts界面单击项目名称,进入目标项目详情页面。 在左侧选择“API发布”,然后单击“申请发布”,跳转至API中心“创建API资产”页面。(如果您不是API中心服务商,需要先参考服务商入驻章节,入驻成为API中心服务商,然后才能创建API资产。) 图1 申请发布 填写API资产信息。详细指导参考填写API资产信息。
  • 购买API API中心支持您在线购买来自华为云市场的API,购买流程如下。 访问API中心门户网站。 选择来自华为云市场的API。 按API维度:在左侧“API来源”中勾选“华为云市场”。同时在左侧勾选“分类”、“可见范围”,筛选API资产所属行业、公开性。 按服务商维度:单击服务商名称,然后在左侧“API来源”中勾选“华为云市场”。同时在左侧勾选“分类”、“可见范围”,筛选API资产所属行业、公开性。 单击想要购买的API,进入API详情页面。 参考商品购买流程页面步骤4~6,完成 API购买
  • 在线调试API 对于不需要付费购买的API(技术开放型API),可以通过以下步骤在线调试API,快速试用API。 单击API资产,查看API资产的开发文档。 在需要调试的接口详情页面,单击“在线调试”。 部分API未提供调试功能,具体以详情页面展示的信息为准。 对于需要付费购买的API(来源于华为云市场的API),单击API资产,在API资产详情页面,单击“API接口”页签下的“调试API”,在线调试API。
  • 搜索API 搜索栏搜索 您可以在搜索栏输入您想要查找的API的一些关键信息,如API资产的名称,描述等,系统会显示相关的搜索结果。 按照不同维度搜索 API中心门户网站,按以下两种维度展示API资产: 按API维度展示:展示所有API资产。可以在左侧勾选“分类”、“可见范围”或“API来源”,按照API资产所属行业、公开性或来源路径筛选API资产。 按服务商维度展示:展示所有API资产的服务商。可以在左侧勾选分类,按行业筛选API资产服务商。单击服务商,可以看到该服务商拥有的所有API资产。
  • 获取服务商联系方式 对于不需要付费购买的API,您可以通过以下方法获取API资产服务商的联系方式。 在API中心门户网站,单击API资产。 单击页面右上角的“订阅”。 只支持已登录用户订阅服务商的联系方式。 勾选“我已阅读并同意《华为云API中心用户协议》”。 单击“确定”,完成订阅。 订阅成功后,鼠标放在“联系咨询”上面,就会显示服务商的电话和邮箱。单击“已订阅”,可以取消订阅API。 如果您想要查看当前订阅的所有API,或者对已经订阅的API单个或批量取消订阅,可以参考API订阅管理章节操作。
  • 错误码 用户调用API失败时,系统返回的错误码如下所示。 表1 错误码 HTTP状态码 错误码 错误描述 解决方案 404 APIC.0101 The API does not exist or has not been published in the environment. 检查域名、方法、路径和注册的API是否一致。 检查API是否发布,如果发布到非生产环境,检查请求X-Stage头是否为发布的环境名。 500 APIC.0103 The backend does not exist. 联系技术支持。 500 APIC.0104 The plug-ins do not exist. 联系技术支持。 500 APIC.0105 The backend configurations do not exist. 联系技术支持。 400 APIC.0106 Orchestration error. 检查API配置的前后端参数是否合理。 400 APIC.0201 Bad request. 使用合法的请求。 413 APIC.0201 Request entity too large. 减小请求body大小,小于12M。 414 APIC.0201 Request URI too large. 减小请求URI大小,小于32K。 494 APIC.0201 Request headers too large. 减小请求头大小,单个请求头小于32K或所有请求头总大小小于128K。 502 APIC.0202 Backend unavailable. 检查API配置的后端地址是否可用。 504 APIC.0203 Backend timeout. 增大超时时间或缩小后端的处理时间。 401 APIC.0301 Incorrect IAM authentication information. 检查token是否正确。 403 APIC.0302 The IAM user is not authorized to access the API. 检查用户是否被黑白名单限制。 401 APIC.0303 Incorrect App authentication information. 检查请求的方法、路径、查询参数、请求体和签名使用的方法、路径、查询参数、请求体是否一致。 检查客户端机器时间是否正确。 403 APIC.0304 The app is not authorized to access the API. 检查APP是否授权访问API。 401 APIC.0305 Incorrect authentication information. 检查认证信息是否正确。 403 APIC.0306 API access denied. 检查是否授权访问API。 401 APIC.0307 The token must be updated. token需要更新。 429 APIC.0308 The throttling threshold has been reached. 等待流控时间结束后再访问API,或修改流控限制值。 403 APIC.0401 Unknown client IP address. 联系技术支持。 403 APIC.0402 The IP address is not authorized to access the API. 检查IP地址是否被黑白名单限制。 503 APIC.0404 Access to the backend IP address has been denied. 使用可用的IP地址访问后端服务。 403 APIC.0405 The app is not accessed from a trusted IP address. 检查IP地址是否被客户端访问控制策略限制。 500 APIC.0601 Internal server error. 联系技术支持。 400 APIC.0602 Bad request. 检查请求是否合法。 500 APIC.0605 Backend domain name resolution failed. 检查域名拼写,以及域名是否绑定了正确的后端地址。 500 APIC.0606 Failed to load the API configurations. 联系技术支持。 400 APIC.0607 The following protocol is supported: {xxx} 改用支持的协议(HTTP/HTTPS)访问。 500 APIC.0608 Failed to obtain the admin token. 联系技术支持。 500 APIC.0609 The VPC backend does not exist. 联系技术支持。 502 APIC.0610 No backend available. 检查所有后端是否可用。 500 APIC.0611 The backend port does not exist. 联系技术支持。 500 APIC.0612 An API cannot call itself. 修改API后端配置,递归调用层数不能超过10层。 500 APIC.0705 Backend signature calculation failed. 联系技术支持。 父主题: 调用已发布的API
  • 后续操作 创建完API资产后,您还可以执行表3的操作。 表3 后续操作 操作 说明 查看API资产详情 在API资产列表页,单击API资产名称,查看API资产详情。 修改API资产信息 在API资产列表页,单击API资产所在行“操作”列的“编辑”,修改API资产信息。 删除API资产 在API资产列表页,单击API资产所在行“操作”列的“删除”。 查看API资产包含的接口信息 在API资产列表页,单击API资产所在行“状态”列的“查看”。
  • 概述 API网关代理包括API的创建、发布、下线和删除所经历的完整生命周期过程,为您提供高性能、高可用、高安全的API托管服务,能快速将企业服务能力包装成标准 API服务 ,帮助您轻松构建、管理和部署任意规模的API。借助API网关代理,可以简单、快速、低成本、低风险地实现内部系统集成、业务能力开放及业务能力变现。API网关代理帮助您变现服务能力的同时,降低企业研发投入,让您专注于企业核心业务,提升运营效率。您需要先申请入驻成为API中心服务商,才可以使用API网关代理功能,具体操作指导参见服务商入驻。 父主题: API网关代理
  • 使用AppCode进行API请求的简易认证 在创建API时,选择“APP认证”并且开启“支持简易认证”。 如果您修改已有API为简易认证,需要在修改完成后,将API重新发布,使简易认证模式生效。 将支持简易认证的API绑定到已创建的凭据。 发送请求时,增加请求头部参数“X-Apig-AppCode”,省略请求签名相关信息。 以Curl方式为例,增加头部参数名称:X-Apig-AppCode,参数值填已生成的AppCode。 curl -X GET "https://api.exampledemo.com/testapi" -H "content-type: application/json" -H "host: api.exampledemo.com" -H "X-Apig-AppCode: xhrJVJKABSOxc7d***********FZL4gSHEXkCMQC"