如果用户是用户分配托管标识,则确定 Azure SQL Server 中的用户名
Posted
技术标签:
【中文标题】如果用户是用户分配托管标识,则确定 Azure SQL Server 中的用户名【英文标题】:Determine Username in Azure SQL Server if user is a User assigend managed identity 【发布时间】:2021-05-20 05:47:58 【问题描述】:我使用来自 web 应用的用户分配的托管标识连接 Azure SQL Server。到目前为止,这工作正常,我们的日志记录过程应在数据库中记录此应用程序(和其他应用程序)的所有活动。
要确定当前执行用户的用户名,我通常可以在任何存储过程中使用类似
SELECT @ORIGINAL_LOGIN()
这将返回连接用户的用户名。
在我的例子中,托管身份的用户名是“octservice”。但是,当“octservice”连接并记录其活动时,@ORIGINAL_LOGIN() 函数不会返回其用户名,它会从 Azure AD 返回类似 ClientID@TenantID 的内容。
我怎样才能确定用户名,就像它出现在 SSMS 中一样? ClientID@TenantID 不是该用户的 USER_ID。
【问题讨论】:
您可能需要CURRENT_USER
,它返回USER
LOGIN
在当前连接的数据库中使用。
不,我试过了 - CURRENT_USER 还会返回我的 ClientID@TenantID 而不是用户名(在我的示例中为“octservice”)。
【参考方案1】:
试试SELECT SYSTEM_USER()
?它是SUSER_SNAME()
的同义词。我已经看到它在托管身份方面被引用过一次或两次。
【讨论】:
System_User 在这种情况下没有帮助,它返回了相同的 ClientID@TenantID以上是关于如果用户是用户分配托管标识,则确定 Azure SQL Server 中的用户名的主要内容,如果未能解决你的问题,请参考以下文章
使用自动化帐户中用户分配的托管标识连接到 Azure 存储帐户(使用 Azure RM 模块)
如何使用用户分配的托管标识访问 Azure 中 Function App Config 的 Key Vault
如何获取Azure App Service的特定用户分配的托管服务标识的令牌?