PowerShell을 사용하여 단일 역할의 애플리케이션에 대한 권한 관리에서 액세스 패키지 만들기

Microsoft Entra 권한 관리에서 액세스 패키지에는 사용자가 하나 이상의 리소스 역할에 대한 할당을 얻을 수 있는 방법에 대한 정책이 포함됩니다. 리소스는 그룹, 애플리케이션 및 SharePoint Online 사이트를 포함할 수 있습니다.

이 문서에서는 Microsoft Graph PowerShell을 사용하여 단일 역할의 단일 애플리케이션에 대한 액세스 패키지를 만드는 방법을 설명합니다. 이 시나리오는 주로 특정 비즈니스 또는 미들웨어 애플리케이션에 대한 지속적인 액세스를 자동화하기 위해 권한 관리를 사용하는 환경에 적용됩니다. 여러 리소스 또는 여러 역할을 가진 리소스가 있는 조직은 액세스 패키지로 액세스 정책을 모델링할 수도 있습니다.

필수 조건

이 기능을 사용하려면 Microsoft Entra ID Governance 또는 Microsoft Entra Suite 라이선스가 필요합니다. 요구 사항에 적합한 라이선스를 찾으려면 Microsoft Entra ID Governance 라이선스 기본 사항을 참조하세요.

액세스 패키지 만들기를 시작하기 전에 애플리케이션을 Microsoft Entra ID와 통합해야 합니다. 애플리케이션이 Microsoft Entra ID 테넌트에 아직 없는 경우 해당 문서의 지침에 따라 개체에 대한 애플리케이션 및 서비스 주체를 만듭니다. 또한 Microsoft Entra ID 테넌트가 ID 거버넌스에 대한 Microsoft Entra ID를 구성하기 전에 필수 조건을 충족하는지 확인합니다.

액세스 패키지와 관련 정책 및 할당을 만들려면 다음 정보를 준비해야 합니다.

사용 사례 구성 설정 PowerShell 변수
모두 Microsoft Entra ID 테넌트에 있는 애플리케이션의 이름 $servicePrincipalName
모두 애플리케이션 역할의 이름 $servicePrincipalRoleName
모두 액세스 패키지가 포함된 카탈로그의 이름 $catalogName
모두 액세스 패키지를 제공할 이름 $accessPackageName
모두 액세스 패키지를 제공할 설명 $accessPackageDescription
호환되지 않는 액세스 패키지로 의무 요구 사항 분리 호환되지 않는 액세스 패키지의 ID $incompatibleAccessPackageId(필요한 경우)
할당이 아직 없으며 자동으로 할당되지 않은 사용자 사용자 목록 $inputpath(필요한 경우)
특정 속성을 가진 사용자에게는 자동으로 할당이 부여됨 범위 내 사용자에 대한 쿼리 식 $autoAssignmentPolicyFilter(필요한 경우)
할당이 없는 사용자가 할당을 요청할 수 있도록 허용 요청할 수 있는 사용자의 범위, 승인자 및 액세스 검토 기간 요구 사항에 따라 달라짐
수명 주기 워크플로에서 조인 또는 탈퇴 워크플로에 따라 할당 만들기 또는 제거 자동화 액세스 권한을 부여하고 제거하는 워크플로의 이름 요구 사항에 따라 달라짐

Microsoft Entra ID로 인증

이 섹션에서는 Microsoft Graph PowerShell cmdlet을 사용하여 Microsoft Entra ID Governance와 상호 작용하는 방법을 보여 줍니다.

