Azure PaaS服务密钥的安全性

Azure PaaS服务,比如存储,Redis缓存,服务总线,IoT中心等等,一般通过密钥来认证客户端,也就是说只有提供正确密钥的客户端才能访问和使用对应的Azure PaaS服务,所以这个密钥是很重要很重要的,那么该如何来保证密钥的安全性呢?接下来将以问答的形式来阐述。

问:密钥能否被暴力破解?

答:我们先看看几个密钥的例子来分析密钥的组成。


存储账户


5+kWqp1jIGQdGPVp6o7pgT/8DlRYnE55jJbxh51h7WHU4yGqAbMYdCYbSfR2CaFsi1/pfmL+d/QJbeAmDn6FQg==


Redis


R4W4Ol+yHUJ9Z25VHSrQdn9sGw9ApNe00EvpvVXn05Y=


服务总线


/TCLOykE3mgZ8Lxe2/N7VAZAo3pSn5K48y54Xoss4Pw=


IoT中心


xv8FF7ja0QpPHcWE9B1wB3Ge7pLyj0ZvickxQAOdk/Y=

可以看到一般情况下密钥的长度是44个字符,其中存储比较特殊有88个字符。而构成有以下这些元素:

-         字母,而且大小写敏感 (a - z,A - Z)

-         数字(0 - 9)

-         特殊字符(/,+,=)

考虑到字符‘=’只是用做结尾,因此我们计算出一般情况下密钥的可能性有:

(26*2 + 10 + 2)^44 = 64^44

也就是64的44次方,而存储账户更是多达64的88次方。这种情况下要暴力破解,可能性实在太低。

问:密钥是否会在传输的过程中被截取?

答:客户可能会有这样的疑问,在客户端使用Azure PaaS的SDK时,一般需要提供连接字符串,或者是密钥直接作为参数,感觉密钥就跟普通的用户名密码一样,会被传输到服务端来做对比验证,因此觉得密钥有可能在传输过程中被截取。

首先,所有的传输都是加密的(SSL\TLS)。但这还不是关键点,更关键的是,密钥其实压根就不会被传输,被用来传输和验证的是令牌(Token)。也就是说SDK拿到提供的密钥,会根据密钥生成相应的令牌,再传输令牌到服务端做验证。而令牌本身是被限制了访问范畴和生命周期的,因此比起密钥的安全性会高得多。

问:在客户端,密钥无论是明文写在代码里,还是配置文件中,都不安全,有没有更安全的方式?

答:当然有。就跟生活中把贵重物品放在保险箱里一样,我们也可以把密钥放在保险箱里。Azure密钥保管库就是这样一个服务,可以将密钥保存到其中,授权的客户端在需要的时候再从中获取。这样的话,既使得密钥能被集中管理,而且能使密钥管理者和使用者分离,提高了安全性的同时,更提供了便捷性。更多了解Azure密钥保管库,可参阅以下文章:

-         Azure密钥保管库介绍

-         Azure密钥保管库入门

-         Azure密钥保管库使用

那么除了这种方式之外,还有没有别的办法呢?上一个问题中我们提到通过令牌来认证,也就是说客户端其实不一定要知道密钥,它只要能提供正确的令牌就可以了,因此我们可以创建一个专门生成令牌的集中管理服务,授权的客户端只需要调用这个服务,就可以拿到目标资源的访问令牌,这样也可以避免密钥被客户端显示的知道。当然这种方法需要自己创建一个专门生成令牌的服务,所以比起使用Azure密钥保管库的方式要复杂些。

时间: 2024-11-11 02:18:23

Azure PaaS服务密钥的安全性的相关文章

为什么Azure服务密钥都是成对的?

前一篇文章提到,Azure很多PaaS服务都是提供密钥来做认证的,如果查看生成的密钥,我们会发现密钥都是成对的.比如下图示例的存储账户中有两个密钥key1和key2. 那这两个密钥有区别吗?如果没区别,为什么提供两个呢? 首先,这两个密钥本质上是没有任何区别的,功能权限上都完全一致,也就是说你可以随便用哪个密钥都是没问题的. 那提供两个有什么好处呢? 第一,可以避免应用服务宕机.但这个避免应用服务宕机是有前提的,就跟任何云应用一样,要保证高可用,至少得有两个及两个以上的实例. 好,假设现在我们有

Azure Stack技术深入浅出系列5:在Azure Stack上使用Web App PaaS服务及其背后原理窥探(开发案例)

