控制台支持工单搜索和克隆映像

今天 QingCloud 控制台发布更新,支持了一些非常有用的功能:

工单搜索

工单是用户与 QingCloud 直接沟通的重要方式。通过工单,用户可以咨询问题、反馈问题并获得支持和解决。当累计工单数量增多时,查找曾经提过历史工单就变得困难。控制台新增了工单搜索功能,用户可以在工单列表上方搜索框中输入关键字,查找工单标题或工单内容中包含该关键字的内容。

克隆映像

在控制台映像列表中,用户可以看到系统映像、自有映像和共享映像,这些映像可以用来创建主机。有时我们想要将一个映像完整的拷贝出来,成为一个独立的新映像。尤其是当映像是以共享形式访问时,映像的属主是共享方,如果共享取消,被共享的一方就不能再继续访问了。另外,如果想要基于映像制作 AppCenter 的应用,使用共享映像也有权限问题。

克隆映像功能就是为这样的需求提供的。用户可以将系统映像、自有映像和共享映像克隆出一份或多份,并指定新映像的名称。这些新映像会成为用户名下的自有映像,并按普通映像的计费标准收费。

克隆映像

负载均衡器证书绑定资源的展示

负载均衡器的证书可以关联到多个负载均衡器上,为方便用户从证书直接找到对应的负载均衡器,控制台在证书的详情页提供了关联资源的列表。

Apache Struts2 远程代码执行漏洞公告

近日,Apache Struts2 爆出远程代码执行漏洞 (CVE-2017-5638),该漏洞存在于 Apache Struts2 的 Jakarta Multipart parser 插件模块,攻击者可以在使用该插件上传文件时,修改 HTTP 请求头中的 Content-Type 值来触发该漏洞,导致远程执行代码。漏洞详情请参见:http://www.hack-cn.com/articles/40。请可能受影响的用户尽快升级处理。

影响范围:
Struts 2.3.5 – Struts 2.3.31
Struts 2.5 – Struts 2.5.10

检查方法:
http://0day.websaas.com.cn/

修复建议:
升级到 Struts 2.3.32 或 Struts 2.5.10.1

QingCloud 技术团队

QingStor 对象存储支持设置 IP 地址黑/白名单

存储空间策略是 QingStor 对象存储 Bucket 的子资源(subresource),其语义主要由用户、 资源、动作、及条件运算符组合定义,允许用户更细粒度的控制存储空间的访问。此次更新为存储空间策略增加了控制访问 IP 的功能,用户可以设置允许或拒绝访问的 IP 地址。

配置示例

1. 在 Bucket 详情中进入设置页面,切换到 “存储空间策略” 标签页,点击 “添加规则” 按钮。

Cloud_控制台_-_zw_ZW_

2. 在 “IP 地址” 部分设置 “包含” “10.70.0.0/24”,注意这里填写的 IP 地址需为 CIDR 格式。

Cloud_控制台_-_zw_ZW_

3. 点击保存即可。

通过以上的设置,现在只允许从 10.70.0.0/24 这个 IP 地址段访问此 Bucket。如果想禁止某些 IP 地址段访问,可以添加类型为 “不包含” 的 IP 地址段,或者将规则中的 “响应动作” 设置为 “拒绝”。

更多详细介绍请参考相关文档: QingStor Bucket Policy

QingStor 对象存储支持静态网站托管

使用静态网站托管功能,用户可以方便快捷地将静态网站以极低的成本托管在 QingStor 对象存储,同时允许使用自定义的域名来访问网站内容,并且支持一键开启 CDN 和 HTTPS。

下面通过具体例子来说明如何使用静态网站托管功能:

1. 向 Bucket 绑定用于静态网站托管的域名

在 “静态网站托管页面”,点击 “添加静态网站托管访问域名” 可以绑定自定义的域名,要绑定的域名必须已完成备案。

bucket_web_hosting_add_domain

2.  设置并开启静态网站托管

在 “静态网站托管” 设置页面,填写希望使用的索引页面和错误页面, 点击 “开启静态网站托管” 即可使用自定义域名访问网站内容。 此时访问静态网站域名的根路径,或者访问的路径以 “/” 结尾,将返回索引页面。 若访问发生错误,如对象不存在,将返回错误页面。

例如,设置索引页面为 “index.html”,设置错误页面为 “error.html”。 访问根路径时,将返回 “index.html”,访问 “about/” 时,将返回 “about/index.html”。 访问 “test/hello.mp4” 时,如果 “test/hello.mp4” 对象不存在,将返回 “error.html”。

