Asignación de roles personalizados con ámbito de recurso mediante PowerShell en Microsoft Entra ID

En este artículo se describe cómo crear una asignación de roles en un ámbito de toda la organización en Microsoft Entra ID. La asignación de un rol en un ámbito de toda la organización concede acceso a toda la organización de Microsoft Entra. Para crear una asignación de roles con un ámbito de un solo recurso de Microsoft Entra, consulte Creación y asignación de un rol personalizado en Microsoft Entra ID. En este artículo se usa el módulo del SDK de PowerShell de Microsoft Graph.

Para obtener más información sobre los roles de Microsoft Entra, consulte roles integrados de Microsoft Entra.

Requisitos previos

  • Una licencia de Microsoft Entra ID P1 o P2
  • Administrador global o administrador de roles con privilegios
  • Módulo Microsoft Graph PowerShell al usar PowerShell

Para obtener más información, consulte Requisitos previos para usar PowerShell o Probador de Graph.

Asignación de un rol de directorio a un usuario o entidad de servicio con ámbito de recurso

  1. Cargue el módulo de PowerShell de Microsoft Graph.

  2. Para iniciar sesión, ejecute el comando Connect-MgGraph.

  3. Cree un nuevo rol mediante el siguiente script de 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
    

Para asignar el rol a una entidad de servicio en lugar de a un usuario, use el cmdlet Get-MgServicePrincipal.

Definiciones de roles

Los objetos de definición de roles contienen la definición del rol integrado o personalizado, junto con los permisos que dicha asignación de roles concede. Este recurso muestra tanto las definiciones de roles personalizados como los roles de directorio integrados (que se muestran en el formulario equivalente de roleDefinition). Para obtener información sobre el número máximo de roles personalizados que se pueden crear en una organización de Microsoft Entra, consulte Restricciones y límites del servicio Microsoft Entra.

Creación de una definición de roles

# 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

Lectura y enumeración de definiciones de roles

# 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'"

Actualización de una definición de roles

# 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"

Eliminación de una definición de roles

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

Asignaciones de roles

Las asignaciones de roles contienen información que vincula una entidad de seguridad determinada (un usuario o una entidad de servicio de aplicación) a una definición de roles. Si es necesario, puede agregar un ámbito de recurso de Microsoft Entra único para los permisos asignados. Es posible restringir el ámbito de una asignación de roles en los roles personalizados e integrados.

Crear una asignación de rol

# 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

Lectura y enumeración de asignaciones de roles

# 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'"

Eliminación de una asignación de rol

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

Pasos siguientes