Gerenciar permissões delegadas de aplicativos em ambientes Microsoft é uma tarefa crítica para administradores. Este guia fornece um script do Microsoft Graph PowerShell para ajudar você a adicionar ou remover permissões delegadas com mais granularidade e controle.
Por que modificar permissões delegadas?
As permissões delegadas permitem que um aplicativo atue em nome de um usuário conectado. No entanto, há cenários em que você pode precisar ajustar essas permissões:
- Para remover permissões desnecessárias ou excessivas por motivos de segurança.
- Para adicionar novas permissões necessárias para a funcionalidade do aplicativo.
- Para solucionar problemas de acesso à API.
Observação: O script fornecido aqui oferece controle refinado sobre as permissões e é ideal para cenários avançados.
Script do PowerShell: adicionar ou remover permissões delegadas
Aqui está o script completo do PowerShell para gerenciar permissões delegadas:
Seção de configuração
# CONFIGURATION
# Application ID of app
$appId= "YOUR_APP_ID"
# Uncomment below line if you want to modify user consent
# $UserId = [email protected]
# Microsoft Graph App ID (DO NOT CHANGE)
# AAD Graph App Id: "00000002-0000-0000-c000-000000000000"
# MS Graph App Id: "00000003-0000-0000-c000-000000000000"
$resourceId= "00000003-0000-0000-c000-000000000000"
# Delegated Permissions you want on this service principal
$AddPermissions = @(
"User.Read"
)
$RemovePermissions = @(
"Mail.Send",
"Group.ReadWrite.All"
)
Script principal
# Connect to Microsoft Graph PowerShell
Connect-MgGraph -Scopes "Directory.Read.All DelegatedPermissionGrant.ReadWrite.All"
$appPrincipal = Get-MgServicePrincipal -Filter "appId eq '$($appId)'"
$ResourceServicePrincipal = Get-MgServicePrincipal -Filter "appId eq '$($resourceId)'"
$UserPrincipal = Get-MgUser -UserId $UserId
# Find grant if one already exists
if($UserId) {
$grants = Get-MgOauth2PermissionGrant -Filter "clientId eq '$($appPrincipal.id)' and resourceId eq '$($ResourceServicePrincipal.id)' and principalId eq '$($UserPrincipal.id)'"
} else {
$grants = Get-MgOauth2PermissionGrant -Filter "clientId eq '$($appPrincipal.id)' and resourceId eq '$($ResourceServicePrincipal.id)'"
}
# Update existing grant
$RemovePermissions += $AddPermissions
foreach($grant in $grants) {
# Remove permissions from grant
foreach($permission in $RemovePermissions) {
Write-Host "Removing: $($permission)"
# Remove permission from grant
$grant.scope = $grant.scope.Replace($permission, "")
}
# Add permissions to grant
foreach($permission in $AddPermissions) {
$grant.scope += $permission + " "
}
# Update existing Grant
Update-MgOauth2PermissionGrant -Oauth2PermissionGrantId $grant.id -Scope $grant.scope.Trim()
}
# Create grant if none exists
if(!$grants) {
$ScopeString = $AddPermissions -join " "
if($UserId) {
New-MgOauth2PermissionGrant -ClientId $appPrincipal.id -ResourceId $ResourceServicePrincipal.id -Scope $ScopeString -ConsentType Principal -PrincipalId $UserPrincipal.id
} else {
New-MgOauth2PermissionGrant -ClientId $appPrincipal.id -ResourceId $ResourceServicePrincipal.id -Scope $ScopeString -ConsentType AllPrincipals
}
}
Observações importantes para administradores
- Pré-requisitos:
- Instale a versão mais recente do Microsoft Graph PowerShell SDK.
- Verifique se você tem as permissões necessárias para gerenciar permissões delegadas (
Directory.Read.AlleDelegatedPermissionGrant.ReadWrite.All).
- Personalizar o script:
- Substitua
YOUR_APP_IDpelo ID de aplicativo do aplicativo que você deseja gerenciar. - Modifique as matrizes
$AddPermissionse$RemovePermissionspara incluir as permissões que você deseja adicionar ou remover.
- Substitua
- Permissões de usuário versus permissões de aplicativo:
- Se estiver modificando as permissões de um usuário específico, remova o comentário e defina
$UserIdcom o endereço de e-mail do usuário. - Se estiver gerenciando as permissões de todos os usuários, deixe
$UserIdcomentado.
- Se estiver modificando as permissões de um usuário específico, remova o comentário e defina
- Testar o script:
- Antes de executar o script em produção, teste-o em um ambiente de não produção para garantir que ele funcione como esperado.
Exemplos de casos de uso
- Adicionar permissões: Adicione
User.Readpara permitir que o aplicativo acesse as informações básicas do perfil do usuário. - Remover permissões: Remova
Mail.Sendpara impedir que o aplicativo envie e-mails em nome dos usuários. - Controle granular: Combine a adição e a remoção de permissões em um único script para um gerenciamento eficiente.