如何保护Azure存储/服务总线中的访问密钥

时间:2014-06-16 12:06:10

标签: .net azure azureservicebus azure-storage

这个问题与我的想法有些类似:What is the use of Default Issuer and Default Key in Windows Azure Service Bus? Does the key need to be secured?

我有一个PC应用程序,我想在其中访问" Azure存储表"和" Azure服务总线主题"。两者都可以通过使用"访问密钥"来访问。 (这是由Microsoft设计的。)现在访问密钥嵌入在我的.NET代码中。 我估计它将花费大约5分钟来反编译.NET程序集,提取访问密钥并获得对存储和服务总线命名空间的完全访问权限。 如果我想阻止用户获得对我的数据的完全访问权限,我该如何保护它?

  • 我可以构建一个非托管的dll而不是.NET程序集吗?在这种情况下,它需要10分钟才能打破。
  • 我可以使用自定义密码加密访问密钥,并存储在磁盘或云端。在这种情况下,假设用户可以访问自定义密码,它仍然需要大约10分钟来反编译和中断。
  • 我可以为所有用户创建单独的存储帐户。这样,如果一个帐户被用户泄露,他只能访问自己的帐户。这可以防止类似"共享系统数据等概念。虽然。而且我不确定我是否拥有无限数量的存储帐户。 (现在它在我的门户网站上说最多20个。)
  • 我可以混淆.NET程序集吗?我非常不喜欢混淆.NET程序集。它通常会带来许多额外的问题。而且我猜你仍然可以通过内存调试器拔出密钥。

您通常如何保护这种"系统帐户访问"?

1 个答案:

答案 0 :(得分:2)

任何有权访问存储帐户密钥的人都可以访问存储帐户上的任何操作。通常,您最好将网站或某种API背后的存储帐户隔离开来。即使是生成shared access keys的简单服务,客户端应用程序随后也会使用该服务来执行操作......

编辑:错过了关于服务总线的一点......你也可以在这里使用SAS - http://msdn.microsoft.com/en-us/library/dn170478.aspx