部署期间 Azure Terraform 无法在 KeyVault 中设置机密
Azure Terraform Unable to Set secret in KeyVault during deployment
我遇到了一个障碍,我似乎没有找到切实可行的解决方案。
我正在使用 azure terraform 创建一个存储帐户,我希望在发布管道期间能够将此存储帐户的连接字符串设置为现有 KeyVault 中的机密。
到目前为止,我可以从这个 KeyVault 中检索秘密,因为我使用的 managed identity
对 KeyVault 具有以下权限:
key = get, list
secret = get, list and set
cert = get , list
我的terraform中的工作流程如下:
检索 KeyVault 数据:
data "azurerm_key_vault" "test" {
name = "test"
resource_group_name = "KeyVault-test"
}
检索用户分配的身份数据:
data "azurerm_user_assigned_identity" "example" {
name = "mng-identity-example"
resource_group_name = "managed-identity-example"
}
获得这 2 个数据后,我尝试按如下方式创建秘密:
resource "azurerm_key_vault_secret" "secretTest" {
key_vault_id = data.azurerm_key_vault.test.id
name = "secretTest"
value = azurerm_storage_account.storageaccount.primary_connection_string
}
一旦我将发布管道设置为 运行 这个地形,它就会失败并显示错误 Access Denied
这是完全可以理解的,因为此 terraform 没有设置或检索秘密的权限。
这是我被屏蔽的部分。
如果有人可以帮助理解我如何使用我的托管身份来设置此机密?
我查看了 terraform 文档,但找不到任何步骤或解释。
非常感谢您的帮助和时间,如果您需要更多信息,请问我。
请确保您用于使用 Terraform 登录 Azure 的 服务主体具有 您分配给托管身份的相同权限 .
provider "azurerm" {
features {}
subscription_id = "00000000-0000-0000-0000-000000000000"
client_id = "00000000-0000-0000-0000-000000000000" ## This Client ID needs to have the permissions in Keyvault access policy which you have provided to the managed identity.
client_secret = var.client_secret
tenant_id = "00000000-0000-0000-0000-000000000000"
}
或
如果您使用 服务连接 将 Devops 管道连接到 Azure 并在 Terrafarom 中使用它,那么您需要提供开发服务连接(服务主体)访问策略权限.
我遇到了一个障碍,我似乎没有找到切实可行的解决方案。
我正在使用 azure terraform 创建一个存储帐户,我希望在发布管道期间能够将此存储帐户的连接字符串设置为现有 KeyVault 中的机密。
到目前为止,我可以从这个 KeyVault 中检索秘密,因为我使用的 managed identity
对 KeyVault 具有以下权限:
key = get, list
secret = get, list and set
cert = get , list
我的terraform中的工作流程如下:
检索 KeyVault 数据:
data "azurerm_key_vault" "test" {
name = "test"
resource_group_name = "KeyVault-test"
}
检索用户分配的身份数据:
data "azurerm_user_assigned_identity" "example" {
name = "mng-identity-example"
resource_group_name = "managed-identity-example"
}
获得这 2 个数据后,我尝试按如下方式创建秘密:
resource "azurerm_key_vault_secret" "secretTest" {
key_vault_id = data.azurerm_key_vault.test.id
name = "secretTest"
value = azurerm_storage_account.storageaccount.primary_connection_string
}
一旦我将发布管道设置为 运行 这个地形,它就会失败并显示错误 Access Denied
这是完全可以理解的,因为此 terraform 没有设置或检索秘密的权限。
这是我被屏蔽的部分。
如果有人可以帮助理解我如何使用我的托管身份来设置此机密?
我查看了 terraform 文档,但找不到任何步骤或解释。
非常感谢您的帮助和时间,如果您需要更多信息,请问我。
请确保您用于使用 Terraform 登录 Azure 的 服务主体具有 您分配给托管身份的相同权限 .
provider "azurerm" {
features {}
subscription_id = "00000000-0000-0000-0000-000000000000"
client_id = "00000000-0000-0000-0000-000000000000" ## This Client ID needs to have the permissions in Keyvault access policy which you have provided to the managed identity.
client_secret = var.client_secret
tenant_id = "00000000-0000-0000-0000-000000000000"
}
或
如果您使用 服务连接 将 Devops 管道连接到 Azure 并在 Terrafarom 中使用它,那么您需要提供开发服务连接(服务主体)访问策略权限.