Terraform 安全管理平面';地形中的s键拱顶

Terraform 安全管理平面';地形中的s键拱顶,terraform,azure-keyvault,terraform-provider-azure,Terraform,Azure Keyvault,Terraform Provider Azure,我在一个地形代码中工作。这些要求是: 将TF状态文件放入Azure存储帐户。访问的访问密钥 存储帐户必须是安全的 我的TF程序使用 服务主体应该是哪个客户端id、客户端机密、租户id 加密并放入Azure存储帐户 我的想法是使用一个单独的钥匙库,其中包含上述所有安全的秘密。但是,一个terraform程序如何保护访问密钥、访问密钥库的连接呢?这是关于管理层的问题 根据: ,这提供了一种对应用程序以前已在Azure AD服务上注册的授权请求进行编码的方法。 我如何将类似的想法应用到地形代码中?

我在一个地形代码中工作。这些要求是:

  • 将TF状态文件放入Azure存储帐户。访问的访问密钥 存储帐户必须是安全的
  • 我的TF程序使用 服务主体应该是哪个客户端id、客户端机密、租户id 加密并放入Azure存储帐户
我的想法是使用一个单独的钥匙库,其中包含上述所有安全的秘密。但是,一个terraform程序如何保护访问密钥、访问密钥库的连接呢?这是关于管理层的问题

根据: ,这提供了一种对应用程序以前已在Azure AD服务上注册的授权请求进行编码的方法。 我如何将类似的想法应用到地形代码中?或者你可以提出更好的方法来实现这个想法吗


非常感谢。

我认为不可能同时加密存储访问密钥和服务主体的秘密。对于后端状态,可以使用服务主体进行身份验证,这样就不会公开存储访问密钥。您只需要向服务主体授予正确的权限。看一看

但是对于服务主体,如果您在存储帐户中存储了诸如client\u id、client\u secret、tenant\u id之类的内容,那么您需要在执行Terraform代码之前获取它们。它还需要存储访问密钥或服务主体密钥或SAS令牌


因此,我认为您可以使用Azure CLI进行身份验证:使用服务主体登录。然后,您不需要向
azurerm
提供机密。但实际上,它也不是绝对安全的。您还可以在路径
~/.azure/
中找到访问令牌。为此,您可以更改此路径的权限。如果你也认为它不安全,你可以看看。但在所有事情发生之前,您需要有一个VM。

您可以使用Azure DevOps管道,并将服务主体机密作为安全变量组(可以从KV链接)或服务连接提供。 检查: (免责声明:我是作者) 和