我需要将一个巨大的应用程序迁移到 Windows Azure。该应用程序依赖于第三方库,该库需要存储在角色实例文件系统上的特殊二进制文件中的激活密钥。
显然,该密钥必须包含在角色包中或存储在角色可以获取它的某个位置。激活密钥不会绑定到机器(因为我不知道角色将在云中的确切位置运行),因此任何人都可以使用它来制作该库的副本。
由于 Azure 角色在不受我们控制的地方运行,我对密钥被盗并广泛可用感到有些偏执。
如何评估窃取包含在 Azure 角色中的二进制文件的可能性?我如何减轻此类风险?
我需要将一个巨大的应用程序迁移到 Windows Azure。该应用程序依赖于第三方库,该库需要存储在角色实例文件系统上的特殊二进制文件中的激活密钥。
显然,该密钥必须包含在角色包中或存储在角色可以获取它的某个位置。激活密钥不会绑定到机器(因为我不知道角色将在云中的确切位置运行),因此任何人都可以使用它来制作该库的副本。
由于 Azure 角色在不受我们控制的地方运行,我对密钥被盗并广泛可用感到有些偏执。
如何评估窃取包含在 Azure 角色中的二进制文件的可能性?我如何减轻此类风险?
当提出这样的问题时,您需要区分攻击者:
A2 无法访问您的角色二进制文件,但 A3 和 A4 可以非常容易地访问它们。
正如另一个答案中提到的,您可以将您的秘密存储在角色配置文件中。但是,A4(有权访问门户的任何人)仍然可以访问这些机密。
为了防御 A4,您希望使用角色二进制文件或角色配置中不存在的密钥来加密角色配置文件中的机密。然后在您的角色二进制文件中,您使用解密密钥解密加密的角色设置。
用于加密机密的密钥是证书,Azure SDK 将为您安装该证书。您可以在此处找到有关为 azure 设置证书的帖子。
总之,对于您需要防御组织中进行部署/有权访问您的配置文件的人员的机密,您可以执行以下操作:
让受信任的一方执行以下操作:
然后将您的服务修改为:
就安全性而言,除非您的团队在这方面非常有能力,否则默认始终升级的Azure OS 可能比任何自配置主机更安全。至少,与我们之前的自托管情况相比,这是我们(又名我的公司 Lokad)在完全迁移到 Windows Azure 两年后评估情况的方式。
然后,如果您有凭据,例如许可证密钥,那么放置它们的最合乎逻辑的位置是角色配置文件,而不是角色二进制文件。您可以根据需要在 VM 中自然地重新生成特殊文件,但这样一来,您就不会在归档二进制版本时在内部将凭据分散到各处。