조직에서 이 시나리오에 이러한 cmdlet을 처음 사용하는 경우 테넌트에서 Microsoft Graph PowerShell을 사용할 수 있도록 허용하는 전역 관리자 역할이 필요합니다. 후속 상호 작용에서 다음과 같은 낮은 권한 있는 역할을 사용할 수 있습니다.

  1. PowerShell을 엽니다.

  2. Microsoft Graph PowerShell 모듈을 아직 설치하지 않았으면 이 명령을 사용하여 Microsoft.Graph.Identity.Governance 모듈과 다른 모듈을 설치합니다.

    Install-Module Microsoft.Graph
    

    모듈이 이미 설치되어 있으면 최신 버전을 사용하고 있는지 확인합니다.

    Update-Module microsoft.graph.users,microsoft.graph.identity.governance,microsoft.graph.applications
    
  3. Microsoft Entra ID에 연결합니다.

    $msg = Connect-MgGraph -ContextScope Process -Scopes "User.ReadWrite.All,Application.ReadWrite.All,AppRoleAssignment.ReadWrite.All,EntitlementManagement.ReadWrite.All"
    
  4. 이 명령을 처음 사용하는 경우 Microsoft Graph 명령줄 도구에 이러한 사용 권한이 있도록 허용한다는 데 동의해야 할 수 있습니다.

Microsoft Entra 권한 관리에서 카탈로그 만들기

기본적으로 관리자가 권한 관리와 처음 상호 작용하면 기본 카탈로그가 자동으로 만들어집니다. 하지만 관리되는 애플리케이션에 대한 액세스 패키지는 지정된 카탈로그에 있어야 합니다.

  1. 카탈로그 이름을 지정합니다.

    $catalogName = "Business applications"
    
  2. 애플리케이션 거버넌스 시나리오에 대한 카탈로그가 이미 있는 경우 이 섹션의 4단계에서 계속 진행합니다.

  3. 애플리케이션 거버넌스 시나리오에 대한 카탈로그가 아직 없는 경우 카탈로그를 만듭니다.

    $catalog = New-MgEntitlementManagementCatalog -DisplayName $catalogName
    
  4. 카탈로그의 ID를 조회합니다.

    $catalogFilter = "displayName eq '" + $catalogName + "'"
    $catalog = Get-MgEntitlementManagementCatalog -Filter $catalogFilter -All -expandProperty resources,accessPackages
    if ($catalog -eq $null) { throw "catalog $catalogName not found" }
    $catalogId = $catalog.Id
    

카탈로그에 리소스로 애플리케이션 추가

카탈로그가 만들어지면 애플리케이션을 해당 카탈로그의 리소스로 추가합니다.

  1. 애플리케이션의 이름과 애플리케이션 역할의 이름을 지정합니다. 애플리케이션의 이름을 servicePrincipalName 값으로 사용합니다.

    $servicePrincipalName = "SAP Cloud Identity Services"
    $servicePrincipalRoleName = "User"
    
  2. 애플리케이션 서비스 주체의 ID를 조회합니다.

    $servicePrincipalFilter = "displayName eq '" + $applicationName + "'"
    $servicePrincipal = Get-MgServicePrincipal -Filter $servicePrincipalFilter -all
    if ($servicePrincipal -eq $null) { throw "service principal $servicePrincipalName not found" }
    $servicePrincipalId = $servicePrincipal.Id
    
  3. 애플리케이션이 카탈로그에 리소스로 이미 있는지 확인합니다. 이미 있는 경우 이 섹션의 6단계에서 계속 진행합니다.

    $resourceId = $null
    foreach ($r in $catalog.Resources) { if ($r.OriginId -eq $servicePrincipalId) { $resourceId = $r.id; break } }
    if ($resourceId -ne $null) { write-output "resource already in catalog" } else {write-output "resource not yet in catalog"}
    
  4. 카탈로그에 리소스로 애플리케이션 서비스 주체를 추가합니다.

    $resourceAddParams = @{
      requestType = "adminAdd"
      resource = @{
        originId = $servicePrincipalId
        originSystem = "AadApplication"
      }
      catalog = @{ id = $catalogId }
    }
    
    $resourceAdd = New-MgEntitlementManagementResourceRequest -BodyParameter $resourceAddParams
    if ($resourceAdd -eq $null) { throw "resource could not be added" }
    sleep 5
    
  5. 해당 카탈로그에서 리소스의 ID 및 범위를 검색합니다.

    $resource = $null
    $resourceId = $null
    $resourceScope = $null
    $catalogResources = Get-MgEntitlementManagementCatalogResource -AccessPackageCatalogId $CatalogId -ExpandProperty "scopes" -all
    
    foreach ($r in $catalogResources) { if ($r.OriginId -eq $servicePrincipalId) { $resource = $r; $resourceId = $r.id; $resourceScope = $r.Scopes[0]; break } }
    if ($resourceId -eq $null) { throw "resource was not added" }
    
  6. 애플리케이션의 역할을 검색합니다.

    $resourceRoleFilter = "(originSystem eq 'AadApplication' and resource/id eq '" + $resourceId + "')"
    $resourceRoles = @(get-mgentitlementmanagementcatalogresourcerole  -AccessPackageCatalogId $catalogId -Filter $resourceRoleFilter -All -ExpandProperty "resource")
    if ($resourceRoles -eq $null -or $resourceRoles.count -eq 0) { throw "no roles available" }
    
  7. 액세스 패키지에 포함할 역할을 선택합니다.

    $resourceRole = $null
    foreach ($r in $resourceRoles) { if ($r.DisplayName -eq $servicePrincipalRoleName) { $resourceRole = $r; break; } }
    if ($resourceRole -eq $null) { throw "role $servicePrincipalRoleName not located" }
    

