Windows Azure存储服务安全和性能解析
中关村在线 12年06月07日 10:00 【转载】 作者:博客 责任编辑:王振
导读:Windows Azure 除了针对云计算基础建设、营运与管理部份特别设计并支持外,它也必须要具有应用程序及其他为基础开发服务的相关支持,以一个操作系统来说,除了硬件与运算资源的分配与控管外……
关键词: Windows Azure 云存储 安全
Windows Azure数据存储服务收到数据访问请求后进行同样的操作:
它首先使用访问密钥通过加密算法对数据访问请求进行数字签名,然后把该数字签名和包含在标头部分的用户生成的数字签名进行比对。如果数字签名一致, 系统则授权该访问,否则拒绝该访问。所以即使有黑客在网络上截获了用户的数据访问请求并加以修改,但是因为生成的数字签名不同从而该访问也会被拒绝。
访问密钥对于存储的数据安全性来说至关重要,用户必须非常小心地妥善保管。一旦访问密钥被泄露给其他人,他就可以使用访问密钥来访问用户数据账号中 的任何数据,而且因访问而产生的费用也记到用户的账号上。确保访问密钥安全的另外一个最佳实践是定期重新生成一个新的访问密钥,同时把旧的访问密钥失效。
需要注意的是,我们在申请存储账号时系统生成了两个访问密钥:一个是主访问密钥,另一个是辅访问密钥。两个访问密钥的功能相同都可以访问数据。之所以有两个是为了方便用户切换访问密钥。比如,在通常情况下用户使用主访问密钥,如果一旦主访问密钥被泄露,用户可以把主访问密钥在最短的时间内失效(重新 生成一个新的主访问密钥),然后切换到使用辅访问密钥。用户不需要为此修改代码,而只需要更改服务配置文件即可,同时更新服务配置文件也没有宕机时间。此 外,另外一种有效的做法是应用程序代码可以先使用主访问密钥来访问数据,如果验证失败,代码自动使用辅访问密钥,这样用户在切换访问密钥时就不会有宕机时 间了。
用户对表格和消息队列的每一个数据访问请求,无论是读操作还是写操作,都必须通过验证。但是对Blob的数据访问要稍微灵活一些。我们在前面的使用 Blob的例子中提到,在创建Blob容器后需要对Blob容器设置访问权限,该访问权限可以是公有的(Public)或私有的 (Private)。如果Blob容器是私有的,则对该容器内所有Blob的任何操作访问请求都必须通过验证;如果Blob容器是公有的,则对该容器内所 有Blob的读操作数据访问请求将不需要通过验证,可以直接访问,但是对该容器内Blob的写操作访问还是需要通过验证的。
为了进一步提高对Blob数据访问控制的灵活度,Windows Azure数据存储服务还提供了另外一种叫做Shared Access Signature的数据访问控制方式。使用Shared Access Signature,管理员可以为其他用户生成一个临时的数据访问请求,该临时数据访问请求包含有效的数字签名,所以它可以通过数据验证。该临时数据访问 请求也包含该用户可以访问哪些数据和操作权限等信息,而且该临时数据访问请求只会在指定时间内有效。这样管理员既可以允许其他用户访问数据,又不会泄露访 问密钥。