使用托管标识将Azure SQL数据库链接到数据工厂

使用托管标识将Azure SQL数据库链接到数据工厂,azure,azure-sql-database,azure-data-factory,azure-managed-identity,Azure,Azure Sql Database,Azure Data Factory,Azure Managed Identity,我一直在尝试使用托管标识从Azure Data factory连接到Azure SQL数据库。 步骤如下: 已创建链接服务并选择托管标识作为身份验证类型 在SQL Server上,添加了作为Active Directory管理员为Azure数据工厂创建的托管标识 通过以上步骤,我可以对数据库执行所有数据操作。事实上,这就是问题所在。我想限制在我的SQL数据库上授予Azure Data Factory的权限 首先,让我知道我是否按照正确的步骤设置托管标识。然后,如何限制特权,因为我不希望data

我一直在尝试使用托管标识从Azure Data factory连接到Azure SQL数据库。
步骤如下:

  • 已创建链接服务并选择托管标识作为身份验证类型
  • 在SQL Server上,添加了作为Active Directory管理员为Azure数据工厂创建的托管标识
  • 通过以上步骤,我可以对数据库执行所有数据操作。事实上,这就是问题所在。我想限制在我的SQL数据库上授予Azure Data Factory的权限


    首先,让我知道我是否按照正确的步骤设置托管标识。然后,如何限制特权,因为我不希望data factory对SQL数据库执行任何DDL。

    如Raunak所述,您应该将角色更改为db_datareader

    在sql数据库中,运行以下sql:

    CREATE USER [your Data Factory name] FROM EXTERNAL PROVIDER;
    
    ALTER ROLE db_datareader ADD MEMBER [your Data Factory name];
    
    以下是sql:

    CREATE USER [your Data Factory name] FROM EXTERNAL PROVIDER;
    
    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
    

    更新:

    1.在azure portal中搜索并选择SQL server

    2.选择您并另存为管理员

    3.单击按钮并在sql数据库中运行两个sql。


    如需了解更多详细信息,请参阅。

    作为Raunak的评论,您应该将角色更改为db_datareader

    在sql数据库中,运行以下sql:

    CREATE USER [your Data Factory name] FROM EXTERNAL PROVIDER;
    
    ALTER ROLE db_datareader ADD MEMBER [your Data Factory name];
    
    以下是sql:

    CREATE USER [your Data Factory name] FROM EXTERNAL PROVIDER;
    
    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
    

    更新:

    1.在azure portal中搜索并选择SQL server

    2.选择您并另存为管理员

    3.单击按钮并在sql数据库中运行两个sql。


    更多详细信息,请参阅。

    限制用户(本例中为ADF MI)对目标数据库上db_datareader的权限,以限制权限。您可以通过ALTER ROLE命令执行此操作。我更新我的答案,您可以试一试。如果您有任何疑问,请随时询问。限制用户(本例中为ADF MI)对目标数据库上db_datareader的权限,以限制权限。您可以通过ALTER ROLE命令执行此操作。我更新了我的答案,您可以试一试。如果您有任何疑问,请随时提问。感谢Steve提供的详细答案。感谢Steve提供的详细答案。