애플리케이션에 대한 액세스 패키지 만들기

다음으로 PowerShell을 사용하여 카탈로그에서 애플리케이션의 역할을 포함하는 액세스 패키지를 만듭니다.

  1. 액세스 패키지의 이름과 설명을 지정합니다.

    $accessPackageName = "SAP Cloud Identity Services"
    $accessPackageDescription = "A user of SAP Cloud Identity Services"
    $accessPackageHidden = $true
    
  2. 액세스 패키지가 아직 없는지 확인합니다.

    foreach ($a in $catalog.AccessPackages) { if ($a.DisplayName -eq $accessPackageName) { throw "access package $accessPackageName already exists" } }
    
  3. 액세스 패키지를 만듭니다.

    $accessPackageParams = @{
        displayName = $accessPackageName
        description = $accessPackageDescription
        isHidden = $accessPackageHidden
        catalog = @{
            id = $catalog.id
        }
    }
    $accessPackage = New-MgEntitlementManagementAccessPackage -BodyParameter $accessPackageParams
    $accessPackageId = $accessPackage.Id
    

액세스 패키지에 애플리케이션 역할 추가

액세스 패키지를 만든 후에는 카탈로그에 있는 리소스의 역할을 액세스 패키지에 연결합니다.

$rrsParams = @{
 role = @{
     id =  $resourceRole.Id
     displayName =  $resourceRole.DisplayName
     description =  $resourceRole.Description
     originSystem =  $resourceRole.OriginSystem
     originId =  $resourceRole.OriginId
     resource = @{
         id = $resource.Id
         originId = $resource.OriginId
         originSystem = $resource.OriginSystem
     }
 }
 scope = @{
     id = $resourceScope.Id
     originId = $resourceScope.OriginId
     originSystem = $resourceScope.OriginSystem
 }
}

$roleAddRes = New-MgEntitlementManagementAccessPackageResourceRoleScope -AccessPackageId $accessPackageId -BodyParameter $rrsParams

직접 할당에 대한 액세스 패키지 할당 정책 만들기

