View a markdown version of this page

AWSFournisseur d'identifiants de charge de travail - AWSCertificate Manager

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

AWSFournisseur d'identifiants de charge de travail

Le fournisseur d'informations d'identification de AWS charge de travail automatise l'utilisation des certificats TLS publics et privés exportés depuis ACM. Le fournisseur récupère régulièrement les certificats et leurs clés privées, les écrit dans des chemins configurés et exécute éventuellement une commande pour recharger les services dépendants tels que les serveurs Web.

Vous pouvez utiliser le fournisseur d'informations d'identification de charge de travail dans les environnements informatiques suivants :

  • Amazon Elastic Compute Cloud (Amazon EC2)

  • On-premises serveurs avec AWS informations d'identification

Le fournisseur d'informations d'identification de charge de travail utilise l'hypothèse du rôle IAM pour récupérer les certificats. Il s'exécute nativement en tant que service système sous Linux et Windows sous un utilisateur dédié à faibles privilèges et écrit des fichiers de certificat avec des autorisations restreintes.

Important

Seuls les certificats exportables peuvent être utilisés auprès de ce fournisseur. Pour plus d'informations, reportez-vous à AWS Certificate Manager certificats publics exportables la section Exportation d'un certificat privé.

Le fournisseur d'informations d'identification de AWS charge de travail est open source. Pour le code source et les contributions, consultez le GitHub référentiel.

Comment fonctionne l'automatisation des certificats

Le fournisseur utilise un planificateur qui actualise chaque certificat configuré à intervalles réguliers :

  • L'intervalle de rafraîchissement est de 24 heures.

  • À chaque cycle, le fournisseur exporte le certificat, le compare aux fichiers sur le disque et écrit de nouveaux fichiers uniquement si le contenu a changé.

  • Lorsque les fichiers de certificats sont mis à jour, le fichier configuré refresh_command s'exécute (par exemple, pour recharger NGINX ou Apache).

  • Si le contenu du certificat n'a pas changé, la commande d'actualisation est ignorée.

Le fournisseur effectue une actualisation initiale à chaque démarrage du système et peu de temps après le démarrage du service, avec une légère instabilité aléatoire pour éviter les appels d'API synchronisés lorsque plusieurs fournisseurs démarrent simultanément sur le parc.

Le fournisseur prend également en charge le rechargement dynamique de la configuration, ce qui vous permet d'ajouter, de supprimer ou de modifier des certificats sans les réinstaller. Pour de plus amples informations, veuillez consulter Rechargement dynamique de la configuration.

Conditions préalables

Avant d'installer le fournisseur, assurez-vous que vous disposez des éléments suivants :

  • Une instance Linux avec systemd (Amazon Linux 2023, Ubuntu 20.04+ ou RHEL 8+)

  • Ou une instance Windows exécutant Windows Server 2016 ou version ultérieure avec PowerShell 5.1 ou version ultérieure

  • Accès administrateur pour exécuter le programme d'installation

  • Un certificat exportable dans ACM

  • Un rôle IAM avec des autorisations d'exportation ACM (voir) Autorisations requises

  • AWSinformations d'identification disponibles sur l'instance (profil d'instance, variables d'environnement ou fichier d'informations d'identification)

Installez le fournisseur

Linux
  1. Construisez le fournisseur

    Créez le binaire du fournisseur à partir de la source ou procurez-vous le binaire prédéfini pour votre plateforme. Suivez les instructions de la section Installer Rust pour installer la chaîne d'outils Rust.

    cargo build --release

    Le fichier exécutable se trouve àtarget/release/aws-workload-credentials-provider.

  2. Création d'un fichier de configuration

    Créez un fichier de configuration TOML avec les détails de votre certificat. Pour obtenir des exemples, consultez Configuration du fournisseur. Le programme d'installation copie /etc/aws-workload-credentials-provider/config.toml automatiquement ce fichier lorsque vous utilisez l'--configoption.

  3. Exécutez le programme d'installation d’.

    Exécutez le script d'installation en tant que root :

    cd aws_workload_credentials_provider_common/configuration sudo ./install --config /path/to/your/config.toml
  4. (Facultatif) FournirAWSinformations d’identification

    Sur les instances Amazon EC2 associées à un profil d'instance, le fournisseur obtient automatiquement les informations d'identification. Pour les autres environnements, créez un fichier de remplacement systemd pour injecter les informations d'identification :

    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. Créez ou obtenez le fournisseur

    Créez le binaire du fournisseur à partir du code source pour Windows ou procurez-vous le binaire prédéfini. Suivez les instructions de la section Installer Rust pour installer la chaîne d'outils Rust.

    cargo build --release

    Le fichier exécutable se trouve àtarget\release\aws-workload-credentials-provider.exe.

  2. Création d'un fichier de configuration

    Créez un fichier de configuration TOML avec les détails de votre certificat. Pour obtenir des exemples, consultez Configuration du fournisseur. Le programme d'installation copie C:\ProgramData\AWS\WorkloadCredentialsProvider\config.toml automatiquement ce fichier lorsque vous utilisez le -Config paramètre.

  3. Exécutez le programme d'installation d’.

    Exécutez le script d'installation en tant qu'administrateur :

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

    Pour effectuer l'installation sans démarrer le service, procédez comme suit :

    .\install.ps1 -Config C:\path\to\your\config.toml -NoStart
  4. (Facultatif) FournirAWSinformations d’identification

    Sur les instances Amazon EC2 associées à un profil d'instance, le fournisseur obtient automatiquement les informations d'identification via IMDS. Pour les autres environnements, définissez des variables d'environnement pour le service via le registre 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

Configuration du fournisseur

