

# Credenciais de fornecimento com um processo externo na AWS CLI
<a name="cli-configure-sourcing-external"></a>

**Atenção**  
Este tópico discute as credenciais de fornecimento de um processo externo. Isso poderá ser um risco de segurança se o comando para gerar as credenciais se tornar acessível por processos ou usuários não aprovados. Recomendamos que você use as alternativas seguras compatíveis fornecidas pela AWS CLI e pela AWS para reduzir o risco de comprometer suas credenciais. Certifique-se de proteger o arquivo `config` e todos os arquivos e ferramentas com suporte para impedir a divulgação.  
Certifique-se de que sua ferramenta de credenciais personalizada não grave informações secretas em `StdErr` porque os SDKs e a AWS CLI podem capturar e registrar essas informações, possivelmente expondo-as a usuários não autorizados.

Se você tiver um método para gerar ou procurar credenciais não compatíveis diretamente com a AWS CLI, poderá configurar a AWS CLI para usá-lo definindo a configuração `credential_process` no arquivo `config`. 

Por exemplo, você pode incluir uma entrada semelhante à seguinte no arquivo `config`.

```
[profile developer]
credential_process = /opt/bin/awscreds-custom --username helen
```

**Sintaxe**  
Para criar essa string de uma forma compatível com qualquer sistema operacional, siga estas regras:
+ Se o caminho ou o nome do arquivo contiver um espaço, coloque o caminho completo e o nome do arquivo entre aspas duplas (“ ”). O caminho e o nome do arquivo podem ter somente os caracteres: A–Z a–z 0–9 - \$1 . espaço
+ Se um nome de parâmetro ou um valor de parâmetro tiver um espaço, coloque esse elemento entre aspas duplas (“ ”). Coloque somente o nome ou o valor entre aspas, não o par.
+ Não inclua variáveis de ambiente nas strings. Por exemplo, não inclua `$HOME` ou `%USERPROFILE%`.
+ Não especifique a pasta base como `~`. É necessário especificar o caminho completo.

**Exemplo para Windows**

```
credential_process = "C:\Path\To\credentials.cmd" parameterWithoutSpaces "parameter with spaces"
```

**Exemplo para Linux ou macOS**

```
credential_process = "/Users/Dave/path/to/credentials.sh" parameterWithoutSpaces "parameter with spaces"
```

**Saída esperada do programa de credenciais**

A AWS CLI executa o comando conforme especificado no perfil e lê os dados de `STDOUT`. O comando especificado deverá gerar a saída JSON em `STDOUT` que corresponde à sintaxe a seguir.

```
{
  "Version": 1,
  "AccessKeyId": "an AWS access key",
  "SecretAccessKey": "your AWS secret access key",
  "SessionToken": "the AWS session token for temporary credentials", 
  "Expiration": "ISO8601 timestamp when the credentials expire"
}
```

**nota**  
No momento da elaboração deste documento, a chave `Version` deve ser definida como `1`. Isso pode aumentar ao longo do tempo conforme a estrutura evolui.

A chave `Expiration` é um timestamp no formato [ISO8601](https://en.wikipedia.org/wiki/ISO_8601). Se a chave `Expiration` não estiver presente na saída da ferramenta, a CLI vai supor que as credenciais são em longo prazo que não são atualizadas. Caso contrário, as credenciais serão consideradas temporárias e serão atualizadas automaticamente com a nova execução do comando `credential_process` antes de expirarem.

**nota**  
A AWS CLI ***não*** armazena em cache as credenciais do processo como faz com credenciais assume-role. Se o armazenamento em cache for obrigatório, implemente-o no processo externo.

O processo externo pode retornar um código de retorno diferente de zero para indicar que ocorreu um erro ao recuperar as credenciais.