为什么从Azure Key Vault获取证书要求将其存储为秘密?

时间:2018-12-11 15:23:31

标签: azure powershell azure-keyvault

类似以下博客 https://blogs.technet.microsoft.com/neales/2017/06/26/getting-a-private-certificate-from-key-vault/

似乎想找回秘密?是否将其“存储”为证书并不重要?

1 个答案:

答案 0 :(得分:0)

这取决于您打算如何使用证书。您可以使用有关想要支持的预期工作流程的详细信息来更新您的问题。

但是基本上可以将证书存储为文件。您可以查看更多详细信息(C#),以启发如何将证书加载到变量中之后执行该操作。

Exporting a Certificate as BASE-64 encoded .cer

更新

要考虑的安全性注意事项。如果您将存储在蔚蓝密钥保管库中的证书视为秘密,并且想要限制对其的访问,则必须考虑PowerShell脚本将如何存储所需的凭据以对KeyVault进行身份验证。

如果计划无人值守/按计划运行脚本而无需用户交互,则必须在需要运行脚本的计算机上存储某种凭证。 BetterCredentials是一个很棒的PowerShell本机模块,用于在本地计算机上存储凭据。

我建议您创建一个Azure服务主体(应用程序注册/注册的应用程序),该主体将仅具有足够的权限才能从KeyVault获得证书。然后,应将创建的“服务主体”详细信息存储在本地计算机上,您应首先加载这些凭据,然后将其用于连接到KeyVault。

应能够从BetterCredentials中加载服务主体详细信息并登录Azure的示例代码:

BetterCredentials\Get-Credential -UserName <application ID> -Store
$azureTenantId = <tenant ID>
$Cred = BetterCredentials\Get-Credential -UserName <application ID>
Add-AzureRmAccount -Credential $Cred -TenantId $azureTenantId -ServicePrincipal