

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
<a name="acm-certificate-automation"></a>

O AWS Workload Credentials Provider automatiza o uso de certificados TLS [públicos](https://docs.aws.amazon.com/acm/latest/userguide/acm-exportable-certificates.html) e [privados exportados](https://docs.aws.amazon.com/acm/latest/userguide/export-private.html) 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](acm-exportable-certificates.md) [Exportar um certificado privado](https://docs.aws.amazon.com/acm/latest/userguide/export-private.html).

O AWS Workload Credentials Provider é de código aberto. Para ver o código-fonte e as contribuições, consulte o [GitHub repositório.](https://github.com/aws/aws-workload-credentials-provider)

## Como funciona a automação de certificados
<a name="acm-cert-automation-refresh"></a>

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](#acm-cert-automation-reload).

## Pré-requisitos
<a name="acm-cert-automation-prereqs"></a>

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 (consulte[Permissões obrigatórias](#acm-cert-automation-permissions))
+ AWScredenciais disponíveis na instância (perfil da instância, variáveis de ambiente ou arquivo de credenciais)

## Instale o provedor
<a name="acm-cert-automation-install"></a>

------
#### [ 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](https://www.rust-lang.org/tools/install) o conjunto de ferramentas do Rust.

   ```
   cargo build --release
   ```

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

1. 

**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](#acm-cert-automation-configure). O instalador copia esse arquivo `/etc/aws-workload-credentials-provider/config.toml` automaticamente quando você usa a `--config` opção.

1. 

**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
   ```

1. 

**(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](https://www.rust-lang.org/tools/install) o conjunto de ferramentas do Rust.

   ```
   cargo build --release
   ```

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

1. 

**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](#acm-cert-automation-configure). O instalador copia esse arquivo `C:\ProgramData\AWS\WorkloadCredentialsProvider\config.toml` automaticamente quando você usa o `-Config` parâmetro.

1. 

**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
   ```

1. 

**(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
<a name="acm-cert-automation-configure"></a>

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
<a name="acm-cert-automation-reload"></a>

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
<a name="acm-cert-automation-permissions"></a>

### Credenciais básicas
<a name="acm-cert-automation-permissions-base"></a>

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 name="acm-cert-automation-permissions-export-role"></a>

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)
<a name="acm-cert-automation-permissions-refresh"></a>

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
<a name="acm-cert-automation-verify"></a>

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
   ```

1. **Analise os registros do provedor:**

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

1. **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
   ```

1. **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
   ```

1. **Analise os registros do provedor:**

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

1. **Verifique se os arquivos de certificado existem:**

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

1. **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
<a name="acm-cert-automation-config-reference"></a>


| 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
<a name="acm-cert-automation-logging"></a>

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

No Windows, o provedor faz login em`C:\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 fonte`AWSWorkloadCredentialsProvider-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 liga`ExportCertificate`, essa chamada é gravada AWS CloudTrail com uma string de agente de usuário contendo`aws-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](#acm-cert-automation-config-reference).