如何通过编程方式将Azure Data Factory现有链接服务从服务主体转为托管标识
将ADF AzureBlobFS链接服务从服务主体转为托管标识(编程/REST/脚本方法)
前置准备
- 确认目标数据工厂已启用系统托管标识(默认创建时自动启用,可在ADF门户的"托管标识"页面查看)
- 为ADF的系统托管标识分配目标存储账户的权限(如
Storage Blob Data Contributor),确保MSI有权访问存储资源
方法1:REST API 更新
请求详情
- 请求方法:PUT
- 请求URL:
https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataFactory/factories/{factoryName}/linkedservices/{linkedServiceName}?api-version=2018-06-01 - 请求头:需携带Azure AD访问令牌(可通过
az account get-access-token命令获取),格式为Authorization: Bearer {access-token} - 请求体:移除原服务主体相关字段,添加
authenticationType: "MSI",示例如下:{ "name" : "ls_stg_storage_dem001", "type" : "Microsoft.DataFactory/factories/linkedservices", "properties" : { "type" : "AzureBlobFS", "typeProperties" : { "url" : "https://testdus001.dfs.core.windows.net", "authenticationType": "MSI" } } }
方法2:PowerShell 脚本更新
先确保已安装Az.DataFactory模块(未安装可执行Install-Module -Name Az.DataFactory -Force),执行以下脚本:
# 配置参数 $subscriptionId = "你的订阅ID" $resourceGroupName = "资源组名称" $dataFactoryName = "数据工厂名称" $linkedServiceName = "ls_stg_storage_dem001" # 登录Azure(若未登录) Connect-AzAccount -Subscription $subscriptionId # 构建链接服务配置 $linkedServiceDef = @{ Type = "AzureBlobFS" TypeProperties = @{ Url = "https://testdus001.dfs.core.windows.net" AuthenticationType = "MSI" } } # 更新链接服务 Set-AzDataFactoryV2LinkedService -ResourceGroupName $resourceGroupName ` -DataFactoryName $dataFactoryName ` -Name $linkedServiceName ` -Definition $linkedServiceDef
方法3:Azure CLI 脚本更新
执行以下步骤:
- 准备更新用的JSON配置文件(命名为
ls_update.json):{ "type": "AzureBlobFS", "typeProperties": { "url": "https://testdus001.dfs.core.windows.net", "authenticationType": "MSI" } } - 运行CLI命令更新:
# 配置参数 SUBSCRIPTION_ID="你的订阅ID" RESOURCE_GROUP="资源组名称" FACTORY_NAME="数据工厂名称" LINKED_SERVICE_NAME="ls_stg_storage_dem001" # 切换到目标订阅 az account set --subscription $SUBSCRIPTION_ID # 执行更新 az datafactory linked-service create-or-update \ --resource-group $RESOURCE_GROUP \ --factory-name $FACTORY_NAME \ --linked-service-name $LINKED_SERVICE_NAME \ --properties @ls_update.json
注意事项
- 原链接服务中的
servicePrincipalId、servicePrincipalCredentialType、tenant、encryptedCredential字段需全部移除,MSI认证无需这些配置 - 操作前建议备份原链接服务配置,避免配置丢失
- 更新完成后,可在ADF门户测试链接服务连通性,验证权限是否配置正确
内容的提问来源于stack exchange,提问作者Sunny
相关产品推荐
相关产品推荐