bucket_web_hosting_start

开启静态网站托管后,支持修改网站所使用的索引页面和错误页面,点击 “停止静态网站托管” 可关闭托管服务。

bucket_web_hosting_stop

 3. 设置 Bucket 权限或策略并上传静态网站内容

Bucket 需要设置为 “公开可读”,或者使用存储空间策略来进行访问控制。

bucket_acl

将网站内容上传至 Bucket,推荐使用 QingStor 的命令行工具 qsctl 进行上传, 使用方法可以参考 qsctl 文档

例如使用 qsctl 的 sync 命令上传整个网站:

$ qsctl sync /path/to/website qs://test-bucket

4. 访问网站

最后,访问刚才绑定的自定义域名,即可查看网站内容。

QingStor 对象存储发布新版本 Python SDK

QingStor 对象存储发布了新版本的 Python SDK ,并已开源在 https://github.com/yunify/qingstor-sdk-python 。为说明新版本 Python SDK 和 旧版本 SDK 的区别与联系,本日志将会介绍新版本 Python SDK 的历史背景,变化革新和未来规划。在日志的最后,我们将会展示如何使用新版本的 Python SDK。

历史背景

在 QingStor 对象存储于 2016 年 1 月 6 日 开始公测时, 我们便在 qingcloud-sdk-python 中以 面向对象 形式的接口提供了 QingStor 对象存储的 Python SDK (为行文方便,我们在下文中将此 SDK 称为 旧版 Python SDK )。qingcloud-sdk-python 为 手动实现 的 SDK, 旨在提供 所有青云 QingCloud 服务 的访问。

变化革新

为了加快各语言 SDK 的开发效率,及减小各语言 SDK 的运维成本,我们决定将 SDK 的开 发及后期维护自动化。同时,考虑到移动端用户对空间的敏感,我们决定将 QingStor 对象存储的 SDK 与青云 QingCloud 的其它服务进行分离。

最终,我们于 2016 年 12 月 5 日 发布了 SDK 生成工具 Snips , 及使用 Snips 生成的六种语言 (Go, Ruby, JAVA, Swift, PHP, JS) 的 SDK, 如 qingstor-sdk-go

为了统一所有语言 SDK 的生成和维护, 我们于 2017 年 1 月 12 日 发布了 新版 Python SDK qingstor-sdk-python, (为行文方便,我们在下文中将此 SDK 称为 新版 Python SDK )。

  • qingstor-sdk-python 不再与原有的 qingcloud-sdk-python 捆绑,可以灵活地应用于更多场景。
  • qingstor-sdk-python 有着更完善的 API 设计,对开发者屏蔽了底层的细节,开发者无需关注具体的请求拼装,只需要调用对应的接口即可。

未来规划

考虑到所有语言 SDK 使用接口的统一,新版 Python SDK 的接口实现选择了 非面向对象 的形式, 即与 旧版 Python SDK 不兼容。

  • 旧版 Python SDK 除修复 Bug 外,我们将不再维护。
  • 新版 Python SDK 将由 QingStor 直接维护,享受到最及时的新功能增加, BUG 修复和技术支持。

如何使用新版 Python SDK

使用 SDK 之前请先在青云控制台申请 access key 。

准备工作

发起请求前首先建立需要初始化服务:

from qingstor.sdk.service.qingstor import QingStor
from qingstor.sdk.config import Config

config = Config('ACCESS_KEY_ID_EXAMPLE', 'SECRET_ACCESS_KEY_EXAMPLE')
service = QingStor(config)

初始化并创建 Bucket, 需要指定 Bucket 名称和所在 Zone:

bucket = qingstor.Bucket('test-bucket', 'sh1a')
output = bucket.put()

可以使用 dir(output) 的形式来获取全部可用的属性。特别的,output.headers 是一个包含返回中全部 header 的字典;如果请求失败, output.content 将会存储返回的错误信息。

Objects 操作

接下来将会展示创建,下载,删除一个 Object 的全过程:

创建 Object

with open('/tmp/sdk_bin') as f:
output = bucket.put_object(
    'example_key', body=f
)

创建一个 Object 时,允许在body中传入一个 file like 对象,也支持直接传入一个字符串。上传一个比较大的 Object 时,建议使用 file 对象,避免将全部数据一次性读入内存。

下载 Object

output = bucket.get_object('example_key')
with open(local_path, "wb") as f:
    for chunk in output.iter_content():
        f.write(chunk)

下载一个 Object 时,建议使用 output.iter_content() 来获取文件内容。如果访问 output.content ,将会把全部数据一次性读入内存。

