View a markdown version of this page

AWSProvedor de credenciais de carga de trabalho - AWSCertificate Manager

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

AWSProvedor de credenciais de carga de trabalho

O AWS Workload Credentials Provider automatiza o uso de certificados TLS públicos e privados exportados do ACM. O provedor recupera periodicamente os certificados e suas chaves privadas, os grava nos caminhos configurados e, opcionalmente, executa um comando para recarregar serviços dependentes, como servidores web.

Você pode usar o Workload Credentials Provider com os seguintes ambientes computacionais:

  • Amazon Elastic Compute Cloud (Amazon EC2)

  • On-premises servidores com AWS credenciais

O provedor de credenciais de carga de trabalho usa a suposição de função do IAM para recuperar certificados. Ele é executado nativamente como um serviço de sistema no Linux e no Windows sob um usuário dedicado de baixos privilégios e grava arquivos de certificado com permissões restritas.

Importante

Somente certificados exportáveis podem ser usados com esse provedor. Para obter mais informações, consulte AWS Certificate Manager certificados públicos exportáveis Exportar um certificado privado.

O AWS Workload Credentials Provider é de código aberto. Para ver o código-fonte e as contribuições, consulte o GitHub repositório.

Como funciona a automação de certificados

O provedor usa um agendador que atualiza cada certificado configurado em um intervalo fixo:

  • O intervalo de atualização é de 24 horas.

  • Em cada ciclo, o provedor exporta o certificado, o compara com os arquivos no disco e grava novos arquivos somente se o conteúdo tiver sido alterado.

  • Quando os arquivos de certificado são atualizados, o configurado refresh_command é executado (por exemplo, para recarregar o NGINX ou o Apache).

  • Se o conteúdo do certificado não tiver sido alterado, o comando de atualização será ignorado.

O provedor realiza uma atualização inicial em cada inicialização do sistema e logo após a inicialização do serviço, com uma pequena instabilidade aleatória para evitar chamadas de API sincronizadas quando vários provedores iniciam simultaneamente em toda a frota.

O provedor também oferece suporte ao recarregamento dinâmico da configuração, permitindo que você adicione, remova ou modifique certificados sem reinstalar. Para obter mais informações, consulte Recarga dinâmica da configuração.

Pré-requisitos

Antes de instalar o provedor, verifique se você tem o seguinte:

  • Uma instância Linux com systemd (Amazon Linux 2023, Ubuntu 20.04+ ou RHEL 8+)

  • Ou uma instância do Windows executando o Windows Server 2016 ou posterior com PowerShell 5.1 ou posterior

  • Acesso de administrador para executar o instalador

  • Um certificado exportável no ACM

  • Uma função do IAM com permissões de exportação do ACM (consultePermissões obrigatórias)

  • AWScredenciais disponíveis na instância (perfil da instância, variáveis de ambiente ou arquivo de credenciais)

Instale o provedor

Linux
  1. Crie o provedor

    Crie o binário do provedor a partir da fonte ou obtenha o binário pré-criado para sua plataforma. Siga as instruções em Instalar o Rust para instalar o conjunto de ferramentas do Rust.

    cargo build --release

    O executável está em. target/release/aws-workload-credentials-provider

  2. Criar um arquivo de configuração

    Crie um arquivo de configuração TOML com os detalhes do seu certificado. Para obter exemplos, consulte Configurar o provedor. O instalador copia esse arquivo /etc/aws-workload-credentials-provider/config.toml automaticamente quando você usa a --config opção.

  3. Execute o instalador do .

    Execute o script de instalação como root:

    cd aws_workload_credentials_provider_common/configuration sudo ./install --config /path/to/your/config.toml
  4. (Opcional) ForneçaAWScredenciais

    Nas instâncias do Amazon EC2 com um perfil de instância anexado, o provedor obtém as credenciais automaticamente. Para outros ambientes, crie um arquivo de substituição do systemd para injetar credenciais:

    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. Crie ou obtenha o provedor

    Crie o binário do provedor a partir do código-fonte para Windows ou obtenha o binário pré-criado. Siga as instruções em Instalar o Rust para instalar o conjunto de ferramentas do Rust.

    cargo build --release

    O executável está em. target\release\aws-workload-credentials-provider.exe

  2. Criar um arquivo de configuração

    Crie um arquivo de configuração TOML com os detalhes do seu certificado. Para obter exemplos, consulte Configurar o provedor. O instalador copia esse arquivo C:\ProgramData\AWS\WorkloadCredentialsProvider\config.toml automaticamente quando você usa o -Config parâmetro.

  3. Execute o instalador do .

    Execute o script de instalação como administrador:

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

    Para instalar sem iniciar o serviço:

    .\install.ps1 -Config C:\path\to\your\config.toml -NoStart
  4. (Opcional) ForneçaAWScredenciais

    Nas instâncias do Amazon EC2 com um perfil de instância anexado, o provedor obtém credenciais automaticamente por meio do IMDS. Para outros ambientes, defina variáveis de ambiente para o serviço por meio do Registro do 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

Configurar o provedor

