> For the complete documentation index, see [llms.txt](https://docs.devolutions.net/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.devolutions.net/powershell-universal/es/config/running-as-a-service-account.md).

# Ejecución como cuenta de servicio

Configure PowerShell Universal para que se ejecute con una cuenta de servicio de Windows, distinga los permisos de alojamiento y de Run As, y solucione los errores de inicio de sesión de Windows y de

### Cuenta de servicio de la aplicación

PowerShell Universal puede ejecutarse con una cuenta de servicio de Windows dedicada en lugar de la cuenta del sistema local. Las tareas locales de la aplicación, los trabajos y las aplicaciones usan la identidad de alojamiento de forma predeterminada. Una [variable secreta de PSCredential](/powershell-universal/es/plataforma/variables.md) configurada como **Run As** inicia un proceso independiente con la cuenta seleccionada.

Distinga estas dos identidades al asignar permisos:

* **Cuenta de alojamiento**: la cuenta que ejecuta el servicio de Windows de PowerShell Universal, o la identidad del grupo de aplicaciones de IIS. Autentica la cuenta Run As y crea el proceso secundario.
* **Cuenta Run As**: la cuenta almacenada en el secreto de credenciales seleccionado. Sus derechos de inicio de sesión y su acceso a archivos y recursos de red determinan lo que puede hacer el proceso secundario.

Para la ruta de inicio de Run As de Windows no interactiva actual, compruebe los derechos siguientes en la **cuenta de alojamiento**:

| Derecho                                                                    | Se aplica a                                                                                              |
| -------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- |
| Iniciar sesión como servicio (`SeServiceLogonRight`)                       | Ejecución de PowerShell Universal como servicio de Windows.                                              |
| Ajustar las cuotas de memoria para un proceso (`SeIncreaseQuotaPrivilege`) | Creación de un proceso secundario mediante `CreateProcessAsUser`.                                        |
| Reemplazar un token de nivel de proceso (`SeAssignPrimaryTokenPrivilege`)  | Asignación del token de la cuenta Run As al proceso secundario cuando lo requiere `CreateProcessAsUser`. |

{% hint style="warning" %}
La pertenencia al grupo local **Administradores** no elimina estos requisitos. Los administradores suelen tener **Ajustar las cuotas de memoria para un proceso**, pero no tienen **Reemplazar un token de nivel de proceso** de forma predeterminada. Compruebe los derechos efectivos de la cuenta que ejecuta realmente PowerShell Universal.
{% endhint %}

Para el alojamiento en IIS, compruebe los privilegios de inicio de procesos en la **identidad del grupo de aplicaciones**, no solo en una cuenta de servicio de Windows. Configure los derechos de inicio de sesión de la identidad de alojamiento según la configuración de alojamiento de IIS.

Los privilegios adicionales de inicio de procesos son necesarios para la ruta no interactiva de cuenta alternativa, no solo porque PowerShell Universal se ejecute con una cuenta dedicada. Si un trabajo o una aplicación debe ejecutarse con la identidad de alojamiento, deje **Run As** sin establecer; no es necesario otro inicio de sesión. El entorno Integrated no admite credenciales Run As alternativas. Consulte [Entornos](/powershell-universal/es/config/environments.md).

Las comprobaciones de estado requieren la siguiente pertenencia a grupos para recopilar información sobre el sistema PowerShell Universal:

* Usuarios del monitor de rendimiento
* Usuarios del registro de rendimiento

### Requisitos de Run As para scripts

Estos requisitos también se aplican a los procesos de aplicaciones y API de Windows que inicia el servidor de PowerShell Universal con credenciales alternativas.

Para una credencial estándar de nombre de usuario y contraseña, PowerShell Universal intenta normalmente primero un **inicio de sesión interactivo** mediante la creación de procesos de .NET (`CreateProcessWithLogonW`). Esta ruta requiere **Permitir el inicio de sesión local** (`SeInteractiveLogonRight`) en la cuenta Run As y no exige que la cuenta de alojamiento tenga los privilegios adicionales de `CreateProcessAsUser`.

Si el primer intento falla, PowerShell Universal recurre al **inicio de sesión por lotes** (`LogonUser` con el tipo de inicio de sesión 4), seguido de `CreateProcessAsUser`. Esta ruta requiere:

* **Iniciar sesión como trabajo por lotes** (`SeBatchLogonRight`) en la **cuenta Run As**.
* Los privilegios de inicio de procesos descritos anteriormente en la **cuenta de alojamiento**.

PowerShell Universal almacena en caché la ruta de inicio seleccionada durante cinco minutos, por lo que los inicios repetidos pueden no repetir ambos intentos. Una validación correcta de las credenciales no demuestra que la cuenta de alojamiento pueda crear un proceso con esas credenciales.

{% hint style="info" %}
Un inicio de sesión interactivo es aquí un tipo de autenticación de Windows. No significa que PowerShell Universal abra un escritorio interactivo ni que requiera una sesión RDP.
{% endhint %}

{% hint style="warning" %}
**Denegar el inicio de sesión local** prevalece sobre **Permitir el inicio de sesión local**, incluidos los derechos heredados mediante la pertenencia a grupos. Bloquea el intento interactivo, pero no bloquea por sí mismo el inicio de sesión por lotes. **Denegar el inicio de sesión como trabajo por lotes** y **Denegar el inicio de sesión como servicio** prevalecen de forma independiente sobre los derechos de inicio de sesión correspondientes. No quite una directiva de denegación de la organización solo para que la ruta interactiva tenga éxito; configure en su lugar un inicio no interactivo aprobado.
{% endhint %}

#### Cuentas de servicio administradas de grupo

Para una credencial Run As de gMSA, escriba la cuenta como `DOMAIN\account$` y seleccione **Password Not Required** al crear la variable secreta. Consulte [Cuentas de servicio administradas de grupo](/powershell-universal/es/plataforma/variables.md#group-managed-service-accounts) para la configuración.

PowerShell Universal omite el intento interactivo normal para esta credencial y usa un **inicio de sesión como servicio** (`LogonUser` con el tipo de inicio de sesión 5). Por tanto, el gMSA de destino necesita **Iniciar sesión como servicio**, sin una directiva vigente de **Denegar el inicio de sesión como servicio**. La cuenta de alojamiento sigue necesitando los privilegios requeridos para crear el proceso secundario.

El gMSA de destino debe estar configurado para usarse en el host de PowerShell Universal, incluidos los permisos adecuados para recuperar la contraseña administrada. Compruebe `Test-ADServiceAccount` en ese host. Un resultado correcto comprueba la configuración del gMSA; no ejecuta la secuencia completa de inicio de sesión y de inicio de procesos de PowerShell Universal.

Ejecutar el propio PowerShell Universal como gMSA es distinto de iniciar un proceso secundario como gMSA. No suponga que un servicio gMSA o un grupo de aplicaciones en funcionamiento puede iniciar otro gMSA solo porque el servicio se inicie o porque `Test-ADServiceAccount` se ejecute correctamente. Valide la operación Run As con la identidad de alojamiento real. Si el proceso secundario debe usar la misma identidad que el host, deje **Run As** sin establecer.

#### Perfiles de usuario y acceso a archivos

La cuenta Run As necesita acceso al ejecutable, al repositorio de configuración, al directorio de trabajo y a cualquier otro recurso que use el trabajo o la aplicación. Configure el acceso a archivos y a la red por separado de los derechos de inicio de sesión.

El iniciador no interactivo también puede cargar el perfil de Windows de la cuenta Run As. Windows exige que quien llama a `LoadUserProfile` sea un administrador o el sistema local y que tenga **Hacer copias de seguridad de archivos y directorios** (`SeBackupPrivilege`) y **Restaurar archivos y directorios** (`SeRestorePrivilege`). El iniciador actual omite la carga explícita del perfil cuando el host no es ni administrador ni el sistema local. Téngalo en cuenta cuando el script o la aplicación dependa de `HKEY_CURRENT_USER` u otros datos del perfil. Un error al cargar el perfil es distinto de un error de privilegio de `CreateProcessAsUser`.

### Asignación de derechos de usuario

1. Abra **Directiva de seguridad local** (`secpol.msc`) en el host de PowerShell Universal.
2. Vaya a **Directivas locales > Asignación de derechos de usuario**.
3. Asigne solo los derechos necesarios a la cuenta de alojamiento o Run As adecuada, o a un grupo de alcance reducido. Compruebe la pertenencia efectiva al grupo y las directivas de denegación correspondientes.
4. Si una directiva de grupo de dominio controla la configuración, solicite el cambio en el GPO que la rige. Los cambios locales pueden sobrescribirse o no estar disponibles.
5. Reinicie el servicio de PowerShell Universal, o recicle el grupo de aplicaciones de IIS, después de cambiar los derechos de la cuenta de alojamiento para que reciba un nuevo token de inicio de sesión.

{% hint style="warning" %}
Estos derechos permiten operaciones sensibles de Windows. Haga revisar los cambios conforme a la directiva de seguridad de su organización. El sistema local puede cumplir los requisitos de inicio, pero cambiar al sistema local amplía los privilegios de la cuenta de alojamiento y no es una solución de privilegio mínimo.
{% endhint %}

### Configuración de un servicio de PowerShell Universal para que se ejecute con la cuenta

Después de configurar la cuenta y los derechos necesarios, abra **Servicios** (`services.msc`). Busque **PowerShell Universal**, abra **Propiedades** y use la pestaña **Iniciar sesión** para configurar la cuenta de alojamiento. Reinicie el servicio y compruebe un trabajo o una aplicación que use la identidad de ejecución prevista.

### Solución de problemas del inicio de Run As

Lea el registro de PowerShell Universal y, cuando la auditoría de inicios de sesión esté habilitada, el registro de **Seguridad** de Windows. Identifique qué fase ha fallado antes de cambiar los permisos de la cuenta.

| Error                                                                                                                                      | Qué comprobar                                                                                                                                                                                                                                                                                                                            |
| ------------------------------------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Evento de seguridad 4625, tipo de inicio de sesión 2, estado `0xC000015B`; o error de Windows 1385 durante el inicio de sesión interactivo | La cuenta Run As no puede realizar el inicio de sesión interactivo solicitado. Compruebe **Permitir el inicio de sesión local** y **Denegar el inicio de sesión local**. Si el inicio de sesión interactivo se deniega de forma intencionada, inspeccione el resultado posterior del inicio por lotes en lugar de relajar esa directiva. |
| Error de Windows 1385 durante el inicio de sesión por lotes (tipo 4) o el inicio de sesión como servicio (tipo 5)                          | Compruebe el derecho de la cuenta Run As para ese tipo de inicio de sesión concreto y la directiva de denegación correspondiente.                                                                                                                                                                                                        |
| `A required privilege is not held by the client` (error de Windows 1314) durante `CreateProcessAsUser`                                     | Compruebe **Reemplazar un token de nivel de proceso** y **Ajustar las cuotas de memoria para un proceso** en la cuenta de alojamiento real, aunque sea un administrador local.                                                                                                                                                           |
| Error de Windows 1314 durante `LoadUserProfile`                                                                                            | Compruebe los privilegios de carga de perfiles de la cuenta de alojamiento y los requisitos de Windows para cargar perfiles, en lugar de comprobar solo el privilegio del token de proceso.                                                                                                                                              |
| Error de Windows 1326 durante el inicio de sesión                                                                                          | Compruebe el nombre de la cuenta, el dominio y la credencial. Para un gMSA, compruebe también **Password Not Required**, la configuración del host, los permisos de recuperación de la contraseña administrada y la identidad de alojamiento. El error 1326 por sí solo no demuestra que una contraseña almacenada sea incorrecta.       |
| El proceso se inicia, pero el trabajo o la aplicación informa de acceso denegado a una ruta de AppData, temporal o del repositorio         | Inspeccione la ruta y la identidad de ejecución. Los privilegios de inicio no corrigen un problema de ruta del directorio de trabajo o del perfil de usuario. No conceda un acceso amplio al perfil privado de la cuenta de alojamiento como sustituto del uso de las rutas de la cuenta prevista.                                       |

Recopile la versión de PowerShell Universal, el modo y la identidad de alojamiento, si la credencial es un gMSA, la fase de inicio, el código de error nativo y el tipo o estado de inicio de sesión del evento 4625 pertinente cuando solicite asistencia. No incluya contraseñas ni valores secretos.

### Referencias de Windows

* [CreateProcessWithLogonW](https://learn.microsoft.com/en-us/windows/win32/api/winbase/nf-winbase-createprocesswithlogonw): requisitos del inicio de sesión interactivo y restricción del sistema local.
* [CreateProcessAsUser](https://learn.microsoft.com/en-us/windows/win32/api/processthreadsapi/nf-processthreadsapi-createprocessasuserw): privilegios de token de proceso y de cuota de memoria.
* [LogonUser](https://learn.microsoft.com/en-us/windows/win32/api/winbase/nf-winbase-logonuserw) y [derechos de cuenta](https://learn.microsoft.com/en-us/windows/win32/secauthz/account-rights-constants): inicio de sesión por lotes o como servicio, y prioridad de las directivas de denegación.
* [LoadUserProfile](https://learn.microsoft.com/en-us/windows/win32/api/userenv/nf-userenv-loaduserprofilew): requisitos de carga de perfiles.
* [Reemplazar un token de nivel de proceso](https://learn.microsoft.com/en-us/previous-versions/windows/it-pro/windows-10/security/threat-protection/security-policy-settings/replace-a-process-level-token): asignaciones predeterminadas y consideraciones de seguridad.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.devolutions.net/powershell-universal/es/config/running-as-a-service-account.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
