> 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/it/config/running-as-a-service-account.md).

# Esecuzione come account di servizio

Configuri PowerShell Universal per l'esecuzione con un account di servizio Windows, distingua le autorizzazioni di hosting e di Run As e risolva gli errori di accesso Windows e di avvio dei processi.

### Account di servizio dell'applicazione

PowerShell Universal può essere eseguito con un account di servizio Windows dedicato anziché con l'account di sistema locale. Le attività locali dell'applicazione, i job e le app usano per impostazione predefinita l'identità di hosting. Una [variabile segreta PSCredential](/powershell-universal/it/piattaforma/variables.md) configurata come **Run As** avvia un processo separato con l'account selezionato.

Distinga queste due identità quando assegna le autorizzazioni:

* **Account di hosting**: l'account che esegue il servizio Windows di PowerShell Universal oppure l'identità del pool di applicazioni IIS. Autentica l'account Run As e crea il processo figlio.
* **Account Run As**: l'account archiviato nel segreto di credenziali selezionato. I suoi diritti di accesso e l'accesso a file e risorse di rete determinano che cosa può fare il processo figlio.

Per il percorso di avvio Run As di Windows non interattivo attuale, controlli i diritti seguenti sull'**account di hosting**:

| Diritto                                                                     | Si applica a                                                                                             |
| --------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- |
| Accedere come servizio (`SeServiceLogonRight`)                              | Esecuzione di PowerShell Universal come servizio Windows.                                                |
| Regolare le quote di memoria per un processo (`SeIncreaseQuotaPrivilege`)   | Creazione di un processo figlio tramite `CreateProcessAsUser`.                                           |
| Sostituire un token a livello di processo (`SeAssignPrimaryTokenPrivilege`) | Assegnazione del token dell'account Run As al processo figlio quando richiesto da `CreateProcessAsUser`. |

{% hint style="warning" %}
L'appartenenza al gruppo locale **Amministratori** non elimina questi requisiti. Gli amministratori dispongono in genere di **Regolare le quote di memoria per un processo**, ma non di **Sostituire un token a livello di processo** per impostazione predefinita. Verifichi i diritti effettivi dell'account che esegue realmente PowerShell Universal.
{% endhint %}

Per l'hosting IIS, controlli i privilegi di avvio dei processi sull'**identità del pool di applicazioni**, non solo su un account di servizio Windows. Configuri i diritti di accesso dell'identità di hosting in base alla configurazione di hosting IIS.

I privilegi aggiuntivi di avvio dei processi sono necessari per il percorso non interattivo con account alternativo, non solo perché PowerShell Universal viene eseguito con un account dedicato. Se un job o un'app deve essere eseguito con l'identità di hosting, lasci **Run As** non impostato; un altro accesso non è necessario. L'ambiente Integrated non supporta credenziali Run As alternative. Consulti [Ambienti](/powershell-universal/it/config/environments.md).

I controlli di integrità richiedono l'appartenenza ai gruppi seguenti per raccogliere informazioni sul sistema PowerShell Universal:

* Utenti monitoraggio prestazioni
* Utenti registro prestazioni

### Requisiti Run As per gli script

Questi requisiti si applicano anche ai processi di app e API Windows avviati dal server PowerShell Universal con credenziali alternative.

Per una credenziale standard con nome utente e password, PowerShell Universal tenta normalmente prima un **accesso interattivo** tramite la creazione di processi .NET (`CreateProcessWithLogonW`). Questo percorso richiede **Consentire l'accesso locale** (`SeInteractiveLogonRight`) sull'account Run As e non richiede che l'account di hosting disponga dei privilegi aggiuntivi di `CreateProcessAsUser`.

Se il primo tentativo non riesce, PowerShell Universal torna all'**accesso come processo batch** (`LogonUser` con tipo di accesso 4), seguito da `CreateProcessAsUser`. Questo percorso richiede:

* **Accedere come processo batch** (`SeBatchLogonRight`) sull'**account Run As**.
* I privilegi di avvio dei processi descritti sopra sull'**account di hosting**.

PowerShell Universal memorizza nella cache il percorso di avvio selezionato per cinque minuti, quindi gli avvii ripetuti potrebbero non ripetere entrambi i tentativi. Una convalida riuscita delle credenziali non dimostra che l'account di hosting possa creare un processo con tali credenziali.

