Windows Azure平台数据存储的访问控制研究
2014-05-25宁方华牛建瑞俞武嘉郭玉明
宁方华,牛建瑞,俞武嘉,郭玉明
(1.浙江理工大学先进制造技术研究所,杭州310018;2.杭州电子科技大学自动化学院,杭州310018;3.山东电工电气日立高压开关有限公司,济南250101)
Windows Azure平台数据存储的访问控制研究
宁方华1,牛建瑞1,俞武嘉2,郭玉明3
(1.浙江理工大学先进制造技术研究所,杭州310018;2.杭州电子科技大学自动化学院,杭州310018;3.山东电工电气日立高压开关有限公司,济南250101)
访问控制是保证信息机密性和完整性的关键。针对微软的云平台---Windows Azure平台,着重研究其具有存储功能服务的访问控制技术,其中具有存储功能的服务包括Windows Azure的Storage Service和数据库SQL Database,从用户验证和授权两个过程对这两种存储服务的访问控制技术进行分析探讨。最后根据这两种服务的存储特点,以基于Windows Azure的门禁管理系统为例,给出系统在Windows Azure平台的安全存储的部署方案,保证系统的安全性和灵活性。
Windows Azure平台;访问控制技术;云计算
0 引 言
目前,微软、谷歌、亚马逊和IBM等IT业巨头都建立了云计算平台,随着云计算及应用范围的不断扩大,信息安全问题已成为制约云平台快速发展和推广的重要因素之一。Windows Azure平台是微软于2008年发布的云计算平台,它也可以通过Internet为在其他地方运行的应用程序提供服务,可以直接运行应用程序,并保证性能不降低[1-3]。该平台提供的服务主要有Windows Azure、SQL Database和AppFabric,其中Windows Azure的Storage Service和SQL Database具有数据存储功能。目前为止,Windows Azure刚刚落户中国,实际应用还处于初级阶段,如何充分利用Windows Azure平台数据存储的安全控制技术,以保证系统开发的安全性和灵活性值得深入研究[4-5]。
访问控制作为一种重要的信息安全技术,是保证云平台的信息机密性和完整性的关键技术[6]。访问控制过程大致可以分为验证和授权两个过程。本文在明确区分验证和授权两个过程的基础上,着重研究Windows Azure平台数据存储功能服务的访问控制技术,旨在提供应用程序以最小权限运行的设计指导,提高系统的安全性和访问灵活性。
1 在Windows Azure Storage Service中的访问控制
1.1 Windows Azure Storage Service
Storage Service由Windows Azure提供,具有数据存储功能。它主要开放Blob、Table和Queue 3种存储方式,分别存储非结构化数据(如文档、图片和影像等)、结构化数据(订单信息或用户注册信息等)和用于应用程序不同模块之间异步通信机制,以此满足用户不同数据存储需求[7]。
Storage Service支持访问协议HTTP/HTTPS,使用单一的URL作为访问入口。服务接口使用REST接口和Windows Azure SDK类库,其中REST是一种针对网络应用的设计和开发方式,可以降低开发的复杂性,提高系统的可伸缩性;Windows Azure SDK类库是REST接口的封装,由微软专门为.NET平台开发人员提供,使.NET平台开发相较于PHP/Java/Perl/Ruby等其他平台难度降低。
1.2 基于密钥的身份验证
Storage Service采用访问密钥这种安全性较高的验证方式。Storage Service端与客户端使用相同的访问密钥,并采用相同方式利用HMAC-SHA256加密算法对数据请求进行数字签名,最后Storage Service端通过判断生成的数字签名与客户端的是否相同达到验证目的。用户请求访问Storage Service时验证过程如图1所示。
图1 Storage Service使用访问密钥进行身份验证的流程
1.3 授权方式
Storage Service有两种访问角色,一种是拥有账户名称和密钥的所有者,另一种是匿名者,其中所有者可以通过访问密钥获得Storage Service的完全访问权。所以下面的权限设置针对匿名用户,内容包含增加、删除、修改和查询的操作权限。
Storage Service中Table和Queue不允许匿名用户访问,Blob的授权方式比较灵活。Blob采用两层的方式组织存储,外层是Blob容器,里层是一组Blob对象。Blob容器本身可以作为访问控制单元进行权限设置,也可以对其进一步设置访问控制策略(Shared Access Policy)实现对Blob对象的访问权限设置。通过设置Shared Access Policy的Start Time、Expiry Time和Permissions(包括Read、Write、Delete、List和None)生成共享访问签名(Shared Access Signatures URL)。使用Shared Access Signatures URL访问Blob对象可以授权匿名用户而不用公开密钥或者将Blob容器设置为允许匿名用户,从而实现匿名用户安全访问。
2 在SQL Database中的访问控制技术
2.1 SQL Database
Windows Azure虽有Storage Service用于存储,但Storage Service并非关系型数据库,无JOIN等常用功能,并且其采用分布式海量数据存储法,在处理复杂应用时,无法用规范化机制过滤重复数据,大量数据在应用程序与Storage Service之间的不断传输和计算将花费大量时间。鉴于此,微软提供SQL Database(旧称为SQL Azure)开发和部署关系型数据库。SQL Database的高扩展性和高可用性使用户可以轻松扩展解决方案和无需备份及容灾处理,并且使用通用的通信协议TDS,支持ADO. NET、ODBC、JDBC和SQL Server客户端类库,使得用户可以利用Transact-SQL和SQL Server工具管理数据库,从而降低开发难度[8]。
2.2 防火墙+SQL身份验证模式
SQL Database采用防火墙+SQL身份验证模式验证客户端,确保每个连接到SQL Database的请求都通过验证。其中防火墙验证客户端计算机的IP地址是否在防火墙指定的允许计算机连接范围以内,SQL身份验证客户端用户的账户和密码与sys.sql_logins(必须连接到Master数据库)中的清单是否匹配,只有两种验证都成功,SQL Database才接受访问请求,验证过程如图2所示。
图2 SQL Database用户验证流程
2.3 基于角色的授权方式
SQL Database在防火墙规则中设置允许访问的IP地址范围后,通过采用基于角色的方式授予用户访问权限,授权内容包括对数据库和登录名增加、删除、修改的操作权限。SQL Database通过分配权限给角色,再将角色赋给用户完成对用户的授权,提供的安全角色有两个:loginmanager和dbmanager,分别授权用户对登录名和数据库的操作权限。在SQL Database服务申请验证配置后,用户会拥有一个SQL Database服务器、一个master数据库和一个Server-lever Principal Login登录名,Server-le-ver Principal Login登录名类似于SQL Server实例的服务器级别的sa,拥有对数据库管理的权限,master数据库负责跟踪创建数据库或其他登录名,对登录名或数据库的操作必须先连接到master数据库。
3 系统在Windows Azure平台的安全部署方案
由于门禁管理系统对信息存储和传输的安全要求较高,所以本文以基于云的门禁管理系统为例,设计在Windows Azure平台上系统的安全部署方案,通过充分利用Windows Azure平台提供的权限设置来有效提高系统安全性和灵活性。
在门禁管理系统中,数据主要包括用户信息、门禁机管理信息、刷卡记录、卡片信息、文件管理等。通过分析存储信息是否需要JOIN等复杂操作,决定使用SQL Database存储用户信息、门禁机管理信息、刷卡记录、卡片信息等,使用Storage Service中Blob存储文件管理(包括对门禁机版本文件、声音文件信息的管理)。下面讨论对它们的安全权限进行设置的问题。
3.1 SQL Database设置
使用SQL Database最常采用的方式是使用本地SQL Server设计数据库后,再上传云端。本案例采用这种方式,首先使用本地SQL Server2008 R2设计出数据库AccessManegement,然后配置数据库在云的端运行环境,包括创建SQL服务器、数据库和进行防火墙设置,设置防火墙如图3所示,最后将本地SQL Server2008R2上的数据库生成的脚本上传到Windows Azure平台,上传云端后数据库AccessManegement如图4所示。
SQL Database采用基于角色授权方式,下面的代码创建一个登录名为mylogin和用户名为mylgUser的数据库用户,通过赋予用户角色,该用户具有创建数据库或其他登录名的权限(连接到master数据库)。
图3 防火墙设置
图4 云上数据库AccessManegement
CREATE LOGIN mylogin WITH password=‘<mylogin password>‘;-创建登录名mylogin
CREATE USER mylg User FROM LOGIN mylogin;-创建用户名login User
EXEC sp_addrolemember‘dbmanager‘,‘mylg User‘;-login1User被赋予dbmanager角色
考虑1个由圆柱体和两端半球体组成的压力容器的优化设计问题,其中圆柱体由两个压制金属板制成的半圆柱壳体焊接而成,半球体也通过焊接与圆柱体相连。该优化问题包括4个设计变量:x1表示半球体的厚度,x2表示圆柱壳体的厚度,x3和x4分别表示圆柱壳体的半径和长度。该优化设计的目标是在满足工作应力和容积的条件下尽可能降低压力容器的材料、成形和焊接成本,对应的数学模型为:
EXEC sp_addrolemember‘loginmanager‘,‘mylg User‘;-login1User被赋予loginmanager角色
数据库连接字符串在数据库创建完后获得,用户使用连接字符串创建连接信息,在用户应用程序配置文件Web.config中的连接信息设置如下:
<connectionStrings>
<add name=″local AccessManagementConnectionString″connectionString=″Data Source= JANE-PCSQLEXPRESS;Initial Catalog=AccessManagement;Integrated Security=True″provider Name=″System.Data.SqlClient″/>
<add name=″Access ManagementConnectionString″connectionString=″Server=tcp:rc5i1ch80k.database.windows.net,1433;Database =AccessManagement;User ID=njrfish@ rc5i1ch80k;Password=HEZI2pingzi;Trusted_ Connection=False;Encrypt=True;Connection Timeout=30″provider Name=″System.Data.Sql Client″/>
</connectionStrings>
其中,字符串“local AccessManagementConnectionString”用于访问本地数据库,字符串“Access ManagementConnectionString”用于访问上传到云端的数据库,应用程序使用LINQ TO SQL实体访问数据库时,可以根据需要在属性连接中设置相应字符串。
3.2 存储服务设置
图5 文件管理界面
图6 访问密钥图
<ConfigurationSettings>
......
<Setting name=″AccessFileDataSource.ConnectionString″value=″DefaultEndpointsProtocol=https;AccountName=accesssmgstorage;AccountKey=umB-vYmFqJJz…….Ndtr H2ydJ6uZryS8RlFUlrWlgmnz7a0d/ LF2P2uQ==″/>
</ConfigurationSettings>
对于匿名用户对文件管理的操作权限(增、删、读、改)的分配,可以通过共享访问签名实现。下面代码是使用共享访问控制对容器访问控制策略的设置,匿名用户只具有读取文件的权限,并且有效时间是1 d:
BlobContainerPermissions blobPermission =new BlobContainerPermissions();
blobPermission.Public Access=BlobContainerPublic AccessType.Container;
blobPermission.SharedAccessPolicies.Add(″AccessFileTimePolicy″,new Shared AccessPolicy()
{Permissions=Shared AccessPermissions.List|Shared AccessPermissions.Read,
Shared AccessStart Time=DateTime.Now,
Shared AccessExpiry Time=DateTime.Now. AddDays(1)});
container.SetPermissions(blobPermission);
4 结 语
本文着重研究了Windows Azure平台中用于数据存储的Storage Service和SQL Database的访问控制技术,从访问控制技术的身份验证模式和授权方式两方面分析中可以看出,Windows Azure平台针对不同服务提供不同的访问控制管理,并且验证、授权方式比较完善。不过,在访问灵活性和安全性方面尚仍存在不足,现在常见的网络攻击下其依然存在安全威胁。所以在利用Windows Azure云平台软件开发时,仍应以信息安全为第一考虑因素,设计应用程序在默认设置下以最小权限运行,选择适当的权限模式实现最佳解决方案。
[1]张月雷.云计算及Windows Azure Platform简介[J].黑龙江科技信息,2011(28):116-117.
[2]Costa P J P,Cruz A M R.Migration to Windows Azure:analysis and comparison[J].Procedia Technology,2012(5):93-102.
[3]Hill Z,Li J,Mao M,et al.Early observations on the performance of Windows Azure[J].Scientific Programming,2011,19(2/3):121-132.
[4]朱明中.走进云计算Windows Azure实战手记[M].北京:中国水利水电出版社,2011:201-204.
[5]徐子岩.实战Windows Azure:微软云计算平台技术详解[M].北京:电子工业出版社,2011:206-209.
[6]王宇杰,王 锋,杨文宾.计算机网络访问控制技术研究[J].现代计算机,2010(7):20-21.
[7]方国伟,Bill Liu.详解微软Windows Azure云计算平台[M].北京:电子工业出版社,2011:151-154.
[8]涂兰敬.细数选择云数据库SQL Azure的六大理由[J].网络与信息,2012(6):37.
Study on Access Control Technology of Data Storage on Windows Azure Platform
NING Fang-hua1,NIU Jian-rui1,YU Wu-jia2,GUOYu-ming3
(1.Institute of Advanced Manufacturing Technology,Zhejiang Sci-Tech University,Hangzhou 310018,China;2.College of Automation,Hangzhou Electronic Science and Technology University,Hangzhou 310018,China;3.SDEE Hitachi High-Voltage Switchgear Co Ltd,Jinan 250101,China)
In allusion to Microsoft cloud platform-Windows Azure platform,this paper focuses on studying access control technology of its services with storage function which include Storage Service and SQL Database of Windows Azure;analyzes and discusses access control technology of both storage services from two processes-user authentication and authorization;finally takes access control system based on Windows Azure for example according to storage characteristics of both services,gives the deployment scheme of secure storage of the system on Windows Azure platform and ensures the security and flexibility of the system.
Windows Azure Platform;access control technology;cloud computing
TP399
A
(责任编辑:张祖尧)
1673-3851(2014)01-0075-04
2013-04-22
浙江省重点创新团队项目(2011R09015-13)
宁方华,(1978-),女,山东泰安,博士,副教授,研究方向为现代物流与供应链管理、物联网技术、物流信息化。