

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á.

# Conectar-se a bancos de dados do Amazon Neptune usando a autenticação do IAM na linha de comando
<a name="iam-auth-connect-command-line"></a>

Ter uma ferramenta de linha de comando para enviar consultas ao cluster de banco de dados do Neptune é muito útil, conforme ilustrado em muitos dos exemplos desta documentação. A ferramenta [curl](https://curl.haxx.se/) é uma excelente opção para se comunicar com os endpoints do Neptune quando a autenticação do IAM não está habilitada.

**No entanto, para manter os dados seguros, é melhor habilitar a autenticação do IAM.**

Quando a autenticação do IAM está habilitada, cada solicitação deve ser [assinada usando o Signature versão 4 (Sig4)](https://docs.aws.amazon.com/general/latest/gr/signing-aws-api-requests.html). A ferramenta de linha de comando [awscurl](https://github.com/okigan/awscurl) de terceiros usa a mesma sintaxe que `curl` e pode assinar consultas usando a assinatura Sig4. A seção [Usar o `awscurl`](#iam-auth-connect-awscurl) abaixo explica como usar `awscurl` com segurança credenciais temporárias.

## Configurar uma ferramenta de linha de comando para usar HTTPS
<a name="iam-auth-connect-command-line-https"></a>

O Neptune exige que todas as conexões usem HTTPS. Qualquer ferramenta de linha de comando, como `curl` ou `awscurl`, precisa acessar os certificados apropriados, a fim de usar HTTPS. Desde que o `curl` e o `awscurl` possam localizar os certificados adequados, eles tratam as conexões HTTPS da mesma forma que as conexões HTTP, sem precisar de parâmetros extras. Os exemplos desta documentação se baseiam nesse cenário.

Para saber como obter esses certificados e como formatá-los corretamente em um armazenamento de certificados (CA) que o `curl` possa usar, consulte [SSL Certificate Verification](https://curl.haxx.se/docs/sslcerts.html) na documentação do `curl`.

Depois, você pode especificar o local desse armazenamento de certificados CA usando a variável de ambiente `CURL_CA_BUNDLE`. No Windows, o `curl` os procura automaticamente em um arquivo chamado `curl-ca-bundle.crt`. Ele procura primeiro no mesmo diretório `curl.exe` e, em seguida, em outros lugares no caminho. Para obter mais informações, consulte [SSL Certificate Verification](https://curl.haxx.se/docs/sslcerts.html).

## Usar `awscurl` com credenciais temporárias para se conectar com segurança a um cluster de banco de dados com a autenticação do IAM habilitada
<a name="iam-auth-connect-awscurl"></a>

A ferramenta [awscurl](https://github.com/okigan/awscurl) usa a mesma sintaxe que `curl`, mas também precisa de informações adicionais:
+ **`--access_key`**: uma chave de acesso válida. Se não for fornecida usando esse parâmetro, ela deverá ser fornecida na variável de ambiente `AWS_ACCESS_KEY_ID` ou em um arquivo de configuração.
+ **`--secret_key`**: a chave de acesso secreta que corresponde à chave de acesso. Se não for fornecida usando esse parâmetro, ela deverá ser fornecida na variável de ambiente `AWS_SECRET_ACCESS_KEY` ou em um arquivo de configuração.
+ **`--security_token`**: um token de sessão válido. Se não for fornecida usando esse parâmetro, ela deverá ser fornecida na variável de ambiente `AWS_SECURITY_TOKEN` ou em um arquivo de configuração.

No passado, era uma prática comum usar credenciais persistentes com `awscurl`, como credenciais de usuário do IAM ou até mesmo credenciais raiz, mas isso não é recomendado. Em vez disso, gere credenciais temporárias usando um dos [AWS Security Token Service (STS) APIs](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html) ou um de seus [AWS CLI wrappers](https://docs.aws.amazon.com/cli/latest/reference/sts/index.html).

É melhor colocar os valores `AccessKeyId`, `SecretAccessKey` e `SessionToken` são gerados pela chamada STS nas variáveis de ambiente apropriadas em sua sessão de shell e não em um arquivo de configuração. Então, quando o shell for encerrado, as credenciais serão automaticamente descartadas, diferente de um arquivo de configuração. Da mesma forma, não solicite para as credenciais temporárias uma duração maior do que você provavelmente precisará.

O exemplo a seguir mostra as etapas que você pode executar em um shell Linux para obter credenciais temporárias válidas por meia hora usando [sts assume-role](https://docs.aws.amazon.com/cli/latest/reference/sts/assume-role) e, depois, colocá-las em variáveis de ambiente em que `awscurl` pode encontrá-las:

```
aws sts assume-role \
    --duration-seconds 1800 \
    --role-arn "arn:aws:iam::{{(account-id)}}:role/{{(rolename)}}" \
    --role-session-name AWSCLI-Session > $output
AccessKeyId=$(echo $output | jq '.Credentials''.AccessKeyId')
SecretAccessKey=$(echo $output | jq '.Credentials''.SecretAccessKey')
SessionToken=$(echo $output | jq '.Credentials''.SessionToken')

export AWS_ACCESS_KEY_ID=$AccessKeyId
export AWS_SECRET_ACCESS_KEY=$SecretAccessKey
export AWS_SESSION_TOKEN=$SessionToken
```

Depois, você pode usar `awscurl` para fazer uma solicitação assinada para o cluster de banco de dados mais ou menos desta forma:

```
awscurl {{(your cluster endpoint)}}:8182/status \
    --region us-east-1 \
    --service neptune-db
```