Get-AzureADApplication 和 Set-AzureADApplication 等操作的权限不足
Insufficient privilege for operation like Get-AzureADApplication and Set-AzureADApplication
我想要自动化部署,它需要更新 Azure AD 应用程序注册设置。
到目前为止我能够:
- 使用证书创建 Azure AD 应用程序和服务主体(thx MS 文档)
- 然后将命令 Connect-AzureAD 与之前的服务主体及其证书一起使用
- 使用像 Get-AzureADApplication -ObjectId 11111111-2222-3333-4444-555555555555 这样的命令
- 在上一个项目符号中,ObjectId 11111111-2222-3333-4444-555555555555 与我在第一个项目符号中创建的应用程序匹配
但是我无法执行如下命令:
- Get-AzureADApplication -Filter "DisplayName eq '$aADApplicationame'"
- $aADApplicationame 与之前创建的应用程序相匹配
- 设置-AzureADApplication -ObjectId $aADApplication.ObjectId -ReplyUrls $ReplyUrls
- 获取 AzADServicePrincipal
我收到以下错误消息
Set-AzureADApplication : Error occurred while executing SetApplication
Code: Authorization_RequestDenied
Message: Insufficient privileges to complete the operation
根据我的研究,我设置了一些 API 权限如下:
不幸的是,尽管授予了所有权限,但仍然没有足够的权限。
你知道我是否错过了什么吗?我应该添加任何特定权限以使其正常工作吗?
问候。
您遇到此问题是因为 Powershell cmdlet 的工作方式与 MS Graph 不同。 Powershell 不需要权限,而是需要角色来执行此操作。请将全局管理员角色添加到您的服务原则中,然后尝试 Connect-AzureAD
以便问题得到解决。
详情请参考Assigning administrator roles in Azure Active Directory。
另一个回复提到,你可以把Global Administrator
角色给service principal,是对的,但是这种情况下Global Administrator
的权限太大了,可能会造成一些问题安全问题。
在这种情况下,您使用的命令 Get-AzureADApplication
和 Set-AzureADApplication
本质上是调用 Azure AD Graph API,因此要解决此问题,更好的解决方案是添加权限Azure AD Graph API,请按照以下步骤操作。
1.Navigate 到您的广告应用程序的 API permissions
-> select Azure Active Directory Graph
(不是 Microsoft Graph
).
2.Select Application permissions
(不是 Delegated permissions
)-> Application.ReadWrite.All
-> 单击 Add permissions
。
3.At最后,点击Grant admin consent for xxx
按钮。
稍等片刻,再次尝试命令,它会正常工作。
更新:
查看文档后,发现MS已经发布了一些调用Microsoft Graph的新命令,以前没有见过。
例如在您的情况下,您可以使用 Get-AzureADMSApplication
而不是 Get-AzureADApplication
.
Get-AzureADMSApplication -Filter "DisplayName eq 'joyttt'"
使用 Set-AzureADMSApplication
代替 Set-AzureADApplication
。
Set-AzureADMSApplication -ObjectId <object-id> -Web @{ RedirectUris = "https://mynewapp.contoso.com/" }
对于Get-AzADServicePrincipal
,目前没有对应的,以后应该会有。使用上述命令时,Microsoft Graph 的权限将起作用,无需使用 Azure AD Graph,但您应该使用 Application permission
,而不是 Delegated permission
(您在问题中使用了 Delegated permission
.)
我也遇到了类似的问题,请确保做以下两件事:
- 将 运行 设置为 azure 自动化帐户
- 在将 运行 设置为帐户后,在新创建的 azure 自动化帐户的应用程序注册中,确保明确添加云应用程序管理员角色。
- 为 Application.ReadWrite.All 添加 API 权限(Microsoft 图)
在我的例子中,应用程序注册在角色和管理员屏幕下显示云应用程序管理员角色,我认为这为新应用程序注册提供了所需的权限,但事实并非如此。 PowerShell 脚本仅在我们明确分配云应用程序管理员角色后才起作用。
我想要自动化部署,它需要更新 Azure AD 应用程序注册设置。
到目前为止我能够:
- 使用证书创建 Azure AD 应用程序和服务主体(thx MS 文档)
- 然后将命令 Connect-AzureAD 与之前的服务主体及其证书一起使用
- 使用像 Get-AzureADApplication -ObjectId 11111111-2222-3333-4444-555555555555 这样的命令
- 在上一个项目符号中,ObjectId 11111111-2222-3333-4444-555555555555 与我在第一个项目符号中创建的应用程序匹配
但是我无法执行如下命令:
- Get-AzureADApplication -Filter "DisplayName eq '$aADApplicationame'"
- $aADApplicationame 与之前创建的应用程序相匹配
- 设置-AzureADApplication -ObjectId $aADApplication.ObjectId -ReplyUrls $ReplyUrls
- 获取 AzADServicePrincipal
我收到以下错误消息
Set-AzureADApplication : Error occurred while executing SetApplication Code: Authorization_RequestDenied Message: Insufficient privileges to complete the operation
根据我的研究,我设置了一些 API 权限如下:
不幸的是,尽管授予了所有权限,但仍然没有足够的权限。 你知道我是否错过了什么吗?我应该添加任何特定权限以使其正常工作吗? 问候。
您遇到此问题是因为 Powershell cmdlet 的工作方式与 MS Graph 不同。 Powershell 不需要权限,而是需要角色来执行此操作。请将全局管理员角色添加到您的服务原则中,然后尝试 Connect-AzureAD
以便问题得到解决。
详情请参考Assigning administrator roles in Azure Active Directory。
另一个回复提到,你可以把Global Administrator
角色给service principal,是对的,但是这种情况下Global Administrator
的权限太大了,可能会造成一些问题安全问题。
在这种情况下,您使用的命令 Get-AzureADApplication
和 Set-AzureADApplication
本质上是调用 Azure AD Graph API,因此要解决此问题,更好的解决方案是添加权限Azure AD Graph API,请按照以下步骤操作。
1.Navigate 到您的广告应用程序的 API permissions
-> select Azure Active Directory Graph
(不是 Microsoft Graph
).
2.Select Application permissions
(不是 Delegated permissions
)-> Application.ReadWrite.All
-> 单击 Add permissions
。
3.At最后,点击Grant admin consent for xxx
按钮。
稍等片刻,再次尝试命令,它会正常工作。
更新:
查看文档后,发现MS已经发布了一些调用Microsoft Graph的新命令,以前没有见过。
例如在您的情况下,您可以使用 Get-AzureADMSApplication
而不是 Get-AzureADApplication
.
Get-AzureADMSApplication -Filter "DisplayName eq 'joyttt'"
使用 Set-AzureADMSApplication
代替 Set-AzureADApplication
。
Set-AzureADMSApplication -ObjectId <object-id> -Web @{ RedirectUris = "https://mynewapp.contoso.com/" }
对于Get-AzADServicePrincipal
,目前没有对应的,以后应该会有。使用上述命令时,Microsoft Graph 的权限将起作用,无需使用 Azure AD Graph,但您应该使用 Application permission
,而不是 Delegated permission
(您在问题中使用了 Delegated permission
.)
我也遇到了类似的问题,请确保做以下两件事:
- 将 运行 设置为 azure 自动化帐户
- 在将 运行 设置为帐户后,在新创建的 azure 自动化帐户的应用程序注册中,确保明确添加云应用程序管理员角色。
- 为 Application.ReadWrite.All 添加 API 权限(Microsoft 图)
在我的例子中,应用程序注册在角色和管理员屏幕下显示云应用程序管理员角色,我认为这为新应用程序注册提供了所需的权限,但事实并非如此。 PowerShell 脚本仅在我们明确分配云应用程序管理员角色后才起作用。