View a markdown version of this page

AWSFornitore di credenziali per il carico di lavoro - AWSCertificate Manager

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

Il AWS Workload Credentials Provider automatizza l'uso di certificati TLS pubblici e privati esportati da ACM. 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 Esportazione di un certificato privato.

Il AWS Workload Credentials Provider è open source. Per il codice sorgente e i contributi, consulta il GitHub repository.

Come funziona l'automazione dei certificati

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.

Prerequisiti

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

  • AWScredenziali disponibili sull'istanza (profilo dell'istanza, variabili di ambiente o file di credenziali)

Installa il provider

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 per installare la toolchain Rust.

    cargo build --release

    L'eseguibile si trova intarget/release/aws-workload-credentials-provider.

  2. Crea un file di configurazione

    Crea un file di configurazione TOML con i dettagli del tuo certificato. Per alcuni esempi, consulta Configurare il provider. Il programma di installazione copia /etc/aws-workload-credentials-provider/config.toml automaticamente questo file quando si utilizza l'--configopzione.

  3. 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
  4. (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 la toolchain di Rust.

    cargo build --release

    L'eseguibile si trova intarget\release\aws-workload-credentials-provider.exe.

  2. Crea un file di configurazione

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

  3. 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
  4. (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

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'--configopzione.

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

È 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

Credenziali di base

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

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)

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

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
  2. Rivedi i registri del fornitore:

    cat /opt/aws/workload-credentials-provider/logs/acm_provider.log
  3. 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
  4. 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
  2. Rivedi i registri del fornitore:

    Get-Content "C:\ProgramData\AWS\WorkloadCredentialsProvider\logs\acm_provider.log" -Tail 20
  3. Verifica che i file del certificato esistano:

    Get-Item C:\certs\example.com.crt Get-Item C:\certs\example.com.key
  4. 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

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 ARN del certificato ACM da esportare
certificates[].role_arn Ruolo IAM ARN da assumere per la chiamata ExportCertificate
certificates[].certificate_path Percorso assoluto per scrivere il file del certificato
certificates[].private_key_path 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

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'origineAWSWorkloadCredentialsProvider-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 chiamaExportCertificate, 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 elog_to_file. Per ulteriori informazioni, consulta Informazioni di riferimento sulla configurazione.