我们有一个PowerShell脚本来安装和配置应用程序。从Windows Azure存储下载软件和脚本更新。该脚本由合作伙伴使用。
目前,Azure存储名称和密钥是纯文本格式。
$context = New-AzureStorageContext
-StorageAccountName 'myAccountName'
-StorageAccountKey 'qwertynOc6bmpUhsnFuzSzFLHG7rJgkiakdWpIQ=='
有没有办法加密Azure存储名称和密钥(或至少是密钥),以便合作伙伴无法直接访问Azure存储?
修改
我还使用Azure表存储进行日志记录。
我确实找到了下面的代码,但我想你必须在使用该脚本的每台机器上重新生成该文件。这对我们不起作用。
$file = '.\myPasswd.txt'
$securedStorageKey = Read-Host -Prompt "Enter Storage Key" -AsSecureString
ConvertFrom-SecureString $securedStorageKey | Set-Content $file
$accountName = 'myAccountName'
$securedStorageKey = Get-Content $file | ConvertTo-SecureString
$accountKey = [Runtime.InteropServices.Marshal]::PtrToStringAuto([Runtime.InteropServices.Marshal]::SecureStringToBSTR($securedStorageKey));
$accountContext = New-AzureStorageContext -StorageAccountName $accountName -StorageAccountKey $accountKey
答案 0 :(得分:1)
您可能需要考虑通过共享访问签名实现访问。使用SAS,您可以对资源进行有限访问,并且还可以定期访问该访问权限。这确实增加了一些复杂性,因为您需要在某处运行代码来验证用户并生成SAS令牌,但至少您并未放弃对存储资源的完全访问权限。
答案 1 :(得分:0)
我假设您将此脚本交给您的合作伙伴;没有好办法做到这一点。
New-AzureStorageContext需要凭据才能工作。这意味着如果您要使用加密的"密钥"将此脚本分发给您的合作伙伴,您还必须将其与未加密的""方法,而合作伙伴可以用来解密你的密钥。
如果您无法将密钥分发给合作伙伴,我会考虑使用其他策略来分发和下载您的软件。
配置Azure存储以提供公共数据 如果合作伙伴在下载数据后不需要您的密钥,则一种解决方案可能是将Azure配置为使用公共URL。
更改您的powershell脚本(您的合作伙伴正在使用),从公共位置下载脚本/数据/安装,然后再下载。那么你就不必分发你的钥匙了。