이 섹션에서는 액세스 패키지의 첫 번째 액세스 패키지 할당 정책인 직접 할당에 대한 액세스 패키지 할당 정책을 만듭니다. 이 정책은 애플리케이션에 대한 액세스 권한이 이미 있는 사용자를 추적하는 데 사용할 수 있습니다. 이 섹션에서 만든 예제 정책에서는 관리자 또는 액세스 패키지 할당 관리자만 액세스를 할당할 수 있으며, 사용자는 액세스를 무기한으로 유지하고, 승인 또는 액세스 검토는 없습니다.

  1. 정책을 만듭니다.

    $policy1Name = "Direct assignment policy"
    $policy1Description = "policy for administrative assignment"
    
    $policy1params = @{
     displayName = $policy1Name
     description = $policy1Description
     allowedTargetScope = "notSpecified"
     specificAllowedTargets = @(
     )
     expiration = @{
         endDateTime = $null
         duration = $null
         type = "noExpiration"
     }
     requestorSettings = @{
         enableTargetsToSelfAddAccess = $true
         enableTargetsToSelfUpdateAccess = $false
         enableTargetsToSelfRemoveAccess = $true
         allowCustomAssignmentSchedule = $true
         enableOnBehalfRequestorsToAddAccess = $false
         enableOnBehalfRequestorsToUpdateAccess = $false
         enableOnBehalfRequestorsToRemoveAccess = $false
         onBehalfRequestors = @(
         )
     }
     requestApprovalSettings = @{
         isApprovalRequiredForAdd = $false
         isApprovalRequiredForUpdate = $false
         stages = @(
         )
     }
     accessPackage = @{
         id = $accessPackageId
     }
    }
    
    $policy1Res = New-MgEntitlementManagementAssignmentPolicy -BodyParameter $policy1params
    $directAssignmentPolicyId = $policy1Res.Id
    
    

의무 분리 제약 조건 구성

Microsoft Entra 권한 관리는 다른 지정된 액세스 패키지 또는 지정된 그룹의 멤버 자격에 대한 기존 할당이 이미 있는 사용자가 액세스 패키지를 요청하지 못하도록 의무 분리 검사를 적용할 수 있습니다.

이 애플리케이션에 대한 의무 분리 요구 사항이 없는 경우 다음 섹션에서 계속 진행합니다.

의무 분리 요구 사항이 있는 경우 액세스 패키지에 대해 호환되지 않는 액세스 패키지 또는 기존 그룹을 구성합니다.

다른 액세스 패키지와 호환되지 않는 것으로 표시될 각 액세스 패키지에 대해 PowerShell을 사용하여 액세스 패키지를 호환되지 않는 것으로 구성할 수 있습니다.

  1. 이 액세스 패키지와 호환되지 않는 다른 액세스 패키지를 지정합니다. incompatibleAccessPackageId 값을 Microsoft Entra 권한 관리의 다른 액세스 패키지 ID로 변경합니다.

    $incompatibleAccessPackageId = "67cc7175-7a3d-4cb2-860f-4d9217ba96ca"
    
  2. 이 액세스 패키지에서 호환되지 않는 참조를 만듭니다.

    $incompatible1params = @{
     "@odata.id" = "https://graph.microsoft.com/v1.0/identityGovernance/entitlementManagement/accessPackages/" + $incompatibleAccessPackageId
    }
    New-MgEntitlementManagementAccessPackageIncompatibleAccessPackageByRef -AccessPackageId $accessPackageId -BodyParameter $incompatible1params
    
  3. 다른 액세스 패키지에서 호환되지 않는 참조를 만듭니다.

    $incompatible2params = @{
     "@odata.id" = "https://graph.microsoft.com/v1.0/identityGovernance/entitlementManagement/accessPackages/" + $accessPackageId
    }
    New-MgEntitlementManagementAccessPackageIncompatibleAccessPackageByRef -AccessPackageId $incompatibleAccessPackageId -BodyParameter $incompatible2params
    
  4. 다른 액세스 패키지에 대해 반복합니다.

  5. 시나리오에서 의무 분리 검사를 재정의하는 기능을 요구하는 경우 이러한 재정의 시나리오에 대한 추가 액세스 패키지를 설정할 수도 있습니다.

애플리케이션에 대한 액세스 권한이 이미 있는 기존 사용자의 할당을 추가합니다.

