通过Terraform获取系统分配的托管身份的Azure客户端/应用程序ID

pftdvrlh  于 2023-05-18  发布在  其他
关注(0)|答案(1)|浏览(198)

我试图使用Microsoft SQL Server Provider for Terraform的mssql_user资源在Azure SQL数据库中为Web应用的托管身份创建用户。我没有Azure Active Directory中的Directory Readers角色,因此需要提供托管身份的客户端ID(或应用程序ID),而不仅仅是其名称。

resource "mssql_user" "example" {
  server {
    host = "example-sql-server.database.windows.net"
    azure_login { }
  }
  database  = "my-database"
  username  = azurerm_user_assigned_identity.example.name
  object_id = azurerm_user_assigned_identity.example.client_id
  roles     = ["db_datareader"]
}

这适用于用户分配的托管身份,其azurerm_user_assigned_identity资源公开client_id属性。但是,对于系统分配的托管标识,identity块仅公开principal_id,而不是client_id。将此与mssql_user资源一起使用会导致创建Azure SQL数据库用户,但随后无法登录到数据库。
是否有一种方法可以获取客户端ID(即应用程序id),以便我可以将其提供给mssql_user资源?

cwdobuhd

cwdobuhd1#

可以使用azuread_service_principaldata source。只需将object_id设置为principal_id,它将返回application_id,即client_id。

data "azuread_service_principal" "sp" {
  object_id = some_resource.identity[0].principal_id
}

相关问题