问题描述
我一直在尝试使用托管身份从Azure数据工厂连接到Azure SQL数据库。
步骤如下:
- 创建链接服务并选择托管身份作为身份验证类型
- 在SQL Server上,添加了为Azure数据工厂创建的托管身份作为Active Directory管理员
以上步骤使我可以对数据库执行所有数据操作。其实这就是问题所在。我想限制SQL数据库中授予Azure数据工厂的特权。
首先,请让我知道我是否已按照正确的步骤来设置托管身份。然后,如何限制特权,因为我不希望数据工厂在SQL数据库上执行任何DDL。
解决方法
正如Raunak所说,您应该将角色更改为db_datareader。
在您的sql数据库中,运行以下sql:
CREATE USER [your Data Factory name] FROM EXTERNAL PROVIDER;
和此sql:
ALTER ROLE db_datareader ADD MEMBER [your Data Factory name];
然后您在Data Factory中执行任何DDL操作,就会出现如下错误:
"errorCode": "2200","message": "ErrorCode=SqlOperationFailed,'Type=Microsoft.DataTransfer.Common.Shared.HybridDeliveryException,Message=A database operation failed. Please search error to get more details.,Source=Microsoft.DataTransfer.ClientLibrary,''Type=System.Data.SqlClient.SqlException,Message=The INSERT permission was denied on the object
更新:
更多详细信息,您可以参考此documentation。