애플리케이션에 대한 액세스 권한이 이미 있는 기존 사용자의 할당을 추가합니다. 각각의 사용자를 액세스 패키지에 직접 할당할 수 있습니다.

  1. 기존 애플리케이션 역할 할당을 검색합니다.

    $existingAppRoleAssignments = @(Get-MgServicePrincipalAppRoleAssignedTo -ServicePrincipalId $servicePrincipalId -All)
    
  2. 중복 할당을 만들지 않도록 하려면 액세스 패키지에 대한 기존 할당을 검색합니다.

    $existingAssignments1filter = "accessPackage/id eq '" + $accessPackageId + "' and state eq 'Delivered'"
    $existingassignments1 = @(Get-MgEntitlementManagementAssignment -Filter $existingAssignments1filter -ExpandProperty target -All -ErrorAction Stop)
    $existingusers1 = @()
    foreach ($a in $existingassignments1) { $existingusers1 += $a.Target.ObjectId}
    
  3. 새 할당을 만듭니다.

    foreach ($ar in $existingAppRoleAssignments) {
     if ($ar.principalType -ne "User") {
       write-warning "non-user assigned to application role"
     }
     $arpid = $ar.principalId
     if ($existingusers1.contains($arpId)) { continue }
    
     $params = @{
       requestType = "adminAdd"
       assignment = @{
          targetId = $arpId
          assignmentPolicyId = $directAssignmentPolicyId
          accessPackageId = $accessPackageId
       }
     }
     try {
       New-MgEntitlementManagementAssignmentRequest -BodyParameter $params
     } catch {
       write-error "cannot create request for user $upn"
     }
    }
    

애플리케이션에 대한 액세스 권한이 있어야 하는 추가 사용자가 있는 경우 할당 추가

이 스크립트에서는 Microsoft Graph PowerShell cmdlet을 사용하여 추가 사용자에 대한 할당을 추가함으로써 애플리케이션에 대한 액세스를 부여하는 방법을 보여 줍니다. 액세스 권한이 필요한 사용자가 없고 자동으로 수신되지 않는 경우 다음 섹션에서 계속 진행합니다.

이 스크립트는 직접 할당 정책을 통해 액세스 패키지에 해당 사용자를 할당하기 위해 하나의 열(UserPrincipalName)이 포함된 입력 CSV 파일이 있다고 가정합니다.

  1. 입력 파일의 이름을 지정합니다.

    $inputpath = "users.csv"
    
  2. 중복 할당을 만들지 않도록 하려면 액세스 패키지에 대한 기존 할당을 검색합니다.

    $existingAssignments2filter = "accessPackage/id eq '" + $accessPackageId + "' and state eq 'Delivered'"
    $existingassignments2 = @(Get-MgEntitlementManagementAssignment -Filter $existingAssignments2filter -ExpandProperty target -All -ErrorAction Stop)
    $existingusers2 = @()
    foreach ($a in $existingassignments2) { $existingusers2 += $a.Target.ObjectId}
    
  3. 새 할당을 만듭니다.

    $users = import-csv -Path $inputpath
    foreach ($userrecord in $users) {
       $upn = $userrecord.UserPrincipalName
       if ($null -eq $upn) {throw "no UserPrincipalName" }
       $u = $null
       try {
          $u = Get-MgUser -UserId $upn
       } catch {
          write-error "no user $upn"
       }
       if ($u -eq $null) { continue }
       if ($existingusers2.contains($u.Id)) { continue }
    
       $params = @{
          requestType = "adminAdd"
          assignment = @{
             targetId = $u.Id
             assignmentPolicyId = $directAssignmentPolicyId
             accessPackageId = $accessPackageId
          }
       }
       try {
          New-MgEntitlementManagementAssignmentRequest -BodyParameter $params
       } catch {
          write-error "cannot create request for user $upn"
       }
    }
    

자동 할당을 위해 해당 액세스 패키지에 정책 추가

