

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# AWSFornitore di credenziali per il carico di lavoro
<a name="acm-certificate-automation"></a>

[Il AWS Workload Credentials Provider automatizza l'uso di certificati TLS [pubblici](https://docs.aws.amazon.com/acm/latest/userguide/acm-exportable-certificates.html) e privati esportati da ACM.](https://docs.aws.amazon.com/acm/latest/userguide/export-private.html) Il provider recupera periodicamente i certificati e le relative chiavi private, li scrive in percorsi configurati e, facoltativamente, esegue un comando per ricaricare i servizi dipendenti come i server Web.

È possibile utilizzare il Workload Credentials Provider con i seguenti ambienti di calcolo:
+ Amazon Elastic Compute Cloud (Amazon EC2)
+ On-premises server con credenziali AWS

Il Workload Credentials Provider utilizza il presupposto del ruolo IAM per recuperare i certificati. Funziona nativamente come servizio di sistema su Linux e Windows con un utente dedicato con privilegi limitati e scrive file di certificato con autorizzazioni limitate.

**Importante**  
Con questo provider è possibile utilizzare solo certificati esportabili. Per ulteriori informazioni, consulta [AWS Certificate Manager certificati pubblici esportabili](acm-exportable-certificates.md) [Esportazione di un certificato privato](https://docs.aws.amazon.com/acm/latest/userguide/export-private.html).

Il AWS Workload Credentials Provider è open source. [Per il codice sorgente e i contributi, consulta il GitHub repository.](https://github.com/aws/aws-workload-credentials-provider)

## Come funziona l'automazione dei certificati
<a name="acm-cert-automation-refresh"></a>

Il provider utilizza uno scheduler che aggiorna ogni certificato configurato a intervalli fissi:
+ L'intervallo di aggiornamento è di 24 ore.
+ In ogni ciclo, il provider esporta il certificato, lo confronta con i file su disco e scrive nuovi file solo se il contenuto è cambiato.
+ Quando i file di certificato vengono aggiornati, il file configurato `refresh_command` viene eseguito (ad esempio, per ricaricare NGINX o Apache).
+ Se il contenuto del certificato non è cambiato, il comando refresh viene ignorato.

Il provider esegue un aggiornamento iniziale a ogni avvio del sistema e subito dopo l'avvio del servizio, con un piccolo jitter casuale per evitare chiamate API sincronizzate quando più provider avviano contemporaneamente in tutto il parco macchine.

Il provider supporta anche il ricaricamento dinamico della configurazione, che consente di aggiungere, rimuovere o modificare i certificati senza reinstallarli. Per ulteriori informazioni, consulta [Ricaricamento dinamico della configurazione](#acm-cert-automation-reload).

## Prerequisiti
<a name="acm-cert-automation-prereqs"></a>

Prima di installare il provider, assicurati di disporre di quanto segue:
+ Un'istanza Linux con systemd (Amazon Linux 2023, Ubuntu 20.04\+ o RHEL 8\+)
+ Oppure un'istanza Windows che esegue Windows Server 2016 o versione successiva con 5.1 o versione successiva PowerShell 
+ Accesso da amministratore per eseguire il programma di installazione
+ Un certificato esportabile in ACM
+ Un ruolo IAM con autorizzazioni di esportazione ACM (vedi) [Autorizzazioni richieste](#acm-cert-automation-permissions)
+ AWScredenziali disponibili sull'istanza (profilo dell'istanza, variabili di ambiente o file di credenziali)

## Installa il provider
<a name="acm-cert-automation-install"></a>

------
#### [ Linux ]

1. 

**Crea il provider**

   Crea il file binario del provider dal codice sorgente o ottieni il file binario predefinito per la tua piattaforma. Segui le istruzioni su [Install Rust](https://www.rust-lang.org/tools/install) per installare la toolchain Rust.

   ```
   cargo build --release
   ```

   L'eseguibile si trova in`target/release/aws-workload-credentials-provider`.

1. 

**Crea un file di configurazione**

   Crea un file di configurazione TOML con i dettagli del tuo certificato. Per alcuni esempi, consulta [Configurare il provider](#acm-cert-automation-configure). Il programma di installazione copia `/etc/aws-workload-credentials-provider/config.toml` automaticamente questo file quando si utilizza l'`--config`opzione.

1. 

**Eseguire il programma di installazione .**

   Eseguite lo script di installazione come utente root:

   ```
   cd aws_workload_credentials_provider_common/configuration
   sudo ./install --config /path/to/your/config.toml
   ```

1. 

**(Facoltativo) FornireAWScredenziali**

   Nelle istanze Amazon EC2 con un profilo di istanza collegato, il provider ottiene automaticamente le credenziali. Per altri ambienti, crea un file systemd override per inserire le credenziali:

   ```
   sudo mkdir -p /etc/systemd/system/aws-workload-credentials-provider-acm.service.d
   sudo tee /etc/systemd/system/aws-workload-credentials-provider-acm.service.d/creds.conf > /dev/null <<EOF
   [Service]
   Environment="AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE"
   Environment="AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY"
   Environment="AWS_REGION=us-west-2"
   EOF
   sudo systemctl daemon-reload
   sudo systemctl restart aws-workload-credentials-provider-acm
   ```

------
#### [ Windows ]

1. 

**Crea o ottieni il provider**

   Crea il file binario del provider dal codice sorgente per Windows o ottieni il file binario predefinito. Segui le istruzioni in [Installa Rust per installare](https://www.rust-lang.org/tools/install) la toolchain di Rust.

   ```
   cargo build --release
   ```

   L'eseguibile si trova in`target\release\aws-workload-credentials-provider.exe`.

1. 

**Crea un file di configurazione**

   Crea un file di configurazione TOML con i dettagli del tuo certificato. Per alcuni esempi, consulta [Configurare il provider](#acm-cert-automation-configure). Il programma di installazione copia `C:\ProgramData\AWS\WorkloadCredentialsProvider\config.toml` automaticamente questo file quando si utilizza il `-Config` parametro.

1. 

**Eseguire il programma di installazione .**

   Eseguite lo script di installazione come amministratore:

   ```
   cd aws_workload_credentials_provider_common\configuration
   .\install.ps1 -Config C:\path\to\your\config.toml
   ```

   Per eseguire l'installazione senza avviare il servizio:

   ```
   .\install.ps1 -Config C:\path\to\your\config.toml -NoStart
   ```

1. 

**(Facoltativo) FornireAWScredenziali**

   Nelle istanze Amazon EC2 con un profilo di istanza collegato, il provider ottiene automaticamente le credenziali tramite IMDS. Per altri ambienti, imposta le variabili di ambiente per il servizio tramite il registro di Windows:

   ```
   $regPath = "HKLM:\SYSTEM\CurrentControlSet\Services\AWSWorkloadCredentialsProvider-ACM"
   $envVars = @(
       "AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE",
       "AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
       "AWS_REGION=us-west-2"
   )
   New-ItemProperty -Path $regPath -Name "Environment" -Value $envVars -PropertyType MultiString -Force
   Restart-Service AWSWorkloadCredentialsProvider-ACM
   ```

------

## Configurare il provider
<a name="acm-cert-automation-configure"></a>

Crea un file di configurazione TOML con i dettagli del tuo certificato. Il programma di installazione copia questo file in `/etc/aws-workload-credentials-provider/config.toml` quando si utilizza l'`--config`opzione.

------
#### [ NGINX ]

```
[logging]
log_level = "info"
log_to_file = true

[capabilities.acm]
enabled = true

[[capabilities.acm.certificates]]
certificate_arn = "arn:aws:acm:us-west-2:123456789012:certificate/abcd1234-5678-90ab-cdef-EXAMPLE11111"
role_arn = "arn:aws:iam::123456789012:role/ACMExportRole"
certificate_path = "/etc/pki/tls/certs/example.com.crt"
private_key_path = "/etc/pki/tls/private/example.com.key"
chain_path = "/etc/pki/tls/certs/example.com-chain.pem"
refresh_command = "/usr/sbin/nginx -s reload"
```

------
#### [ Apache ]

```
[logging]
log_level = "info"
log_to_file = true

[capabilities.acm]
enabled = true

[[capabilities.acm.certificates]]
certificate_arn = "arn:aws:acm:us-west-2:123456789012:certificate/abcd1234-5678-90ab-cdef-EXAMPLE11111"
role_arn = "arn:aws:iam::123456789012:role/ACMExportRole"
certificate_path = "/etc/ssl/certs/example.com.crt"
private_key_path = "/etc/ssl/private/example.com.key"
chain_path = "/etc/ssl/certs/example.com-chain.pem"
refresh_command = "/bin/systemctl reload httpd"
```

------
#### [ Apache (Windows) ]

```
[logging]
log_level = "info"
log_to_file = true

[capabilities.acm]
enabled = true

[[capabilities.acm.certificates]]
certificate_arn = "arn:aws:acm:us-west-2:123456789012:certificate/abcd1234-5678-90ab-cdef-EXAMPLE11111"
role_arn = "arn:aws:iam::123456789012:role/ACMExportRole"
certificate_path = 'C:\Apache24\conf\ssl\example.com.crt'
private_key_path = 'C:\Apache24\conf\ssl\example.com.key'
chain_path = 'C:\Apache24\conf\ssl\example.com-chain.pem'
refresh_command = 'C:\Apache24\bin\httpd.exe -k restart'
```

------

**Nota**  
Quando `chain_path` viene omessa, la catena di certificati viene aggiunta al file in per produrre un file `certificate_path` a catena completa. Ciò è compatibile con i server Web che prevedono un singolo file contenente il certificato e la relativa catena.

### Ricaricamento dinamico della configurazione
<a name="acm-cert-automation-reload"></a>

È possibile aggiornare la configurazione del provider senza reinstallarla eseguendo il `acm reload` comando. Ciò convalida la nuova configurazione, aggiorna le autorizzazioni in modo che corrispondano ai nuovi percorsi dei certificati e riavvia il servizio.

I certificati rimossi dalla configurazione non vengono più aggiornati. I nuovi certificati iniziano immediatamente la loro prima esportazione. Ogni certificato viene eseguito come attività indipendente, quindi l'eventuale fallimento di uno di essi non influisce sugli altri.

------
#### [ Linux ]

```
aws-workload-credentials-provider acm reload --config /path/to/new-config.toml
```

------
#### [ Windows ]

```
& 'C:\Program Files\AWS\WorkloadCredentialsProvider\bin\aws-workload-credentials-provider.exe' acm reload -Config C:\path\to\new-config.toml
```

------

## Autorizzazioni richieste
<a name="acm-cert-automation-permissions"></a>

### Credenziali di base
<a name="acm-cert-automation-permissions-base"></a>

Le credenziali di base del provider (profilo o ambiente di istanza) devono essere in grado di assumere il ruolo specificato in ogni certificato: `role_arn`

```
{
    "Effect": "Allow",
    "Action": "sts:AssumeRole",
    "Resource": "arn:aws:iam::123456789012:role/ACMExportRole"
}
```

### Ruolo di esportazione dei certificati
<a name="acm-cert-automation-permissions-export-role"></a>

Il ruolo specificato in `role_arn` richiede le seguenti autorizzazioni:

```
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "acm:ExportCertificate",
            "Resource": "arn:aws:acm:us-west-2:123456789012:certificate/*"
        }
    ]
}
```

La politica di fiducia del ruolo deve consentire all'identità di base del provider di assumerla:

```
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::123456789012:role/EC2InstanceRole"
            },
            "Action": "sts:AssumeRole"
        }
    ]
}
```

### Aggiorna le autorizzazioni dei comandi (Linux)
<a name="acm-cert-automation-permissions-refresh"></a>

Su Linux, il provider esegue il file configurato tramite. `refresh_command` `sudo` Il programma di installazione genera una voce sudoers `/etc/sudoers.d/aws-workload-credentials-provider` che consente all'utente del provider di eseguire l'esatto comando configurato senza richiedere la password.

**Importante**  
Assicurati che includa la directory. `/etc/sudoers` `/etc/sudoers.d` L'installatore avvisa se questa direttiva di inclusione non è presente. Senza di essa, il file sudoers generato non ha effetto e i comandi di aggiornamento falliranno.

In Windows, il provider attiva l'operazione `refresh_command` come operazione pianificata dal SISTEMA.

## Verifica dell'installazione
<a name="acm-cert-automation-verify"></a>

Dopo l'installazione, verifica che il provider sia in esecuzione e che i certificati siano in fase di scrittura:

------
#### [ Linux ]

1. **Verifica lo stato del servizio:**

   ```
   sudo systemctl status aws-workload-credentials-provider-acm
   ```

1. **Rivedi i registri del fornitore:**

   ```
   cat /opt/aws/workload-credentials-provider/logs/acm_provider.log
   ```

1. **Verifica che i file del certificato esistano:**

   ```
   ls -la /etc/pki/tls/certs/example.com.crt
   ls -la /etc/pki/tls/private/example.com.key
   ```

1. **Convalida il contenuto del certificato:**

   ```
   openssl x509 -in /etc/pki/tls/certs/example.com.crt -noout -subject -dates
   ```

------
#### [ Windows ]

1. **Verifica lo stato del servizio:**

   ```
   Get-Service AWSWorkloadCredentialsProvider-ACM | Format-List Name, Status, StartType
   ```

1. **Rivedi i registri del fornitore:**

   ```
   Get-Content "C:\ProgramData\AWS\WorkloadCredentialsProvider\logs\acm_provider.log" -Tail 20
   ```

1. **Verifica che i file del certificato esistano:**

   ```
   Get-Item C:\certs\example.com.crt
   Get-Item C:\certs\example.com.key
   ```

1. **Convalida il contenuto del certificato:**

   ```
   $cert = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2("C:\certs\example.com.crt")
   $cert | Select-Object Subject, NotBefore, NotAfter
   ```

------

## Informazioni di riferimento sulla configurazione
<a name="acm-cert-automation-config-reference"></a>


| Campo | Obbligatorio | Predefinita | Description | 
| --- | --- | --- | --- | 
| logging.log\_level | No | info | Verbosità della registrazione:debug,,, info warn error none | 
| logging.log\_to\_file | No | true | Scrivi i log su file () o () true stdout/stderr false | 
| capabilities.acm.enabled | No | false | Abilita o disabilita la funzionalità ACM | 
| certificates[].certificate\_arn | Sì | — | ARN del certificato ACM da esportare | 
| certificates[].role\_arn | Sì | — | Ruolo IAM ARN da assumere per la chiamata ExportCertificate | 
| certificates[].certificate\_path | Sì | — | Percorso assoluto per scrivere il file del certificato | 
| certificates[].private\_key\_path | Sì | — | Percorso assoluto per scrivere il file della chiave privata | 
| certificates[].chain\_path | No | — | Percorso assoluto per scrivere la catena di certificati. Se omesso, la catena viene aggiunta a certificate\_path | 
| certificates[].refresh\_command | No | — | Comando da eseguire dopo l'aggiornamento dei file di certificato. Deve essere un percorso assoluto | 
| certificates[].certificate\_and\_chain\_permission | No | 0600 | Autorizzazioni di accesso ai file cert e chain (formato Linuxmode) | 
| certificates[].key\_permission | No | 0600 | Autorizzazioni per il file con chiave privata (formato Linux) mode | 

## Registrazione dei log
<a name="acm-cert-automation-logging"></a>

Su Linux, il provider accede a. `/opt/aws/workload-credentials-provider/logs/acm_provider.log`

In Windows, il provider accede a. `C:\ProgramData\AWS\WorkloadCredentialsProvider\logs\acm_provider.log` Gli eventi di avvio e arresto del servizio vengono registrati anche nel registro eventi dell'applicazione Windows sotto l'origine`AWSWorkloadCredentialsProvider-ACM`.

**Rotazione del registro**: il provider crea un nuovo file di registro quando il file corrente raggiunge i 10 MB e archivia fino a cinque file di registro archiviati.

**AWSregistrazione del servizio**: quando il provider chiama`ExportCertificate`, tale chiamata viene registrata AWS CloudTrail con una stringa di agente utente contenente. `aws-workload-credentials-provider` Le operazioni interne del provider (cicli di pianificazione, scritture di file) vengono visualizzate solo nel registro locale.

È possibile configurare la registrazione con le impostazioni `log_level` e`log_to_file`. Per ulteriori informazioni, consulta [Informazioni di riferimento sulla configurazione](#acm-cert-automation-config-reference).