Crie um arquivo de configuração TOML com os detalhes do seu certificado. O instalador copia esse arquivo para /etc/aws-workload-credentials-provider/config.toml quando você usa a --config opção.

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 é omitida, a cadeia de certificados é anexada ao arquivo em certificate_path para produzir um arquivo de cadeia completa. Isso é compatível com servidores web que esperam um único arquivo contendo o certificado e sua cadeia.

Recarga dinâmica da configuração

Você pode atualizar a configuração do provedor sem reinstalar executando o acm reload comando. Isso valida a nova configuração, atualiza as permissões para corresponder aos novos caminhos do certificado e reinicia o serviço.

Os certificados removidos da configuração param de ser atualizados. Os novos certificados iniciam sua primeira exportação imediatamente. Cada certificado é executado como uma tarefa independente, portanto, uma falha em um não afeta os outros.

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

Permissões obrigatórias

Credenciais básicas

As credenciais básicas do provedor (perfil da instância ou ambiente) devem ser capazes de assumir a função especificada em cada certificado: role_arn

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

Função de exportação de certificados

A função especificada em role_arn requer as seguintes permissões:

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

A política de confiança da função deve permitir que a identidade básica do provedor a assuma:

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

Atualizar permissões de comando (Linux)

No Linux, o provedor executa o configurado refresh_command por meio sudo de. O instalador gera uma entrada sudoers em /etc/sudoers.d/aws-workload-credentials-provider que permite que o usuário do provedor execute o comando configurado exato sem um prompt de senha.

Importante

Certifique-se de /etc/sudoers incluir o /etc/sudoers.d diretório. O instalador avisa se essa diretiva de inclusão não estiver presente. Sem ele, o arquivo sudoers gerado não tem efeito e os comandos de atualização falharão.

No Windows, o provedor aciona a tarefa agendada refresh_command como sistema.

Verificar a instalação

Após a instalação, verifique se o provedor está em execução e se os certificados estão sendo gravados:

Linux
  1. Verifique o status do serviço:

    sudo systemctl status aws-workload-credentials-provider-acm
  2. Analise os registros do provedor:

    cat /opt/aws/workload-credentials-provider/logs/acm_provider.log
  3. Verifique se os arquivos de certificado existem:

    ls -la /etc/pki/tls/certs/example.com.crt ls -la /etc/pki/tls/private/example.com.key
  4. Valide o conteúdo do certificado:

    openssl x509 -in /etc/pki/tls/certs/example.com.crt -noout -subject -dates
Windows
  1. Verifique o status do serviço:

    Get-Service AWSWorkloadCredentialsProvider-ACM | Format-List Name, Status, StartType
  2. Analise os registros do provedor:

    Get-Content "C:\ProgramData\AWS\WorkloadCredentialsProvider\logs\acm_provider.log" -Tail 20
  3. Verifique se os arquivos de certificado existem:

    Get-Item C:\certs\example.com.crt Get-Item C:\certs\example.com.key
  4. Valide o conteúdo do certificado:

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

Referência da configuração

Campo Obrigatório Padrão Description
logging.log_level Não info Detalhamento do registro:debug,,,info, warn error none
logging.log_to_file Não true Gravar registros no arquivo (true) ou stdout/stderr (false)
capabilities.acm.enabled Não false Ativar ou desativar o recurso ACM
certificates[].certificate_arn Sim ARN do certificado ACM a ser exportado
certificates[].role_arn Sim Função do IAM (ARN) a ser assumida para a chamada ExportCertificate
certificates[].certificate_path Sim Caminho absoluto para gravar o arquivo de certificado
certificates[].private_key_path Sim Caminho absoluto para gravar o arquivo de chave privada
certificates[].chain_path Não Caminho absoluto para escrever a cadeia de certificados. Se omitida, a cadeia é anexada a certificate_path
certificates[].refresh_command Não Comando a ser executado após a atualização dos arquivos de certificado. Deve ser um caminho absoluto
certificates[].certificate_and_chain_permission Não 0600 Permissões de arquivo para arquivos cert e chain (modeformato Linux)
certificates[].key_permission Não 0600 Permissões de arquivo para o arquivo de chave privada (modeformato Linux)

Registro em log

No Linux, o provedor faz login em/opt/aws/workload-credentials-provider/logs/acm_provider.log.

No Windows, o provedor faz login emC:\ProgramData\AWS\WorkloadCredentialsProvider\logs\acm_provider.log. Os eventos de início e parada do serviço também são registrados no Registro de Eventos de Aplicativos do Windows abaixo da fonteAWSWorkloadCredentialsProvider-ACM.

Rotação de registros — o provedor cria um novo arquivo de log quando o arquivo atual atinge 10 MB e armazena até cinco arquivos de log arquivados.

AWSregistro de serviço — Quando o provedor ligaExportCertificate, essa chamada é gravada AWS CloudTrail com uma string de agente de usuário contendoaws-workload-credentials-provider. As operações internas do provedor (ciclos do agendador, gravações de arquivos) aparecem somente no registro local.

Você pode configurar o registro com log_level as log_to_file configurações e. Para obter mais informações, consulte Referência da configuração.