删除 Object

output = bucket.delete_object('example_key')

使用中遇到问题请在 项目 Issues 区 或者直接提交工单反馈。

Hadoop/HBase/Spark 入侵事件通告

继前一段时间曝出大规模利用 MongoDB 和 ElasticSearch 配置漏洞进行入侵的事件之后,下一个遭遇黑客锁定的目标将包括 Hadoop , 目前已出现灾情。该入侵会给用户的 Hadoop/HBase/Spark 等以 HDFS 为存储的数据造成安全风险,请可能被此安全隐患影响的用户仔细阅读本文,并做相应的处理。

容易遭受入侵的环境:

用户自建的未配置安全验证的 Hadoop/HBase/Spark 服务,并在公网上开放了三个产品都用到的 HDFS 端口如 50070 和 HBase 的Rest服务端口如 8000。或者通过端口转发,将青云 QingCloud 提供的 Hadoop/HBase/Spark 服务的端口通过路由器、VPC 转发,曝露到公网。

入侵现象:
  • Hadoop/HBase/Spark 数据被清空
  • 留信息勒索比特币
修复办法:
  • 禁止公网开放 Hadoop/HBase/Spark 端口,例如可以在青云 QingCloud 防火墙上禁用 Hadoop/HBase/Spark 的端口,例如 50070 和8000
  • 如果对 Hadoop/HBase/Spark  的端口在路由器、VPC 上进行了端口转发,请删除该转发规则
温馨提示:

青云 QingCloud 提供的 Hadoop/HBase/Spark 服务是运行在私有网络中的,如果用户没有主动设置端口转发将 Hadoop/HBase/Spark  端口在公网曝露,不会受到该安全隐患的影响,请用户放心使用。另外,对于从大数据 Client 客户端主机直接访问 Hadoop/HBase/Spark 集群的用户,也强烈建议将 Client 主机的访问方式由密码改为 SSH Key访问以杜绝其它安全漏洞。

另外,有任何其他问题可以工单与我们联系。

SDN 网络直通服务上线

sdn_passthrough

极大提升 Docker 的网络性能

运行在虚拟机(VM)上的 Docker 可直接使用云平台的 SDN,避免两层网络的重叠带来的数据包容量损耗;

每一台 Docker Instance 均可独享一个网卡的转发能力,并使用 IaaS 平台所有网络功能。

大幅简化 Docker 的系统配置

只需通过创建网卡、使用「Hostnic」插件将网卡逐一与 Docker Instance 挂载,便可以完成对 Docker 网络的配置;

支持 Docker Instance 独立挂载 EIP,独立配置防火墙策略(SG),及挂载为负载均衡 (LB)后端。

传统 Docker 部署方案的问题

1.严重的网络性能损耗

传统的基于 VM 的 Docker 部署方案,需要采用 Overlay 或 Bridge 网络插件实现 VM 内部的虚拟网络,多次虚拟化对性能带来了重重损耗。经测试,在云平台上直接使用 Docker Overlay 会损失近 3/4 的性能。

2.配置复杂度高

主流的 Docker 管理平台需要对 IP 地址做转换,以提供业务对内网和外网的地址。本身 Docker 实现这些功能就比较复杂,而在此基础上,Docker 如果运行在云平台上则还需要对云平台的 IP 再做一层地址转换,会带来额外的复杂度。

上述问题的根源在于,云平台和 Docker 平台都有自己的 SDN 实现,功能重合,使用时需要嵌套。

SDN 网络直通解决方案的优势

SDN 网络直通功能使 Docker 可直接使用 IaaS 平台的 SDN,代替其自身的网络功能,从而达到提高性能和简化使用的目地。SDN直通包含两个方面:

1.IaaS 平台网卡管理

提供网卡接口,让虚拟主机能够挂载多个网卡,这些网卡可以属于相同或者不同的网络。每个网卡能够管理自己的私网 IP、公网 IP、负载均衡器和防火墙等功能。

2.Hostnic 插件

Hostnic 是青云开发的 Docker 网络插件。在启动 Docker 实例的时候,可以挂载虚拟主机上的网卡, 并配置 IP 地址和路由。启动之后, Docker 实例就加入了云平台 SDN 提供的网络,能够使用云平台所有的网络功能。

