当前位置: 首页 > 知识库问答 >
问题:

Spring Boot-Azure密钥存储库管理存储库访问机密

刘向阳
2023-03-14
  • 同一空间/存储库中机密的逻辑分组
  • HSM的可能性
  • 日志记录/审核
  • 检索/更改机密的一个位置,许多应用程序可能依赖该位置而不触及应用程序

我不知道如何在我的Spring Boot应用程序中处理存储库访问。当我使用azure-key-vault spring boot Starter时,我必须设置Applications.Properties中的访问权限,如本教程:如何使用spring boot Starter for Azure Key Vault

但在我看来,我只是用另一层ID/密码来保护我的秘密,它们同样是在我的.propertes文件中以纯文本形式出现的,并最终出现在版本控制系统中。

我想把我的Spring Boot后端部署为azure web app Resources中的JAR,如果这对问题很重要的话。

谢谢预付款

共有1个答案

章乐逸
2023-03-14

我是Key Vault的Azure SDK开发人员。Azure Key Vault提供了一个集中的、安全的存储库,它可以用不同的权限集对多个人、服务主体(应用程序)或托管身份(稍后将详细介绍)进行身份验证。Like维护者可能能够列出、获取和设置机密、密钥和证书,而应用程序和托管标识可能只能获取和列出(如果出于某种原因需要枚举所有机密,比如某些应用程序配置启动例程来填充匹配某种模式的所有机密)。这提供了一种方法来控制谁可以访问什么,以及访问到什么程度。

理想情况下--如建议的那样--尽可能使用托管标识。托管标识允许您使用Azure管理的特定ID运行应用程序。未提供密码。应用程序以该身份运行,您可以在密钥库中以任何符合您需要的权限授予对该身份的访问权。

您引用的示例倾向于使用简单的示例来解释一个概念,但是我们已经意识到并正在尝试更新这样的文档以推荐托管标识。

例如,您的应用程序可以使用在执行安全性之前设置的环境变量,如下所示:

AZURE_TENANT_ID="some GUID - doesn't really have to be secret, but doesn't hurt"
AZURE_CLIENT_ID="secret GUID for service principal ID"
AZURE_CLIENT_SECRET="secret value for service principal ID"

然后,使用我们的Azure.*包,您可以让您的代码执行如下操作:

SecretAsyncClient secretAsyncClient = new SecretClientBuilder()
  .vaultUrl("https://myvault.vault.azure.net/")
  .credential(new DefaultAzureCredentialBuilder().build())
  .buildAsyncClient();

String secret;
secretAsyncClient.getSecret("secretName")
  .subscribe(secretWithVersion ->
    secret = secretWithVersion.getValue());

您可以使用这个或者更好的是使用不同的服务主体来进行开发。在开发Azure Key Vault SDK时,我设置了自己的SP,仅用于开发目的,而我们的测试运行人员使用Azure DevOps中的变量使用不同的SP,这些变量是从经过身份验证的Key Vault连接中提取的。

 类似资料:
  • 我没有找到任何关于在前端端实现逻辑来管理Azure密钥库的可能性的信息。同时,我创建了一个Node JS服务器项目使用ENV来管理Azure Key Vault,它工作成功,但我想在我的Angular应用程序中得到同样的效果。

  • 我无法访问托管密钥库中的存储帐户密钥。下面是我的代码: 似乎$secret.secretValueText为空/null。如何正确检索存储帐户密钥?这就是出现的错误。

  • 我有一个premium storage account,在创建这个帐户后我就启用了加密,我找到了这个链接https://docs.microsoft.com/en-us/azure/storage/storage-service-encryption来检查blob是否加密。 现在,如果我使用Azure key vault加密OS盘和数据盘,它也用于保护静止数据,但加密存储帐户也会做同样的事情。有谁

  • 我试图在Azure Devops中进行ARM部署,从而在Azure中的现有密钥存储库中添加密钥存储库访问策略。

  • 理想的方法似乎是在中添加一个新的设置, 然后将逻辑添加到ParseImpl中,以便将表示秘密的KeyVault URL传递到该方法中,然后它将从那里查询密钥。 另一个选项是覆盖(以及类似的连接字符串设置),以便它查询KeyVault。

  • 我有一个场景: > 在Azure中使用secret创建密钥库。 用代码访问此机密。 关注本文-https://kasunkodagoda.com/2018/04/28/allow-application-running-on-an-azure-virtual-machine-to-access-azure-key-vault-using-managed-service-identity/ http