我现在的情况是这样的:
要致电 AZF:
调用似乎工作正常(该函数是可调用的)
问题出在azure函数内部。
为了能够执行用户创建任务,我需要在每个数据库上创建“func-test-01”用户(函数应用托管标识)!
如果我在目标数据库上执行此操作:
CREATE USER [func-test-01] FROM EXTERNAL PROVIDER;
ALTER ROLE db_datareader ADD MEMBER [func-test-01];
ALTER ROLE db_datawriter ADD MEMBER [func-test-01];
GO
GRANT CONTROL TO [func-test-01]
GO
并调用azure函数,它按预期工作。
到目前为止一切顺利,但我们有很多数据库,并计划将托管身份(“func-test-01”)添加到 AAD 组,该组是托管数据库的服务器的所有者:如果我执行此操作,并删除来自数据库的托管身份用户,我收到一条错误消息,指出服务主体(管理身份)无法连接到数据库!
另一方面,如果我创建另一个带有消费计划的功能应用程序,无需身份验证,如果我遵循上述相同步骤(部署,创建系统分配的 mi,并将其注册为服务器所有者组的成员),它无需创建数据库用户即可工作:我缺少什么?
最终我能够让这个基础设施运行起来,但有一些注意事项: