Microsoft Entra ID에서 PowerShell을 사용하여 리소스 범위에서 사용자 지정 역할 할당

이 문서에서는 Microsoft Entra ID에서 조직 전체 범위에 역할 할당을 만드는 방법을 설명합니다. 조직 전체의 범위에서 역할을 할당하면 Microsoft Entra 조직 전체에 액세스 권한이 부여됩니다. 단일 Microsoft Entra 리소스 범위를 사용하여 역할 할당을 만들려면 Microsoft Entra ID에서 사용자 지정 역할 만들기 및 할당을 참조하세요. 이 문서에서는 Microsoft Graph PowerShell SDK 모듈을 사용합니다.

Microsoft Entra 역할에 대한 자세한 내용은 Microsoft Entra 기본 제공 역할을 참조하세요.

필수 조건

  • Microsoft Entra ID P1 또는 P2 라이선스
  • 권한 있는 역할 관리자 또는 전역 관리자
  • PowerShell을 사용하는 경우 Microsoft Graph PowerShell 모듈

자세한 내용은 PowerShell 또는 Graph Explorer를 사용하기 위한 필수 조건을 참조하세요.

리소스 범위를 사용하여 사용자 또는 서비스 주체에게 디렉터리 역할 할당

  1. Microsoft Graph PowerShell 모듈을 로드합니다.

  2. Connect-MgGraph 명령을 실행하여 로그인합니다.

  3. 다음 PowerShell 스크립트를 사용하여 새 역할을 만듭니다.

    ## Assign a role to a user or service principal with resource scope
    # Get the user and role definition you want to link
    $user = Get-MgUser -Filter "UserPrincipalName eq 'cburl@f128.info'"
    $roleDefinition = Get-MgRoleManagementDirectoryRoleDefinition -Filter "DisplayName eq 'Application Support Administrator'"
    
    # Get app registration and construct resource scope for assignment.
    $appRegistration = Get-MgApplication -Filter "displayName eq 'f/128 Filter Photos'"
    $directoryScope = '/' + $appRegistration.Id
    
    # Create a scoped role assignment
    $roleAssignment = New-MgRoleManagementDirectoryRoleAssignment -DirectoryScopeId $directoryScope `
       -RoleDefinitionId $roleDefinition.Id -PrincipalId $user.Id
    

사용자가 아닌 서비스 주체에 역할을 할당하려면 Get-MgServicePrincipal cmdlet을 사용합니다.

역할 정의

역할 정의 개체에는 기본 제공 또는 사용자 지정 역할의 정의와 해당 역할 할당에 의해 부여되는 권한이 포함됩니다. 이 리소스는 사용자 지정 역할 정의 및 기본 제공 디렉터리 역할(roleDefinition 해당 형식으로 표시됨)을 모두 표시합니다. Microsoft Entra 조직에서 만들 수 있는 사용자 지정 역할의 최대 수에 대한 자세한 내용은 Microsoft Entra 서비스 제한 사항을 참조하세요.

역할 정의 만들기

# Basic information
$description = "Can manage credentials of application registrations"
$displayName = "Application Registration Credential Administrator"
$templateId = (New-Guid).Guid

# Set of actions to include
$rolePermissions = @{
    "allowedResourceActions" = @(
        "microsoft.directory/applications/standard/read",
        "microsoft.directory/applications/credentials/update"
    )
}

# Create new custom directory role
$customAdmin = New-MgRoleManagementDirectoryRoleDefinition -RolePermissions $rolePermissions `
   -DisplayName $displayName -Description $description -TemplateId $templateId -IsEnabled:$true

역할 정의 읽기 및 나열

# Get all role definitions
Get-MgRoleManagementDirectoryRoleDefinition

# Get single role definition by ID
Get-MgRoleManagementDirectoryRoleDefinition -UnifiedRoleDefinitionId 86593cfc-114b-4a15-9954-97c3494ef49b

# Get single role definition by templateId
Get-MgRoleManagementDirectoryRoleDefinition -Filter "TemplateId eq 'c4e39bd9-1100-46d3-8c65-fb160da0071f'"

역할 정의 업데이트

# Update role definition
# This works for any writable property on role definition. You can replace display name with other
# valid properties.
Update-MgRoleManagementDirectoryRoleDefinition -UnifiedRoleDefinitionId c4e39bd9-1100-46d3-8c65-fb160da0071f `
   -DisplayName "Updated DisplayName"

역할 정의 삭제

# Delete role definition
Remove-MgRoleManagementDirectoryRoleDefinition -UnifiedRoleDefinitionId c4e39bd9-1100-46d3-8c65-fb160da0071f

역할 할당

역할 할당에는 지정된 보안 주체(사용자 또는 애플리케이션 서비스 주체)를 역할 정의에 연결하는 정보가 포함됩니다. 필요한 경우 할당된 권한에 대해 단일 Microsoft Entra 리소스의 범위를 추가할 수 있습니다. 역할 할당 범위 제한은 기본 제공 및 사용자 지정 역할에 대해 지원됩니다.

역할 할당 만들기

# Get the user and role definition you want to link
$user = Get-MgUser -Filter "userPrincipalName eq 'cburl@f128.info'"
$roleDefinition = Get-MgRoleManagementDirectoryRoleDefinition -Filter "DisplayName eq 'Application Support Administrator'"

# Get app registration and construct resource scope for assignment.
$appRegistration = Get-MgApplication -Filter "displayName eq 'f/128 Filter Photos'"
$directoryScope = '/' + $appRegistration.Id

# Create a scoped role assignment
$roleAssignment = New-MgRoleManagementDirectoryRoleAssignment -DirectoryScopeId $directoryScope `
   -RoleDefinitionId $roleDefinition.Id -PrincipalId $user.Id

역할 할당 읽기 및 나열

# Get role assignments for a given principal
Get-MgRoleManagementDirectoryRoleAssignment -Filter "PrincipalId eq '27c8ca78-ab1c-40ae-bd1b-eaeebd6f68ac'"

# Get role assignments for a given role definition 
Get-MgRoleManagementDirectoryRoleAssignment -Filter "RoleDefinitionId eq '355aed8a-864b-4e2b-b225-ea95482e7570'"

역할 할당 제거

# Remove role assignment
Remove-MgRoleManagementDirectoryRoleAssignment -UnifiedRoleAssignmentId 'qiho4WOb9UKKgng_LbPV7tvKaKRCD61PkJeKMh7Y458-1'

다음 단계