我试图使用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
资源?
1条答案
按热度按时间cwdobuhd1#
可以使用
azuread_service_principal
data source。只需将object_id设置为principal_id,它将返回application_id,即client_id。