{% hint style="info" %}
Un accesso interattivo è qui un tipo di autenticazione Windows. Non significa che PowerShell Universal apra un desktop interattivo o richieda una sessione RDP.
{% endhint %}

{% hint style="warning" %}
**Negare l'accesso locale** prevale su **Consentire l'accesso locale**, inclusi i diritti ereditati tramite l'appartenenza al gruppo. Blocca il tentativo interattivo, ma non blocca di per sé l'accesso come processo batch. **Negare l'accesso come processo batch** e **Negare l'accesso come servizio** prevalgono in modo indipendente sui diritti di accesso corrispondenti. Non rimuova un criterio di negazione dell'organizzazione solo per far riuscire il percorso interattivo; configuri invece un avvio non interattivo approvato.
{% endhint %}

#### Account del servizio gestiti di gruppo

Per una credenziale Run As gMSA, immetta l'account come `DOMAIN\account$` e selezioni **Password Not Required** quando crea la variabile segreta. Consulti [Account del servizio gestiti di gruppo](/powershell-universal/it/piattaforma/variables.md#group-managed-service-accounts) per la configurazione.

PowerShell Universal salta il tentativo interattivo normale per questa credenziale e usa un **accesso come servizio** (`LogonUser` con tipo di accesso 5). Il gMSA di destinazione necessita quindi di **Accedere come servizio**, senza un criterio effettivo **Negare l'accesso come servizio**. L'account di hosting necessita ancora dei privilegi richiesti per creare il processo figlio.

Il gMSA di destinazione deve essere configurato per l'uso sull'host PowerShell Universal, incluse le autorizzazioni appropriate per il recupero della password gestita. Controlli `Test-ADServiceAccount` su tale host. Un risultato riuscito controlla la configurazione del gMSA; non esegue la sequenza completa di accesso e di avvio dei processi di PowerShell Universal.

Eseguire PowerShell Universal stesso come gMSA è diverso dall'avviare un processo figlio come gMSA. Non presuma che un servizio gMSA o un pool di applicazioni funzionante possa avviare un altro gMSA solo perché il servizio si avvia o perché `Test-ADServiceAccount` riesce. Convalidi l'operazione Run As con l'identità di hosting effettiva. Se il processo figlio deve usare la stessa identità dell'host, lasci **Run As** non impostato.

#### Profili utente e accesso ai file

L'account Run As deve accedere all'eseguibile, al repository di configurazione, alla directory di lavoro e a ogni altra risorsa usata dal job o dall'app. Configuri l'accesso a file e rete separatamente dai diritti di accesso.

L'utilità di avvio non interattiva può anche caricare il profilo Windows dell'account Run As. Windows richiede che il chiamante di `LoadUserProfile` sia un amministratore o il sistema locale e che disponga di **Eseguire il backup di file e directory** (`SeBackupPrivilege`) e **Ripristinare file e directory** (`SeRestorePrivilege`). L'utilità di avvio attuale salta il caricamento esplicito del profilo quando l'host non è né un amministratore né il sistema locale. Ne tenga conto quando lo script o l'app dipende da `HKEY_CURRENT_USER` o da altri dati del profilo. Un errore di caricamento del profilo è distinto da un errore di privilegio di `CreateProcessAsUser`.

### Assegnazione dei diritti utente

1. Apra **Criteri di sicurezza locali** (`secpol.msc`) sull'host PowerShell Universal.
2. Vada a **Criteri locali > Assegnazione diritti utente**.
3. Assegni solo i diritti richiesti all'account di hosting o Run As appropriato, oppure a un gruppo con ambito ristretto. Verifichi l'appartenenza effettiva al gruppo e i criteri di negazione corrispondenti.
4. Se un criterio di gruppo di dominio controlla l'impostazione, richieda la modifica nel GPO che la regola. Le modifiche locali possono essere sovrascritte o non disponibili.
5. Riavvii il servizio PowerShell Universal, oppure ricicli il pool di applicazioni IIS, dopo aver modificato i diritti dell'account di hosting, in modo che riceva un nuovo token di accesso.

{% hint style="warning" %}
Questi diritti consentono operazioni Windows sensibili. Faccia esaminare le modifiche in base ai criteri di sicurezza dell'organizzazione. Il sistema locale può soddisfare i requisiti di avvio, ma il passaggio al sistema locale amplia i privilegi dell'account di hosting e non è un rimedio di privilegio minimo.
{% endhint %}

