nemisis enforcer
nemisis enforcer

Reputation: 359

Azure AD application with Global Administrator rights

So I am trying to set up an application on azure AD that can, among other things delete users.

I have the application registered and use the client id and secert to gain teh access token.

I was able to give the application permissions to create users and that works fine, but when i go to delete over the graph API i get a 403 Insufficient privileges to complete the operation.

I am trying this over the graph rest API. The user that i am attempting to delete was made through the rest call as well. The user is in the same tenant as the application , so i am not trying to delete users from multiple tenants.

It seems what i need to do is give the application either Global admin or Company admin rights, but i am spinning wheels on where and or how to do this.

Any help would be appreciated.

Upvotes: 2

Views: 5472

Answers (2)

Emil
Emil

Reputation: 2346

UPDATE:

The answer above has been updated to use Azure Active Directory V2 PowerShell

If you don't have the AzureAD module already installed you will need to install it. See Azure Active Directory PowerShell Module Version for Graph for Azure AD administrative tasks for more info about the module or simply run:

Install-Module AzureAD

Once you have the module installed, authenticate to your tenant with your Administrator Account:

Connect-AzureAD

Then we need to get the Service Principal we want to elevate, and the Company Administrator Role for your tenant.

 $sp = Get-AzureRmADServicePrincipal | Where DisplayName -eq '<service-principal-name>'

Search for Directory Role by Name

$role = Get-AzureADDirectoryRole | Where DisplayName -eq 'Company Administrator'

Now we can use the Add-AzureADDirectoryRoleMember command to add this role to the service principal.

Add-AzureADDirectoryRoleMember -ObjectId $role.ObjectId -RefObjectId $sp.Id

To check everything is working, lets get back all the members of the Company Administrator role:

Get-AzureADDirectoryRoleMember -ObjectId $role.ObjectId

You should see your application in that list, where DisplayName is the name of your application.

Now your application should be able to perform any Graph API calls that the Company Administrator could do, all without a user signed-in, using the Client Credential Flow.

Upvotes: 4

Shawn Tabrizi
Shawn Tabrizi

Reputation: 12434

Take a look at my answer here.

You can elevate the level of access an Application has in your tenant by adding the service principal of that application to the Company Administrator Directory Role. This will give the Application the same level of permissions as the Company Administrator, who can do anything. You can follow these same instructions for any type of Directory Role depending on the level of access you want to give to this application.

Note that this will only affect the access your app has in your tenant.

Also you must already be a Company Administrator of the tenant to follow these instructions.

In order to make the change, you will need to install the Azure Active Directory PowerShell Module.

Once you have the module installed, authenticate to your tenant with your Administrator Account:

Connect-MSOLService

Then we need to get the Object ID of both the Service Principal we want to elevate, and the Company Administrator Role for your tenant.

Search for Service Principal by App ID GUID:

$sp = Get-MsolServicePrincipal -AppPrincipalId <App ID GUID>

Search for Directory Role by Name

$role = Get-MsolRole -RoleName "Company Administrator"

Now we can use the Add-MsolRoleMember command to add this role to the service principal.

Add-MsolRoleMember -RoleObjectId $role.ObjectId -RoleMemberType ServicePrincipal -RoleMemberObjectId $sp.ObjectId

To check everything is working, lets get back all the members of the Company Administrator role:

Get-MsolRoleMember -RoleObjectId $role.ObjectId

You should see your application in that list, where RoleMemberType is ServicePrincipal and DisplayName is the name of your application.

Now your application should be able to perform any Graph API calls that the Company Administrator could do, all without a user signed-in, using the Client Credential Flow.

Let me know if this helps!

Upvotes: 5

Related Questions