Microsoft Graph PowerShell을 사용하여 Azure AD Enterprise Applications 권한 관리
Is it supported to revoke permissions (selectively) for an enterprise application?
이 블로그 게시물은 엔터프라이즈 애플리케이션 권한을 관리하는 방법을 보여줍니다. Azure Portal UI는 이러한 작업을 허용하지 않으므로 일부 스크립팅에 의존해야 합니다. 따라서 이 블로그 게시물입니다.
엔터프라이즈 애플리케이션이란 무엇입니까?
시간을 절약하기 위해 중 하나에서 스 니펫을 가져옵니다.
엔터프라이즈 애플리케이션의 권한을 나열하려면
주어진 서비스 응용 프로그램에 대해 부여된 권한 목록을 가져오려면 script posted to my GitHub Gist 을 사용할 수 있습니다. 다음은 예제 출력입니다.
엔터프라이즈 애플리케이션의 기존 권한을 취소하려면
Waldo 앱을 예로 들어 보겠습니다. 다음은 Waldo 앱의 엔터프라이즈 애플리케이션입니다. 이 서비스 주체의 개체 ID를 기록해 둡니다.
그런 다음 이 앱에 부여된 권한을 봅니다. 다음 두 탭에서 권한을 확인할 수 있습니다.
Waldo 앱에 대한 권한 부여를 받으려면 해당 개체 ID로 cmdlet 아래를 실행합니다.
Get-MgServicePrincipalOauth2PermissionGrant -ServicePrincipalId 090beef1-f5b6-4f35-9326-6d8596e42942
출력의 ConsentType 열은 관리자 동의(AllPrincipals) 또는 사용자 동의(Principal) 권한인지 여부를 나타냅니다.
모든 권한 취소
아래 cmdlet을 사용하고 출력에서 ID 값을 GrantId로 전달하여 모든 권한을 완전히 제거할 수 있습니다.
Remove-MgOauth2PermissionGrant -OAuth2PermissionGrantId 8e4LCbb1NU-TJm2FluQpQjqF4W-UGkRLtzPexGZThns
권한을 선택적으로 취소
권한(일명 범위)을 선택적으로 제거하기 위해. 다음은 예입니다. "User.Read"및 "Directory.Read.All"범위를 제거하지만 다른 범위는 유지하고 싶다고 가정해 보겠습니다. 제거할 범위에 대한 배열을 만듭니다.
$permissionsToRemove = @("User.Read", "Directory.Read.All")
개체 ID를 사용하여 권한을 얻습니다.
$grant = Get-MgServicePrincipalOauth2PermissionGrant -ServicePrincipalId 090beef1-f5b6-4f35-9326-6d8596e42942
$grant.Scope
다음은 이미 부여된 범위의 샘플 출력입니다.
Place.Read.All offline_access User.Read User.ReadBasic.All User.Read.All Directory.Read.All Calendars.ReadWrite openid ChatMessage.Send Chat.ReadBasic Chat.Create
원치 않는 범위를 제거하여 새로운 범위 배열을 만듭니다.
$permissionsToRemove = $permissionsToRemove | % { $_.ToLower() }
$newPermissions = $grant.Scope.Split(" ") | ? { -not $permissionsToRemove.Contains($_.ToLower()) }
$newScope = $newPermissions -join " "
마지막으로 부여 ID를 사용하여 새로운 범위로 부여를 업데이트합니다.
Update-MgOauth2PermissionGrant -OAuth2PermissionGrantId $grant.Id -Scope $newScope
다음은 위 cmdlet의 샘플 실행입니다.
2개의 범위를 제거한 후 현재 권한은 다음과 같습니다.
엔터프라이즈 애플리케이션에 권한을 부여하려면
다음은 엔터프라이즈 애플리케이션에 Microsoft Graph 권한을 추가하는 방법을 보여주는 샘플 스크립트입니다.
# The object id of the enterprise application
$ObjectId = "b29d7573-2f76-49b6-b660-cc85b34fe516"
# Add the correct Graph scope to grant (e.g. User.Read)
$graphScope = "Sites.Selected"
Connect-MgGraph -Scope AppRoleAssignment.ReadWrite.All
# Get the Microsoft Graph service principal
$graph = Get-MgServicePrincipal -Filter "AppId eq '00000003-0000-0000-c000-000000000000'"
# Get the graph app role for the scope that we want to grant
$graphAppRole = $graph.AppRoles | ? Value -eq $graphScope
# Prepare the app role assignment
$appRoleAssignment = @{
"principalId" = $ObjectId
"resourceId" = $graph.Id
"appRoleId" = $graphAppRole.Id
}
# Grant the app role
New-MgServicePrincipalAppRoleAssignment -ServicePrincipalId $ObjectID -BodyParameter $appRoleAssignment | Format-List
위의 스크립트는 특권 권한인 AppRoleAssignment.ReadWrite.All을 사용합니다. 특권 권한이 필요하지 않은 앱 권한 부여 동의 정책을 사용하여 애플리케이션 권한을 부여할 수 있습니다. 다음은 수행 방법에 대한 세부 정보가 포함된 blog post from Sahil Malik입니다.
Reference
이 문제에 관하여(Microsoft Graph PowerShell을 사용하여 Azure AD Enterprise Applications 권한 관리), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/svarukala/manage-azure-ad-enterprise-applications-permissions-using-microsoft-graph-powershell-222m텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)