我尝试将策略分配给现有存储帐户的 Azure Key Vault。问题是找不到如何获取分配策略所需的帐户(principal_id)的 UUID。我试图为数据找到正确的属性,但对于数据对象来说它似乎不存在。所以问题是如何为现有存储帐户分配 Key Vault 访问策略?
resource "azurerm_key_vault_access_policy" "storage2" {
key_vault_id = azurerm_key_vault.keyvault.id
tenant_id = data.azurerm_client_config.current.tenant_id
object_id = data.azurerm_storage_account.example.identity.0.principal_id
key_permissions = ["get", "create", "list", "restore", "recover", "unwrapkey", "wrapkey", "purge", "encrypt", "decrypt", "sign", "verify"]
secret_permissions = ["get"]
}
答案 0 :(得分:0)
Azure 存储帐户使用包含帐户名称和密钥的凭据。密钥是自动生成的,用作密码,而不是作为加密密钥。 Key Vault 通过定期在存储帐户中重新生成存储帐户密钥来管理存储帐户密钥,并提供共享访问签名令牌以委派访问存储帐户中的资源。
用户可以使用 Key Vault 托管存储帐户密钥功能列出(同步)与 Azure 存储帐户的密钥,并定期重新生成(轮换)密钥。用户可以管理存储帐户和经典存储帐户的密钥。
用户可以通过 Powershell 或 CLI 使用密钥保管库设置策略管理存储帐户。
答案 1 :(得分:0)
下面的链接为您提供了有关如何在 terraform 中创建客户管理的密钥的信息,其中创建密钥保管库策略是其中的一部分 https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/storage_account_customer_managed_key
通用唯一标识符 (UUID) 分配给整个目录和 Azure Active Directory (AAD) 中存在的每个用户个人帐户,无论该帐户是在云中创建还是最初在 Active Directory (AD) 上创建-前提实例,然后同步到云端
根据上述信息,UUID 只不过是活动目录中可用的用户的对象 ID。如果您参考以下文档,您可以从门户中找到用户的对象 ID https://docs.microsoft.com/en-us/azure/marketplace/find-tenant-object-id
您可以参考下面的 SO 线程使用 terraform 创建对象 id
答案 2 :(得分:0)
您也许可以使用:
data "azurerm_resources" "storage_account" {
type = "Microsoft.Storage/storageAccounts"
name = "<your_storage_account_name>"
}
如果您使用的是托管服务标识,principal_id 可能会在那里公开,而它不在 data.azurerm_storage_account 资源中...
我还没有尝试过,所以 ymmv,但是我在为具有 MSI 的现有 WebApp 查找 principal_id 时遇到了同样的问题,并且它们的数据资源也没有公开 .identity 属性,所以我计划……