App Service 是微软Azure的PaaS产品. 为任何平台或设备创建Web App PaaS服务和mobile App PaaS服务. 将应用与SaaS解决方案集成.与本地应用程序进行连接,以实现业务流程的自动化.在我们日常开发中,经常会使用Web App PaaS服务来承载企业的业务. 本文试图通过一个案例来分别详细说明Azure Web App业务的下列几大特点: 应用服务计划 多种语言和框架 持续集成和部署 连接数据库服务 可用性全局缩放 就在本文撰写过程中,Azure Stac

浅谈Windows Azure 存储服务

我们现在正处于一个数据爆炸的年代,大数据.开放数据炒的如火如荼,表明数据给我们带来了不可估量的价值. 对于企业来说,保存.管理和维护数据已经成为一项重要的挑战.大量存储设备的采购.部署.数据规模的不断增长,对于需要为其数据使用可伸缩的.持久的且具有高可用性的存储的应用程序,云计算使其有了新的方案可供选择,这正是 Microsoft 开发 Azure 存储服务的原因. Azure存储服务包括Blob存储.表存储.队列存储和文件存储.这些服务都包含在每个存储账户中. 那么存储账户是一个唯一的命名空间

Azure 认知服务--计算机视觉 API - 分析图像

在本节中,笔者将详细介绍 Azure 认知服务中的一种:计算机视觉 (Computer Vision) API. 我的一个客户有需求,他们需要消费者与自己的产品合照,然后上传到服务器并转发到朋友圈. 但是为了防止恶意用户上传不健康的照片,需要对图像进行筛查. 计算机视觉 API 的分析图像功能,正好有 Adult 参数,可以检测图像是否是色情的,正好满足客户的需求. 请注意: 本文使用的是国内由世纪互联运维的 Azure China 计算机视觉服务,API 参考. 如果是使用的是海外的 Azur

Windows Azure文件共享服务--File Service

部署在Windows Azure上的虚拟机之间如何共享文件?例如:Web Server A和Web Server B组成负载均衡集群,两个服务器需要一个共享目录来存储用户上传的文件.通常,大家可能首先想到的是在一个虚拟机上开放一个共享目录或者NFS服务(Linux).其实,Windows Azure的文件共享服务就可以很好的解决这个问题,而且不需要在虚拟机上开放共享目录或者提供NFS服务. 文件共享服务是Windows Azure存储服务的一部分.每个存储账户(Storage Account)都

深入解析Microsoft Azure File 服务

Microsoft Azure File Service对大家相对比较陌生,因为这是一个Azure的预览功能,我也是从邮件中得知有这项新的feature,让我感兴趣的是,这个功能可以解决应用程序文件同步的问题. 我总结了几个适用的场景: 依靠文件共享迁移本地应用到Azure VM或云服务 存储共享的应用设置,例如配置文件 存储诊断数据像Log文件等 存储工具和实用工具用来管理和开发Azure VM或者云服务. 当然还有其他的应用场景,这需要我们在实际的应用时去设计.接下来,先解释下什么是Azur

利用VisualVM监测Azure云服务中的Java应用

在做Java开发的时候,我们需要在上线之前对程序进行压力测试,对程序的性能进行全面的监控,了解JVM的CPU,内存,GC,classes,线程等等信息,或者在程序上线运行的过程当中以便于诊断问题或者对程序做出优化,市面上做Java profiling的工具也比较多,比如商业的JProfiler,JClarity等,也有免费的JDK自带的工具,如VisualVM,JConsole,JMC等等,那么当我们将Java应用程序部署到了Azure Cloud Service中,如何利用这些工具做性能监控和

【云快讯】HP 将关闭公有云服务,转售微软的 Azure 云服务

惠普的企业业务公司已经与微软达成合作伙伴关系,将向客户提供基于Azure云服务,2016年初HP企业业务将关闭自己的公有云服务,Azure将做为主推的云服务. 惠普的首席执行官梅格-怀特曼在周二的电话会议表示,惠普企业服务将把微软作为首选的公共云的合作伙伴,希望和微软达成紧密的合作关系.她没有提供细节,但表示,将在下个月在伦敦举行的HPE(Hewlett-Packard Enterprise)发布大会上进行公布. 惠普选择微软,而不是亚马逊或者谷歌的云进行合作,是由于 HP在服务器和个人电脑领域

使用Azure上的Azure AD服务管理Office 365账户(无缝打通Azure和Office 365)

Office 365的各个组件运行在Azure AD服务至上,但是在Office 365上面,对账户底层的访问,操作权限有限,整合Azure服务.Office 365.企业内部系统看上去会很困难. 通过这一篇我们,我们可以发现在Azure上面直接调用Office 365的目录服务,无需开发就可以达到Azure上面的应用,都可以访问并使用Office 365账户,只需要将Office 365 和本地做ADFS联盟服务,这样就将Azure上.企业内.和Office 365上所有的应用全部打通了,都基