Acerca de
Autenticación
De forma predeterminada, PowerShell Universal proporciona autenticación de usuarios locales. Los nombres de usuario y las contraseñas cifradas se almacenan en la base de datos de PowerShell Universal. En entornos empresariales, puede que desee considerar el uso de los métodos de autenticación admitidos por su organización.
Autorización
La autorización de usuarios se realiza mediante roles. Los roles se pueden asignar mediante la asignación de claims, un script de política o asignando el rol directamente a la identidad.
Asignación de roles a claims
Puede asignar roles a un claim (como la pertenencia a un grupo) utilizando los parámetros -ClaimType y -ClaimValue de New-PSURole. También hay opciones de configuración disponibles en el cuadro de diálogo de propiedades del rol, en Secure > Roles.
Por ejemplo, con la autenticación de Windows, si quisiera asignar un grupo a un rol, podría configurarlo de forma que el SID del grupo se asigne al rol de administrador.
New-PSURole -Name Administrator -ClaimType 'http://schemas.microsoft.com/ws/2008/06/identity/claims/groupsid' -ClaimValue 'S-123-123-123'Asignar roles a claims de esta manera es más rápido que los scripts de políticas, porque no requiere que se ejecute PowerShell cuando el usuario inicia sesión.
Ver información de claims
Para ayudarle a desarrollar scripts de políticas o a asignar roles a claims, puede ver la información de claims haciendo clic en View Claim Information en Secure > Roles.
Ejemplo: Azure Active Directory
Puede asignar un grupo de Azure Active Directory a un rol buscando el Object ID del grupo en Azure. Por ejemplo, dentro del dominio de Ironman Software, tenemos un grupo llamado Dashboard Administrators. Este grupo tiene un object ID 61849bf2-e44b-4057-b589-6cd1812d7545.
Dentro de PowerShell Universal, puedo asignar los usuarios de este grupo al grupo Administrator configurando la asignación de claims. El Claim Type será groups y el Claim Value será 61849bf2-e44b-4057-b589-6cd1812d7545. Una vez asignado el claim, los usuarios del grupo Dashboard Administrators formarán parte del grupo Administrators de PowerShell Universal. El archivo roles.ps1 resultante tendrá este aspecto.
Todos los demás roles están deshabilitados.
Asignación mediante políticas
De forma predeterminada, los roles se asignan mediante políticas. Las políticas se ejecutan cuando el usuario inicia sesión. Puede cambiar los scripts de políticas visitando la página Secure > Roles. Haga clic en el botón Edit Code para configurar el script de política.
Los scripts de políticas reciben un objeto ClaimsPrincipal como parámetro y deben devolver true o false. Se asumirá que las políticas que generen errores devuelven false. El objeto ClaimsPrincipal contiene la identidad del usuario y los claims que ha recibido. Estos pueden incluir asignaciones de grupos u otras características de la cuenta de un usuario.
Puede esperar un objeto con esta estructura.
Asignación de roles
Para asignar un rol a un usuario, puede crear su identidad dentro de Universal y, a continuación, seleccionar el rol en la lista desplegable de la página Identities.
De forma predeterminada, las identidades reciben un rol mediante la asignación de claims o mediante políticas.
Roles integrados
Administrator
Acceso completo a toda la plataforma PowerShell Universal y a su configuración.
Operator
Los operadores tienen acceso para añadir y eliminar recursos como APIs, scripts y dashboards. Los operadores no pueden cambiar configuraciones como los entornos, los roles o la configuración general.
Execute
El rol Execute concede la capacidad de ejecutar scripts y acceso de lectura para todo lo demás.
Reader
El rol Reader proporciona acceso de solo lectura a PowerShell Universal.
Ruta predeterminada por rol
Puede cambiar la página que ve el usuario al iniciar sesión estableciendo la propiedad Default Route del rol. Por ejemplo, puede querer que los usuarios de RR. HH. vayan al dashboard de Recursos Humanos mientras que los usuarios de TI vayan al dashboard de TI.
Usuarios con muchos grupos
Si sus usuarios son miembros de más de unos 40 grupos, puede experimentar problemas al iniciar sesión. Esto se debe a los límites de tamaño de los encabezados HTTP en IIS y Kestrel. Cuantos más grupos tenga un usuario, más claims de autorización tendrá y mayor será el encabezado.
Puede aumentar el límite de encabezado de Kestrel utilizando la configuración de límites en el archivo appsettings.json. Deberá aumentar el tamaño del encabezado. Es un valor en bytes y su valor predeterminado es 32 kb.
Autorización en IIS
La autorización en IIS funciona como con cualquier otro método, pero debe tener en cuenta el límite de tamaño del encabezado de la solicitud. Puede recibir errores al habilitar claims que incluyan muchos grupos. Pueden superar el límite de tamaño del encabezado e IIS devolverá errores. Hemos comprobado que unos 40 grupos de Azure Active Directory provocan este problema en una instalación predeterminada de IIS.
El error que recibirá será un error 400 con la solicitud es demasiado larga.
Bad Request - Request Too Long HTTP Error 400. The size of the request headers is too long.
Si tiene HTTPS habilitado, recibirá un error sobre un error de protocolo HTTP2.
Puede aumentar el tamaño de solicitud de IIS estableciendo las siguientes claves de registro. Deberá reiniciar su equipo para que surtan efecto.
Puede encontrar más información en la documentación de Microsoft.
Como alternativa a aumentar el tamaño de la solicitud, también puede reducir el número de grupos enviados. En Azure Active Directory, puede establecer que se envíen solo los grupos asignados a la aplicación para evitar que se envíen todos los grupos.
En Azure, vaya a App registrations > (seleccione la aplicación) > Token Configuration y especifique los grupos asignados a la aplicación.
Ahora vaya a Enterprise Application > (seleccione la aplicación) > Users and groups. Asigne el grupo o los grupos que le interese incluir en los claims. (Nota: esto también puede utilizarse como límite de seguridad si establece “User Assignment Required” en Yes en la sección ‘Properties’ de la aplicación)
Tokens de aplicación
Los tokens de aplicación se pueden asignar a servicios que no pueden iniciar sesión de forma interactiva. Los administradores pueden crear tokens para identidades desde Secure > Application Tokens. Para crear un token para su propia cuenta, abra User Settings en el menú de usuario y seleccione Tokens.
El token tendrá una caducidad de un año y tendrá los roles válidos para su cuenta. Para copiar el token de aplicación a su cuenta, haga clic en la acción Copy. Para revocar un token de aplicación, haga clic en la acción Revoke.
Puede utilizar los tokens de aplicación con los cmdlets de Universal o mediante solicitudes web directamente utilizando la autorización Bearer.
Entorno
De forma predeterminada, los scripts de autenticación de formularios y de asignación de políticas se ejecutan dentro del proceso de PowerShell Universal. Opcionalmente, puede configurar un Entorno externo para ejecutar sus scripts de autenticación y autorización. Cuando configure un entorno de seguridad, se iniciará un proceso externo de PowerShell que se configurará utilizando la configuración de su entorno.
Para ajustar el entorno utilizado por el proceso de seguridad, establezca -SecurityEnvironment en settings.ps1.
Ejemplo: autenticación de formularios con Active Directory
El siguiente ejemplo muestra cómo realizar un sencillo "LDAP BIND" para validar las credenciales de Active Directory de un usuario. Si un usuario que intenta acceder a PowerShell Universal no es el usuario administrador predeterminado, tendrá que autenticar correctamente sus credenciales con Active Directory mediante un simple LDAP bind. Esto se puede combinar con una comprobación de pertenencia a un grupo de AD en las políticas de los roles Admin, Operator y Reader para utilizar de forma eficaz la autenticación de Active Directory Y la pertenencia a grupos de Active Directory con el fin de proporcionar acceso basado en roles a PowerShell Universal.
Ejemplo: política basada en la pertenencia a grupos de Active Directory (autenticación de Windows)
Este ejemplo aprovecha los claims que se proporcionan durante la autenticación. Puede comprobar si el usuario tiene un groupsid (pertenencia a un grupo) utilizando la asignación de claims. Asigne el tipo de claim groupid al valor al que desea asignar el rol.
Ejemplo: política basada en la pertenencia a grupos de Active Directory
En este ejemplo configuraremos nuestro script de política de Administrator para que utilice LDAP para recuperar la pertenencia a un grupo de Active Directory. Aquí hemos creado un grupo llamado "PowerShell Universal Admins" cuyos miembros deben recibir acceso de administrador en PowerShell Universal. Aquí realizamos una simple comprobación de samaccountname del usuario para asegurarnos de que es miembro del grupo. Para entornos más robustos, sería más apropiada una comprobación de SID/DN/ObjectGUID.
Ejemplo: pertenencia a grupos basada en Azure Active Directory
Este ejemplo aprovecha OpenID Connect y Azure Active Directory.
Una vez que haya configurado PowerShell Universal y Azure Active Directory, puede configurar scripts de roles para verificar si los usuarios son miembros de grupos existentes en Azure AD. Puede aprovechar las asignaciones de claims para asignar el ID de grupo de Azure AD a un rol de PowerShell Universal.
En primer lugar, asegúrese de que tiene habilitados los claims de pertenencia a grupos en el manifiesto de su registro de aplicación. Esto incluirá toda la pertenencia a grupos, de modo que sea accesible en PowerShell Universal.
Una vez configurado, puede actualizar su script de roles para comprobar la pertenencia a un grupo. Primero, tome nota del object ID del grupo que desea comprobar en Azure AD.
A continuación, en su script roles.ps1, puede validar que un usuario tiene un rol determinado utilizando la asignación de claims.
A medida que los usuarios inicien sesión, su pertenencia a grupos se validará con sus claims y se les asignará un rol.
Última actualización
¿Te fue útil?