7 步简单操作即可赋予 Docker 应用强大的网络功能

  1. 网络规划:对于一套基于 Docker 的业务系统,有两个网络需求:A. 管理网络, 用于部署和管理云主机;B. 用户网络,用于运行基于 Docker 的业务。
  2. 启动虚拟主机,并安装 Docker。
  3. 创建网卡, 并挂载到虚拟主机上。
  4. 启用并配置 Hostnic 插件,启动 Docker 实例。
  5. 添加 Docker 实例为负载均衡器后端。
  6. 绑定防火墙。
  7. 给网卡绑定公网 IP。

* SDN 网络直通所有组件及功能均不计费。

更多详情请参看《SDN 网络直通》用户指南。

Elasticsearch 入侵事件通告

Elasticsearch 入侵事件通告

继前一段时间曝出大规模利用 MongoDB 配置漏洞进行入侵的事件之后,又曝出大规模利用 Elasticsearch 配置漏洞进行入侵的事件。会给用户的 Elasticsearch 数据造成安全风险,请可能被漏洞影响的用户仔细阅读本文,并做相应的处理。

容易遭受入侵的环境:
用户自建的未配置安全验证的 Elasticsearch 服务,并在公网上开放了 Elasticsearch 端口,例如 9200。或者通过端口转发,将青云提供的 Elasticsearch 服务的端口通过路由器、VPC转发,曝露到公网。

入侵现象:
  • Elasticsearch 数据被清空
  • 留信息勒索比特币
修复办法:
  • 禁止公网开放 Elasticsearch 端口,例如可以在青云防火墙上禁用 Elasticsearch 的端口,例如 9200
  • 如果对 Elasitcsearch 的端口在路由器、VPC 上进行了端口转发,请删除该转发规则
温馨提示:
青云提供的 Elasticsearch 服务是运行在私有网络中的,如果用户没有主动设置端口转发将 Elasticsearch 端口在公网曝露,不会受到该漏洞的影响,请用户放心使用。
另外,有任何其他问题可以工单与我们联系。

可配置副本策略功能上线

为了让用户获得更好的使用体验,同时降低用户使用成本,青云QingCloud 推出了可配置副本策略。该策略支持用户的主机或者硬盘可以根据需求,灵活地选择同数据中心多副本或者单副本。

创建主机创建硬盘

用户通过配置合适的副本策略,不仅能够降低总体使用成本(用户在选择同数据中心单副本策略后,主机在关机状态下的使用费用降低 20%,硬盘费用亦降低 20%),还能够提升 I/O 性能,性价比获得大幅提升。

在推出可配置副本策略之前,青云QingCloud 默认采用同数据中心多副本策略,即数据存储时,会产生多份实时副本,并存放于同一数据中心的不同物理节点。

通过多副本保护机制,数据将拥有冗余副本,当数据所存放的物理节点宕机时,能够通过其他物理节点的副本对数据进行实时恢复,确保数据存储的高可靠性,以及相关服务的高可用性。

而同数据中心单副本策略,即数据存放时,只会保存原数据,即只有 1 份副本,没有冗余副本进行保护。

对于一些自身拥有副本保护机制的集群应用,如 Hadoop,在主机层面开放单副本策略,将避免两层副本机制的重叠。从而在确保数据安全的前提下,降低副本的总数量,不但提升了应用的运行效率,同时也对总体使用成本进行了优化。同时,采用单副本策略的主机和硬盘避免了网络同步产生的 I/O 开销,因此 I/O 性能也会有所提升。

在主机或者硬盘创建之后,用户可以随时调整副本策略,每个资源每天最多更改 2 次。更改策略时,主机或硬盘的运行状态均不会发生中断。

instancesvolume

目前,该功能已在上海 1 区正式开放,欢迎大家体验。

MongoDB 入侵事件通告

近日曝出大规模利用 MongoDB 配置漏洞进行入侵的事件,会给用户的 MongoDB 数据造成安全风险,请可能被漏洞影响的用户仔细阅读本文,并做相应的处理。

容易遭受入侵的环境:

用户自建的运行了未配置身份验证的 MongoDB 服务,并在公网上开放了 MongoDB 端口,例如 27017

入侵现象:

  • MongoDB 数据被清空
  • MongoDB 运行缓慢

修复办法:

  • 增加 MongoDB 密码验证,参考: https://docs.mongodb.com/manual/tutorial/enable-authentication/
  • 禁止公网开放 MongoDB 端口,例如可以在青云防火墙上禁用 MongoDB 的端口,例如 27017

温馨提示:

青云提供的 MongoDB 服务是运行在私有网络中的,并且已经考虑了安全加固措施,同时配置了身份验证,不会受到该漏洞的影响,请用户放心使用。

另外,有任何其他问题可以工单与我们联系。