애플리케이션에 대한 액세스 권한을 할당할 수 있는 사용자에 대한 조직의 정책에 사용자의 특성에 따라 자동으로 액세스 권한을 할당하고 제거하는 규칙이 포함되어 있는 경우 자동 할당 정책을 사용하여 이를 나타낼 수 있습니다. 액세스 패키지에는 최대 하나의 자동 할당 정책이 있을 수 있습니다. 자동 할당에 대한 요구 사항이 없는 경우 다음 섹션에서 계속 진행합니다.

  1. 사용자가 할당을 받을 수 있도록 자동 할당 필터 식을 지정합니다. 범위에 있는 Microsoft Entra ID의 사용자에 대한 필터로 autoAssignmentPolicyFilter 값을 변경합니다. 구문 및 허용 가능한 특성은 Microsoft Entra ID의 동적 멤버십 그룹에 대한 규칙에서 확인할 수 있습니다.

    $autoAssignmentPolicyFilter = '(user.city -eq "Redmond")'
    
  2. PowerShell을 사용하여 액세스 패키지에서 자동 할당 정책을 만듭니다.

    $policy2Name = "Automatic assignment policy"
    $policy2Description = "policy for automatic assignment"
    
    $policy2Params = @{
     DisplayName = $policy2Name
     Description = $policy2Description
     AllowedTargetScope = "specificDirectoryUsers"
     SpecificAllowedTargets = @( @{
         "@odata.type" = "#microsoft.graph.attributeRuleMembers"
         description = $policy2Description
         membershipRule = $autoAssignmentPolicyFilter
     } )
     AutomaticRequestSettings = @{
         RequestAccessForAllowedTargets = $true
     }
     AccessPackage = @{
       Id = $accessPackageId
     }
    }
    New-MgEntitlementManagementAssignmentPolicy -BodyParameter $policy2Params
    

사용자가 액세스를 요청할 수 있도록 추가 정책 만들기

아직 액세스 권한이 없는 사용자가 애플리케이션에 할당하도록 요청할 수 있는 경우 사용자가 액세스 패키지를 요청할 수 있도록 액세스 패키지 할당 정책을 구성할 수도 있습니다. 액세스 패키지에 다른 정책을 추가할 수 있으며 각 정책에서 요청할 수 있는 사용자와 승인해야 하는 사용자를 지정합니다. 사용자에게 자동으로 또는 관리자가 액세스 권한을 할당하도록 하려면 다음 섹션에서 계속 진행합니다.

추가 예제에 대해서는 PowerShell을 통해 할당 정책 만들기 accessPackageAssignmentPolicyassignmentPolicy 만들기를 참조하세요.

  1. 승인자가 될 Microsoft Entra 사용자의 이름, 정책 설명 및 ID를 지정합니다.

    $policy3Name = "example policy"
    $policy3Description = "example of a policy for users to request assignment"
    $policy3ApproverSingleUserId = "1aaaaaa1-2bb2-3cc3-4dd4-5eeeeeeeeee5"
    
  2. 정책을 만듭니다.

    $policy3Params = @{
     displayName = $policy3Name
     description = $policy3Description
     allowedTargetScope = "allMemberUsers"
     expiration = @{
         type = "noExpiration"
     }
     requestorSettings = @{
         enableTargetsToSelfAddAccess = "true"
         enableTargetsToSelfUpdateAccess = "true"
         enableTargetsToSelfRemoveAccess = "true"
     }
     requestApprovalSettings = @{
         isApprovalRequiredForAdd = "true"
         isApprovalRequiredForUpdate = "true"
         stages = @(
             @{
                 durationBeforeAutomaticDenial = "P7D"
                 isApproverJustificationRequired = "false"
                 isEscalationEnabled = "false"
                 fallbackPrimaryApprovers = @(
                 )
                 escalationApprovers = @(
                 )
                 fallbackEscalationApprovers = @(
                 )
                 primaryApprovers = @(
                     @{
                         "@odata.type" = "#microsoft.graph.singleUser"
                         userId = $policy3ApproverSingleUserId
                     }
                 )
             }
         )
     }
     accessPackage = @{
         id = $accessPackageId
     }
    }
    
    New-MgEntitlementManagementAssignmentPolicy -BodyParameter $policy3Params
    

수명 주기 워크플로 작업 구성

