【发布时间】:2021-11-11 16:15:47
【问题描述】:
我有一个带有 4 个访问策略的 Azure KeyVault。每个访问策略都有自己唯一的 ObjectId。
在尝试将我们的旧 Azure 资源导入 Terraform 配置时,我创建了如下所示的 Terraform 块。
resource "azurerm_key_vault" "example" {
name = "examplekeyvault"
location = azurerm_resource_group.example.location
resource_group_name = azurerm_resource_group.example.name
tenant_id = data.azurerm_client_config.current.tenant_id
sku_name = "premium"
}
resource "azurerm_key_vault_access_policy" "policy1" {
key_vault_id = azurerm_key_vault.example.id
tenant_id = data.azurerm_client_config.current.tenant_id
object_id = 001
key_permissions = [
"Get",
]
secret_permissions = [
"Get",
]
}
以上工作正常,我能够成功导入“policy1”。
但是,当我随后复制策略块并将其附加到下一个策略(如下面的策略)时,它似乎不接受它作为正确形成的 Terraform 配置。我的意图显然是导入所有四个策略(如果可能的话)。
resource "azurerm_key_vault" "example" {
name = "examplekeyvault"
location = azurerm_resource_group.example.location
resource_group_name = azurerm_resource_group.example.name
tenant_id = data.azurerm_client_config.current.tenant_id
sku_name = "premium"
}
resource "azurerm_key_vault_access_policy" "policy1" {
key_vault_id = azurerm_key_vault.example.id
tenant_id = data.azurerm_client_config.current.tenant_id
object_id = 001
key_permissions = [
"Get",
]
secret_permissions = [
"Get",
]
}
resource "azurerm_key_vault_access_policy" "policy2" {
key_vault_id = azurerm_key_vault.example.id
tenant_id = data.azurerm_client_config.current.tenant_id
object_id = 002
key_permissions = [
"Get",
]
secret_permissions = [
"Get",
]
}
在上述两个插图中,我只使用了虚拟 ObjectId。
我这样做是完全错误的方式,还是无法将多个策略导入到一个 Terraform 配置中?同时,Terraform 注册表文档说 Azure 允许每个 Key Vault 最多 1024 个访问策略。
【问题讨论】:
-
“它似乎不接受它作为正确形成的 Terraform 配置”这是什么意思? 在您的问题中包含错误消息!
-
您遇到的错误是什么?
-
好吧,这一切都变成了红鲱鱼。我最终让它工作了........是的,一旦我完成了导入,附加这些多访问策略块就可以工作了。
-
你好@hitman126,您能否将您的解决方案发布为答案。这将对遇到相同问题的其他社区成员有益。
-
你好@AnsumanBal-MT,所以最后,我提出的解决方案,即在我的第二个代码 sn-p 中描述的简单地将额外的策略块附加到密钥库访问策略,似乎可以作为我的后续Terraform 计划和应用进展顺利,没有报告任何错误。因此,我只能得出结论和/或假设这是一个正确的解决方案。
标签: azure terraform azure-keyvault azure-policy