View a markdown version of this page

AWSAnbieter von Workload-Anmeldeinformationen - AWSCertificate Manager

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

AWSAnbieter von Workload-Anmeldeinformationen

Der AWS Workload Credentials Provider automatisiert die Verwendung von öffentlichen und privaten TLS-Zertifikaten, die aus ACM exportiert wurden. Der Anbieter ruft regelmäßig Zertifikate und ihre privaten Schlüssel ab, schreibt sie in konfigurierte Pfade und führt optional einen Befehl aus, um abhängige Dienste wie Webserver neu zu laden.

Sie können den Workload Credentials Provider mit den folgenden Computerumgebungen verwenden:

  • Amazon Elastic Compute Cloud (Amazon EC2)

  • On-premises Server mit AWS Anmeldeinformationen

Der Workload Credentials Provider verwendet die IAM-Rollenannahme, um Zertifikate abzurufen. Er wird nativ als Systemdienst sowohl unter Linux als auch unter Windows unter einem dedizierten Benutzer mit niedrigen Rechten ausgeführt und schreibt Zertifikatsdateien mit eingeschränkten Rechten.

Wichtig

Mit diesem Anbieter können nur exportierbare Zertifikate verwendet werden. Weitere Informationen finden Sie unter AWS Certificate Manager exportierbare öffentliche Zertifikate und Exportieren eines privaten Zertifikats.

Der AWS Workload Credentials Provider ist Open Source. Quellcode und Beiträge finden Sie im GitHub Repository.

Wie funktioniert die Automatisierung von Zertifikaten

Der Anbieter verwendet einen Scheduler, der jedes konfigurierte Zertifikat in einem festen Intervall aktualisiert:

  • Das Aktualisierungsintervall beträgt 24 Stunden.

  • In jedem Zyklus exportiert der Anbieter das Zertifikat, vergleicht es mit den Dateien auf der Festplatte und schreibt nur dann neue Dateien, wenn sich der Inhalt geändert hat.

  • Wenn die Zertifikatsdateien aktualisiert werden, wird die Konfiguration refresh_command ausgeführt (z. B. um NGINX oder Apache neu zu laden).

  • Wenn sich der Inhalt des Zertifikats nicht geändert hat, wird der Befehl zum Aktualisieren übersprungen.

Der Anbieter führt bei jedem Systemstart und kurz nach dem Start des Dienstes eine erste Aktualisierung mit einem kleinen zufälligen Jitter durch, um synchronisierte API-Aufrufe zu vermeiden, wenn mehrere Anbieter gleichzeitig in der Flotte starten.

Der Anbieter unterstützt auch das dynamische Neuladen von Konfigurationen, sodass Sie Zertifikate hinzufügen, entfernen oder ändern können, ohne sie neu installieren zu müssen. Weitere Informationen finden Sie unter Dynamisches Neuladen der Konfiguration.

Voraussetzungen

Stellen Sie vor der Installation des Anbieters sicher, dass Sie über Folgendes verfügen:

  • Eine Linux-Instance mit systemd (Amazon Linux 2023, Ubuntu 20.04+ oder RHEL 8+)

  • Oder eine Windows-Instance, auf der Windows Server 2016 oder höher mit 5.1 oder höher ausgeführt wird PowerShell

  • Administratorzugriff zum Ausführen des Installationsprogramms

  • Ein exportierbares Zertifikat in ACM

  • Eine IAM-Rolle mit ACM-Exportberechtigungen (siehe) Erforderliche Berechtigungen

  • AWSauf der Instance verfügbare Anmeldeinformationen (Instanzprofil, Umgebungsvariablen oder Anmeldeinformationsdatei)

Installieren Sie den Anbieter

