我尝试将策略分配给现有存储帐户的Azure密钥库。问题是找不到如何获取分配策略所需的帐号(Principal_id)的UUID。我试图为数据找到正确的属性,但它看起来不存在于数据对象。因此,问题是我如何为现有存储帐户分配密钥存储库访问策略?
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"]
}发布于 2021-06-17 20:12:55
Azure存储帐户使用包含帐户名和密钥的凭据。密钥是自动生成的,用作密码,而不是用作加密密钥。密钥库通过定期在存储帐户中重新生成存储帐户密钥来管理存储帐户密钥,并为对存储帐户中资源的委派访问提供共享访问签名令牌。
用户可以使用Key Vault托管存储帐户密钥功能与Azure存储帐户列出(同步)密钥,并定期重新生成(轮换)密钥。用户可以管理存储帐户和传统存储帐户的密钥。
用户可以通过Powershell或CLI使用密钥库设置策略来管理存储账户。
发布于 2021-06-17 22:23:52
下面的链接提供了有关如何创建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只是active directory中可用的用户的对象id。如果您参考以下文档,您可以从门户https://docs.microsoft.com/en-us/azure/marketplace/find-tenant-object-id中找到用户的对象id
您可以参考下面的SO线程,使用terraform创建一个对象id
发布于 2021-07-02 07:32:47
您可以使用:
data "azurerm_resources" "storage_account" {
type = "Microsoft.Storage/storageAccounts"
name = "<your_storage_account_name>"
} 如果您使用的是托管服务标识,那么principal_id可能会在那里公开,而它不在data.azurerm_storage_account资源中……
我还没有尝试过,所以ymmv,但是我在查找具有MSI的现有WebApps的principal_id时遇到了相同的问题,并且它们的数据资源也不公开.identity属性,所以我计划...
https://stackoverflow.com/questions/68018649
复制相似问题