如何将Azure用户托管身份的Terraform分配给存储帐户?

时间:2019-05-01 10:39:43

标签: azure terraform

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

我正在努力寻找最佳方法,任何想法都将不胜感激!

背景:我正在寻求部署HDInsights,并将其指向Data Lake Gen2存储帐户。为了使HDInsights部署成功,它需要引用对存储帐户具有“存储Blob数据所有者”权限的受管身份。

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

1 个答案:

答案 0 :(得分:0)

如果您创建托管身份,它实际上会在您的租户中创建一个服务主体。因此,您可以使用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}"
}

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