Linux
  1. Erstellen Sie den Anbieter

    Erstellen Sie die Provider-Binärdatei aus dem Quellcode oder beziehen Sie die vorgefertigte Binärdatei für Ihre Plattform. Folgen Sie den Anweisungen unter Rust installieren, um die Rust-Toolchain zu installieren.

    cargo build --release

    Die ausführbare Datei befindet sich unter. target/release/aws-workload-credentials-provider

  2. Erstellen Sie eine Konfigurationsdatei

    Erstellen Sie eine TOML-Konfigurationsdatei mit Ihren Zertifikatsdetails. Beispiele finden Sie unter Konfigurieren Sie den Anbieter. Das Installationsprogramm kopiert diese Datei /etc/aws-workload-credentials-provider/config.toml automatisch, wenn Sie die --config Option verwenden.

  3. Führen Sie das -Installationsprogramm aus.

    Führen Sie das Installationsskript als Root aus:

    cd aws_workload_credentials_provider_common/configuration sudo ./install --config /path/to/your/config.toml
  4. (Optional) Geben Sie anAWSAnmeldedaten

    Bei Amazon EC2 EC2-Instances mit angehängtem Instance-Profil erhält der Anbieter automatisch Anmeldeinformationen. Für andere Umgebungen erstellen Sie eine systemd-Override-Datei, um Anmeldeinformationen einzufügen:

    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. Erstellen oder beziehen Sie den Anbieter

    Erstellen Sie die Provider-Binärdatei aus dem Quellcode für Windows, oder rufen Sie die vorgefertigte Binärdatei ab. Folgen Sie den Anweisungen unter Rust installieren, um die Rust-Toolchain zu installieren.

    cargo build --release

    Die ausführbare Datei befindet sich unter. target\release\aws-workload-credentials-provider.exe

  2. Erstellen Sie eine Konfigurationsdatei

    Erstellen Sie eine TOML-Konfigurationsdatei mit Ihren Zertifikatsdetails. Beispiele finden Sie unter Konfigurieren Sie den Anbieter. Das Installationsprogramm kopiert diese Datei C:\ProgramData\AWS\WorkloadCredentialsProvider\config.toml automatisch, wenn Sie den -Config Parameter verwenden.

  3. Führen Sie das -Installationsprogramm aus.

    Führen Sie das Installationsskript als Administrator aus:

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

    Um zu installieren, ohne den Dienst zu starten:

    .\install.ps1 -Config C:\path\to\your\config.toml -NoStart
  4. (Optional) Geben Sie anAWSAnmeldedaten

    Bei Amazon EC2 EC2-Instances mit angehängtem Instance-Profil erhält der Anbieter Anmeldeinformationen automatisch über IMDS. Für andere Umgebungen legen Sie Umgebungsvariablen für den Service über die Windows-Registrierung fest:

    $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

Konfigurieren Sie den Anbieter

Erstellen Sie eine TOML-Konfigurationsdatei mit Ihren Zertifikatsdetails. Das Installationsprogramm kopiert diese Datei in, /etc/aws-workload-credentials-provider/config.toml wenn Sie die --config Option verwenden.

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'
Anmerkung

Wenn diese chain_path Option weggelassen wird, wird die Zertifikatskette an die Datei unter angehängtcertificate_path, um eine vollständige Kettendatei zu erzeugen. Dies ist kompatibel mit Webservern, die eine einzelne Datei erwarten, die das Zertifikat und seine Kette enthält.

Dynamisches Neuladen der Konfiguration

Sie können die Konfiguration des Anbieters ohne Neuinstallation aktualisieren, indem Sie den acm reload Befehl ausführen. Dadurch wird die neue Konfiguration validiert, die Berechtigungen entsprechend den neuen Zertifikatpfaden aktualisiert und der Dienst neu gestartet.

Aus der Konfiguration entfernte Zertifikate werden nicht mehr aktualisiert. Neue Zertifikate beginnen sofort mit dem ersten Export. Jedes Zertifikat wird als eigenständige Aufgabe ausgeführt, sodass ein Fehler in einem Zertifikat keine Auswirkungen auf andere hat.

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

Erforderliche Berechtigungen

Basisanmeldedaten

Die Basisanmeldedaten des Anbieters (Instanzprofil oder Umgebung) müssen in der Lage sein, die in den einzelnen Zertifikaten angegebene Rolle zu übernehmenrole_arn:

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

Rolle für den Export von Zertifikaten

Die in angegebene Rolle role_arn erfordert die folgenden Berechtigungen:

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

Die Vertrauensrichtlinie der Rolle muss es der Basisidentität des Anbieters ermöglichen, diese anzunehmen:

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

Befehlsberechtigungen aktualisieren (Linux)

Unter Linux führt der Anbieter den konfigurierten Befehl ausrefresh_command. sudo Das Installationsprogramm generiert einen Sudoers-Eintrag/etc/sudoers.d/aws-workload-credentials-provider, der es dem Anbieterbenutzer ermöglicht, den exakt konfigurierten Befehl ohne Kennwortabfrage auszuführen.

Wichtig