### Configurazione di un servizio PowerShell Universal per l'esecuzione con l'account

Dopo aver configurato l'account e i diritti richiesti, apra **Servizi** (`services.msc`). Trovi **PowerShell Universal**, apra **Proprietà** e usi la scheda **Connessione** per configurare l'account di hosting. Riavvii il servizio e verifichi un job o un'app che usa l'identità di esecuzione prevista.

### Risoluzione dei problemi di avvio di Run As

Legga il log di PowerShell Universal e, quando l'audit degli accessi è abilitato, il log **Sicurezza** di Windows. Identifichi la fase non riuscita prima di modificare le autorizzazioni dell'account.

| Errore                                                                                                                       | Che cosa controllare                                                                                                                                                                                                                                                                                       |
| ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Evento di sicurezza 4625, tipo di accesso 2, stato `0xC000015B`; oppure errore di Windows 1385 durante l'accesso interattivo | L'account Run As non può eseguire l'accesso interattivo richiesto. Controlli **Consentire l'accesso locale** e **Negare l'accesso locale**. Se l'accesso interattivo è negato intenzionalmente, esamini il risultato successivo dell'avvio batch invece di allentare tale criterio.                        |
| Errore di Windows 1385 durante l'accesso come processo batch (tipo 4) o l'accesso come servizio (tipo 5)                     | Controlli il diritto dell'account Run As per quel tipo di accesso specifico e il criterio di negazione corrispondente.                                                                                                                                                                                     |
| `A required privilege is not held by the client` (errore di Windows 1314) durante `CreateProcessAsUser`                      | Controlli **Sostituire un token a livello di processo** e **Regolare le quote di memoria per un processo** sull'account di hosting effettivo, anche se è un amministratore locale.                                                                                                                         |
| Errore di Windows 1314 durante `LoadUserProfile`                                                                             | Controlli i privilegi di caricamento del profilo dell'account di hosting e i requisiti di Windows per il caricamento del profilo, anziché solo il privilegio del token di processo.                                                                                                                        |
| Errore di Windows 1326 durante l'accesso                                                                                     | Controlli il nome dell'account, il dominio e la credenziale. Per un gMSA, controlli anche **Password Not Required**, la configurazione dell'host, le autorizzazioni di recupero della password gestita e l'identità di hosting. L'errore 1326 da solo non dimostra che una password archiviata sia errata. |
| Il processo si avvia, ma il job o l'app segnala l'accesso negato a un percorso di AppData, temporaneo o del repository       | Esamini il percorso e l'identità di esecuzione. I privilegi di avvio non correggono un problema di percorso della directory di lavoro o del profilo utente. Non conceda un accesso ampio al profilo privato dell'account di hosting al posto dei percorsi dell'account previsto.                           |

Raccolga la versione di PowerShell Universal, la modalità e l'identità di hosting, se la credenziale è un gMSA, la fase di avvio, il codice di errore nativo e il tipo o lo stato di accesso dell'evento 4625 pertinente quando richiede assistenza. Non includa password né valori segreti.

### Riferimenti di Windows

* [CreateProcessWithLogonW](https://learn.microsoft.com/en-us/windows/win32/api/winbase/nf-winbase-createprocesswithlogonw): requisiti dell'accesso interattivo e limitazione del sistema locale.
* [CreateProcessAsUser](https://learn.microsoft.com/en-us/windows/win32/api/processthreadsapi/nf-processthreadsapi-createprocessasuserw): privilegi del token di processo e della quota di memoria.
* [LogonUser](https://learn.microsoft.com/en-us/windows/win32/api/winbase/nf-winbase-logonuserw) e [diritti dell'account](https://learn.microsoft.com/en-us/windows/win32/secauthz/account-rights-constants): accesso come processo batch o come servizio e precedenza dei criteri di negazione.
* [LoadUserProfile](https://learn.microsoft.com/en-us/windows/win32/api/userenv/nf-userenv-loaduserprofilew): requisiti di caricamento del profilo.
* [Sostituire un token a livello di processo](https://learn.microsoft.com/en-us/previous-versions/windows/it-pro/windows-10/security/threat-protection/security-policy-settings/replace-a-process-level-token): assegnazioni predefinite e considerazioni sulla sicurezza.


---

# 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/it/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.
