如何通过PowerShell脚本为服务主体分配Purview的Data Source Admin角色
新增角色分配逻辑的修改方案
你只需要在创建服务主体、生成访问令牌的步骤之间,添加Purview角色分配逻辑即可,同时修正原脚本的两处隐性错误:
步骤1:添加角色分配代码
在脚本中$sp = createSP $subscriptionid $resourceGroup $spName 这行之后,添加如下代码:
# 获取Purview账户的资源ID作为权限分配范围 $purviewAccount = Get-AzPurviewAccount -Name $purviewName -ResourceGroupName $resourceGroup $purviewScope = $purviewAccount.Id # Purview Data Source Admin角色的固定角色定义ID $dsAdminRoleId = "c3266f20-084f-4819-a873-8b328a0801ed" # 为服务主体分配对应角色 New-AzRoleAssignment -ApplicationId $sp.ApplicationId ` -RoleDefinitionId $dsAdminRoleId ` -Scope $purviewScope # 等待权限同步生效,避免后续请求出现权限未生效的问题 Start-Sleep -Seconds 30
注意:运行该脚本的登录账号需要具备Purview账户所属范围的「所有者」或「用户访问管理员」权限,才能完成角色分配操作。你也可以执行命令
Get-AzRoleDefinition | Where-Object {$_.Name -eq 'Purview Data Source Admin'}确认对应角色的ID。
步骤2:修正原脚本的两处错误
- 调用
createSubCollection函数时,你传入的端点参数是$atlas_endpoint,但你之前定义的端点变量为$endpoint,需要修改为:
createSubCollection $accessToken $endpoint $collectionName $parentCollectionName
createSubCollection函数内部的$purviewName变量不属于函数作用域,会导致请求路径错误,你可以将$purviewName作为参数传入函数,或者直接将路径中的集合名替换为你传入的$collectionName参数。
内容的提问来源于stack exchange,提问作者Rana
相关产品推荐
相关产品推荐