Stellen Sie sicher, dass das /etc/sudoers Verzeichnis enthalten ist/etc/sudoers.d. Das Installationsprogramm warnt, wenn diese Include-Direktive nicht vorhanden ist. Ohne sie hat die generierte Sudoers-Datei keine Wirkung und die Aktualisierungsbefehle schlagen fehl.

Unter Windows löst der Anbieter die refresh_command als SYSTEM geplante Aufgabe aus.

Überprüfen der Installation

Stellen Sie nach der Installation sicher, dass der Anbieter läuft und Zertifikate geschrieben werden:

Linux
  1. Überprüfen Sie den Dienststatus:

    sudo systemctl status aws-workload-credentials-provider-acm
  2. Anbieterprotokolle überprüfen:

    cat /opt/aws/workload-credentials-provider/logs/acm_provider.log
  3. Stellen Sie sicher, dass die Zertifikatsdateien existieren:

    ls -la /etc/pki/tls/certs/example.com.crt ls -la /etc/pki/tls/private/example.com.key
  4. Überprüfen Sie den Inhalt des Zertifikats:

    openssl x509 -in /etc/pki/tls/certs/example.com.crt -noout -subject -dates
Windows
  1. Überprüfen Sie den Dienststatus:

    Get-Service AWSWorkloadCredentialsProvider-ACM | Format-List Name, Status, StartType
  2. Anbieterprotokolle überprüfen:

    Get-Content "C:\ProgramData\AWS\WorkloadCredentialsProvider\logs\acm_provider.log" -Tail 20
  3. Stellen Sie sicher, dass die Zertifikatsdateien existieren:

    Get-Item C:\certs\example.com.crt Get-Item C:\certs\example.com.key
  4. Überprüfen Sie den Inhalt des Zertifikats:

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

Konfigurationsreferenz

Feld Erforderlich Standard Description
logging.log_level Nein info Ausführlichkeit der Protokollierung:debug,,,info, warn error none
logging.log_to_file Nein true Protokolle in die Datei schreiben (true) oder stdout/stderr () false
capabilities.acm.enabled Nein false Aktivieren oder deaktivieren Sie die ACM-Funktion
certificates[].certificate_arn Ja ARN des zu exportierenden ACM-Zertifikats
certificates[].role_arn Ja Für den Anruf zu übernehmende IAM-Rolle ARN ExportCertificate
certificates[].certificate_path Ja Absoluter Pfad zum Schreiben der Zertifikatsdatei
certificates[].private_key_path Ja Absoluter Pfad zum Schreiben der privaten Schlüsseldatei
certificates[].chain_path Nein Absoluter Pfad zum Schreiben der Zertifikatskette. Wenn nicht angegeben, wird die Kette angehängt an certificate_path
certificates[].refresh_command Nein Befehl, der ausgeführt wird, nachdem die Zertifikatsdateien aktualisiert wurden. Muss ein absoluter Pfad sein
certificates[].certificate_and_chain_permission Nein 0600 Dateiberechtigungen für Zertifikat- und Kettendateien (modeLinux-Format)
certificates[].key_permission Nein 0600 Dateiberechtigungen für die private Schlüsseldatei (modeLinux-Format)

Protokollierung

Unter Linux meldet sich der Anbieter bei an/opt/aws/workload-credentials-provider/logs/acm_provider.log.

Unter Windows meldet sich der Anbieter anC:\ProgramData\AWS\WorkloadCredentialsProvider\logs\acm_provider.log. Ereignisse beim Starten und Beenden von Diensten werden auch im Windows-Anwendungsereignisprotokoll unter der Quelle aufgezeichnetAWSWorkloadCredentialsProvider-ACM.

Protokollrotation — Der Anbieter erstellt eine neue Protokolldatei, wenn die aktuelle Datei 10 MB erreicht, und speichert bis zu fünf archivierte Protokolldateien.

AWSDienstprotokollierung — Wenn der Anbieter anruftExportCertificate, wird dieser Anruf AWS CloudTrail mit einer User-Agent-Zeichenfolge aufgezeichnet, die Folgendes enthältaws-workload-credentials-provider. Die internen Operationen des Anbieters (Scheduler-Zyklen, Schreibvorgänge an Dateien) erscheinen nur im lokalen Protokoll.

Sie können die Protokollierung mit den log_to_file Einstellungen log_level und konfigurieren. Weitere Informationen finden Sie unter Konfigurationsreferenz.