Azure服务主体可以更新其自己的密码吗?

时间:2019-06-06 23:02:51

标签: azure azure-active-directory

我需要使用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>"}}]

2 个答案:

答案 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>

enter image description here

删除密码(成功后不返回任何内容):

$password = Get-AzureADApplicationPasswordCredential -ObjectId <ObjectId>
Remove-AzureADApplicationPasswordCredential -ObjectId <ObjectId> -KeyId $password.KeyId

此外,您可以检查我的测试示例中的屏幕快照以及门户中的屏幕快照,确保服务主体自己添加/删除密码

enter image description here

答案 1 :(得分:0)

似乎您在尝试更新服务原理时发现错误。

错误提示您没有此操作的权限。

错误原因:您可能没有足够的权限来执行此操作。

要执行的操作:

为此,您必须在应用程序上分配以下权限。请按照以下步骤操作:

  1. 登录到azure portal
  2. 点击azure active directory
  3. 应用注册
  4. 选择您的应用程序
  5. API权限
  6. 添加权限
  7. Microsoft Graph
  8. 申请许可
  9. Directory中选择Directory.Read.All
  10. Application中选择Application.ReadWrite.All
  11. 添加权限
  12. 获得YourTennant的管理员同意

请参见下面的屏幕截图:

enter image description here

  

注意:您还需要在该应用程序上至少具有Contributor目录角色。由于Contributor可以创建和管理所有类型的   Azure资源,但不能授予其他人访问权限。