직원 조인에 Microsoft Entra 수명 주기 워크플로를 사용하는 경우 탈퇴 이벤트를 이동한 다음 해당 워크플로에 작업을 추가하여 이 액세스 패키지에 대한 할당을 추가하거나 제거할 수도 있습니다. 수명 주기 워크플로를 사용하지 않는 경우 다음 섹션에서 계속 진행합니다.

이 예제에서는 참가 및 탈퇴 이벤트 워크플로를 변경하는 방법을 보여 줍니다.

  1. Get-MgIdentityGovernanceLifecycleWorkflow 명령을 사용하여 joiner 범주 워크플로 및 해당 작업을 검색합니다.

  2. 작업을 해당 워크플로의 작업 목록에 추가합니다.

    작업 표시 이름 taskDefinitionId arguments
    사용자 액세스 패키지 할당 요청 c1ec1e76-f374-4375-aaa6-0bb6bd4c60be 이름: assignmentPolicyId
    : 사용자에게 할당하려는 액세스 패키지에 대한 승인이 필요하지 않은 경우 $directAssignmentPolicyId 값과 같은 할당 정책 ID입니다.

    이름: accessPackageId
    : 사용자에게 할당하려는 액세스 패키지의 액세스 패키지 ID($accessPackageId)입니다.
  3. New-MgIdentityGovernanceLifecycleWorkflowNewVersion 명령을 사용하여 새 작업을 비롯해 워크플로의 새 버전을 만듭니다.

  4. Get-MgIdentityGovernanceLifecycleWorkflow 명령을 사용하여 leaver 범주 워크플로 및 해당 작업을 검색합니다.

  5. 작업을 해당 워크플로의 작업 목록에 추가합니다.

    작업 표시 이름 taskDefinitionId arguments
    사용자에 대한 액세스 패키지 할당 제거 4a0b64f2-c7ec-46ba-b117-18f262946c50 이름: accessPackageId
    : 사용자로부터 할당을 취소하려는 액세스 패키지의 유효한 액세스 패키지 ID(accessPackageId)입니다.
  6. New-MgIdentityGovernanceLifecycleWorkflowNewVersion 명령을 사용하여 새 작업을 비롯해 워크플로의 새 버전을 만듭니다.

할당 관리

액세스 패키지, 정책 및 초기 할당이 만들어지면 사용자에게 애플리케이션의 역할에 대한 액세스 권한이 할당됩니다.

나중에 할당 변경 내용을 모니터링하거나 프로그래밍 방식으로 할당을 추가하거나 제거할 수 있습니다.

기존 할당 검색

이 스크립트에서는 필터를 사용하여 액세스 패키지에 대해 Delivered 상태인 할당을 검색하는 방법을 보여 줍니다. 스크립트는 할당별로 하나의 행을 사용하여 할당이 있는 사용자 목록이 포함된 CSV 파일인 assignments.csv를 생성합니다.

$assignmentFilter = "accessPackage/id eq '" + $accessPackageId + "' and state eq 'Delivered'"
$assignments = @(Get-MgEntitlementManagementAssignment -Filter $assignmentFilter -ExpandProperty target -All -ErrorAction Stop)
$sp = $assignments | select-object -Property Id,{$_.Target.id},{$_.Target.ObjectId},{$_.Target.DisplayName},{$_.Target.PrincipalName}
$sp | Export-Csv -Encoding UTF8 -NoTypeInformation -Path ".\assignments.csv"

할당 제거

New-MgEntitlementManagementAssignmentRequest cmdlet을 사용하여 사용자의 할당을 제거할 수 있습니다.

$userId = "00aa00aa-bb11-cc22-dd33-44ee44ee44ee"
$filter = "accessPackage/Id eq '" + $accessPackageId + "' and state eq 'Delivered' and target/objectId eq '" + $userId + "'"
$assignment = Get-MgEntitlementManagementAssignment -Filter $filter -ExpandProperty target -all -ErrorAction stop
if ($assignment -ne $null) {
   $params = @{
      requestType = "adminRemove"
      assignment = @{ id = $assignment.id }
   }
   New-MgEntitlementManagementAssignmentRequest -BodyParameter $params
}

다음 단계