我需要使用Azure服务主体以编程方式进行操作:
1.添加/删除其他服务主体的密码,并且
2.自行添加/删除密码
1很容易做到。
但是由于以下错误,我似乎无法执行2。 #2有可能吗?怎么样?
graphrbac.PasswordCredentialsUpdateParameters failed:
graphrbac.ApplicationsClient#UpdatePasswordCredentials: Failure responding to request: StatusCode=403 -- Original Error: autorest/azure: Service returned an error. Status=403 Code="Unknown" Message="Unknown service error"
Details=[{"odata.error":{"code":"Authorization_RequestDenied","date":"2019-06-06T22:19:35","message":{"lang":"en","value":"Insufficient privileges to complete the operation."},"requestId":"<ID>"}}]
答案 0 :(得分:1)
#2有可能吗?怎么样?
是的,有可能。
只需将您的服务主体添加到租户的Application Administrator
目录角色中,无需添加其他权限,它就会起作用(可能会有一些延迟)。
导航到门户网站中的Azure Active Directory
-> Roles and administrators
->单击Application administrator
-> Add assignment
->按您的AD App名称(服务主体名称)搜索- >选择它-> Select
。
我的测试样本:
我使用powershell进行了测试,换句话说,它也应该可以工作。
添加密码:
Connect-AzureAD -TenantId "<TenantId>" -ApplicationId "<ApplicationId>" -CertificateThumbprint "D0F0B179xxxxx6E41833FDE5947"
New-AzureADApplicationPasswordCredential -ObjectId <ObjectId>
删除密码(成功后不返回任何内容):
$password = Get-AzureADApplicationPasswordCredential -ObjectId <ObjectId>
Remove-AzureADApplicationPasswordCredential -ObjectId <ObjectId> -KeyId $password.KeyId
此外,您可以检查我的测试示例中的屏幕快照以及门户中的屏幕快照,确保服务主体自己添加/删除密码。
答案 1 :(得分:0)
似乎您在尝试更新服务原理时发现错误。
错误提示您没有此操作的权限。
错误原因:您可能没有足够的权限来执行此操作。
要执行的操作:
为此,您必须在应用程序上分配以下权限。请按照以下步骤操作:
azure portal
azure active directory
Directory
中选择Directory.Read.All
Application
中选择Application.ReadWrite.All
YourTennant
的管理员同意请参见下面的屏幕截图:
注意:您还需要在该应用程序上至少具有
Contributor
目录角色。由于Contributor
可以创建和管理所有类型的 Azure资源,但不能授予其他人访问权限。