Créez un fichier de configuration TOML avec les détails de votre certificat. Le programme d'installation copie ce fichier /etc/aws-workload-credentials-provider/config.toml lorsque vous utilisez l'--configoption.

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

Lorsqu'elle chain_path est omise, la chaîne de certificats est ajoutée au fichier à l'adresse certificate_path pour produire un fichier de chaîne complète. Ceci est compatible avec les serveurs Web qui attendent un seul fichier contenant le certificat et sa chaîne.

Rechargement dynamique de la configuration

Vous pouvez mettre à jour la configuration du fournisseur sans la réinstaller en exécutant la acm reload commande. Cela valide la nouvelle configuration, met à jour les autorisations pour qu'elles correspondent aux nouveaux chemins de certificat et redémarre le service.

Les certificats supprimés de la configuration cessent d'être actualisés. Les nouveaux certificats commencent immédiatement leur première exportation. Chaque certificat s'exécute en tant que tâche indépendante, de sorte que l'échec de l'un d'entre eux n'affecte pas les autres.

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

Autorisations requises

Informations d'identification de base

Les informations d'identification de base du fournisseur (profil d'instance ou environnement) doivent être en mesure d'assumer le rôle spécifié dans chaque certificat role_arn :

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

Rôle d'exportation de certificats

Le rôle spécifié dans role_arn nécessite les autorisations suivantes :

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

La politique de confiance du rôle doit permettre à l'identité de base du fournisseur de l'assumer :

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

Actualiser les autorisations de commande (Linux)

Sous Linux, le fournisseur exécute la configuration refresh_command viasudo. Le programme d'installation génère une entrée sudoers /etc/sudoers.d/aws-workload-credentials-provider qui permet à l'utilisateur du fournisseur d'exécuter la commande configurée exactement sans demander de mot de passe.

Important

Assurez-vous d'/etc/sudoersinclure le /etc/sudoers.d répertoire. Le programme d'installation avertit si cette directive d'inclusion n'est pas présente. Sans cela, le fichier sudoers généré n'a aucun effet et les commandes d'actualisation échoueront.

Sous Windows, le fournisseur déclenche la tâche refresh_command en tant que tâche planifiée SYSTEM.

Vérifier l'installation

Après l'installation, vérifiez que le fournisseur fonctionne et que les certificats sont en cours d'écriture :

Linux
  1. Vérifiez l'état du service :

    sudo systemctl status aws-workload-credentials-provider-acm
  2. Consultez les journaux des fournisseurs :

    cat /opt/aws/workload-credentials-provider/logs/acm_provider.log
  3. Vérifiez que les fichiers de certificat existent :

    ls -la /etc/pki/tls/certs/example.com.crt ls -la /etc/pki/tls/private/example.com.key
  4. Validez le contenu du certificat :

    openssl x509 -in /etc/pki/tls/certs/example.com.crt -noout -subject -dates
Windows
  1. Vérifiez l'état du service :

    Get-Service AWSWorkloadCredentialsProvider-ACM | Format-List Name, Status, StartType
  2. Consultez les journaux des fournisseurs :

    Get-Content "C:\ProgramData\AWS\WorkloadCredentialsProvider\logs\acm_provider.log" -Tail 20
  3. Vérifiez que les fichiers de certificat existent :

    Get-Item C:\certs\example.com.crt Get-Item C:\certs\example.com.key
  4. Validez le contenu du certificat :

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

Référence de configuration

Champ Obligatoire Par défaut Description
logging.log_level Non info Verbosité de journalisation :debug,,info, warn error none
logging.log_to_file Non true Écrire les journaux dans le fichier (true) ou stdout/stderr (false)
capabilities.acm.enabled Non false Activer ou désactiver la fonctionnalité ACM
certificates[].certificate_arn Oui ARN du certificat ACM à exporter
certificates[].role_arn Oui Rôle IAM (ARN) à assumer pour l'appel ExportCertificate
certificates[].certificate_path Oui Chemin absolu pour écrire le fichier de certificat
certificates[].private_key_path Oui Chemin absolu pour écrire le fichier de clé privée
certificates[].chain_path Non Chemin absolu pour écrire la chaîne de certificats. En cas d'omission, la chaîne est ajoutée à certificate_path
certificates[].refresh_command Non Commande à exécuter après la mise à jour des fichiers de certificats. Doit être un chemin absolu
certificates[].certificate_and_chain_permission Non 0600 Autorisations de fichier pour les fichiers de certificat et de chaîne (modeformat Linux)
certificates[].key_permission Non 0600 Autorisations de fichier pour le fichier de clé privée (modeformat Linux)

Logging

Sous Linux, le fournisseur se connecte à/opt/aws/workload-credentials-provider/logs/acm_provider.log.

Sous Windows, le fournisseur se connecte àC:\ProgramData\AWS\WorkloadCredentialsProvider\logs\acm_provider.log. Les événements de démarrage et d'arrêt du service sont également enregistrés dans le journal des événements des applications Windows sous la sourceAWSWorkloadCredentialsProvider-ACM.

Rotation des journaux : le fournisseur crée un nouveau fichier journal lorsque le fichier actuel atteint 10 Mo et stocke jusqu'à cinq fichiers journaux archivés.

AWSjournalisation des services — Lorsque le fournisseur appelleExportCertificate, cet appel est enregistré AWS CloudTrail avec une chaîne d'agent utilisateur contenantaws-workload-credentials-provider. Les opérations internes du fournisseur (cycles du planificateur, écritures de fichiers) apparaissent uniquement dans le journal local.

Vous pouvez configurer la journalisation à l'aide log_level des log_to_file paramètres et. Pour de plus amples informations, veuillez consulter Référence de configuration.