如何将 Azure 用户托管标识 Terraform 分配到存储帐户?

And*_*her 5 azure terraform

我正在尝试通过 Terraform 向 Azure 存储帐户授予 Azure“用户分配的托管标识”权限。

我正在努力寻找最好的方法来做到这一点 - 任何想法将不胜感激!

背景:我希望部署 HDInsights 并将其指向 Data Lake Gen2 存储帐户。为了使 HDInsights 部署成功,它需要引用对存储帐户具有“存储 Blob 数据所有者”权限的托管标识。

我可以通过 Terraform 成功创建存储帐户和托管身份。但是,我一直坚持将托管标识分配给存储帐户的最佳方法。

Joy*_*ang 2

如果您创建托管身份,它实际上会在您的租户中创建一个服务主体。因此,您可以使用azurerm_role_assignment 将服务主体作为Storage Blob Data Owner角色分配给存储帐户。

data "azurerm_subscription" "primary" {}

data "azurerm_client_config" "test" {}

resource "azurerm_role_assignment" "test" {
  scope                = "${data.azurerm_subscription.primary.id}"
  role_definition_name = "Reader"
  principal_id         = "${data.azurerm_client_config.test.service_principal_object_id}"
}
Run Code Online (Sandbox Code Playgroud)

该示例在订阅范围内分配角色,对于您的情况,只需将 更改scope为存储帐户,即role_definition_name您的托管身份(服务主体)的。Storage Blob Data Ownerprincipal_idObject ID