

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.

# Connexion aux bases de données Amazon Neptune à l'aide de l'authentification IAM depuis la ligne de commande
<a name="iam-auth-connect-command-line"></a>

Il est particulièrement utile d'avoir recours à un outil en ligne de commande pour envoyer des requêtes à votre cluster de bases de données Neptune, comme l'illustrent de nombreux exemples dans cette documentation. L'outil [curl](https://curl.haxx.se/) est une excellente option pour communiquer avec les points de terminaison Neptune si l'authentification IAM n'est pas activée.

**Toutefois, pour garantir la sécurité de vos données, il est préférable d'activer l'authentification IAM.**

Lorsque l'authentification de base de données IAM est activée, chaque demande doit être [signée à l'aide de Signature Version 4 (Sig4)](https://docs.aws.amazon.com/general/latest/gr/signing-aws-api-requests.html). L'outil de ligne de commande tiers [awscurl](https://github.com/okigan/awscurl) utilise la même syntaxe que `curl` et peut signer les requêtes à l'aide de la signature Sig4. La section [Utilisation de `awscurl`](#iam-auth-connect-awscurl) ci-dessous explique comment utiliser `awscurl` en toute sécurité avec des informations d'identification temporaires.

## Configuration d'un outil de ligne de commande pour utiliser le protocole HTTPS
<a name="iam-auth-connect-command-line-https"></a>

Neptune exige que toutes les connexions utilisent le protocole HTTPS. Tout outil de ligne de commande comme `curl` ou `awscurl` doit accéder aux certificats appropriés pour pouvoir utiliser le protocole HTTPS. Dans la mesure où `curl` ou `awscurl` peut localiser les certificats appropriés, il gère les connexions HTTPS comme des connexions HTTP, sans paramètres supplémentaires. Les exemples de cette documentation sont basés sur ce scénario.

Pour découvrir comment obtenir ces certificats et comment les mettre correctement en forme dans un magasin de certificats CA utilisable par `curl`, consultez [SSL Certificate Verification (Vérification des certificats SSL)](https://curl.haxx.se/docs/sslcerts.html) dans la documentation `curl`.

Vous pouvez ensuite spécifier l'emplacement de ce magasin de certificats CA à l'aide de la variable d'environnement `CURL_CA_BUNDLE`. Sous Windows, `curl` le recherche automatiquement dans un fichier nommé `curl-ca-bundle.crt`. Il examine d'abord dans le même répertoire que `curl.exe`, puis ailleurs sur le chemin. Pour plus d’informations, consultez [SSL Certificate Verification (Vérification des certificats SSL)](https://curl.haxx.se/docs/sslcerts.html).

## Utilisation d'informations d'identification temporaires `awscurl` pour se connecter en toute sécurité à un cluster de bases de données avec l'authentification IAM activée
<a name="iam-auth-connect-awscurl"></a>

L'outil [awscurl](https://github.com/okigan/awscurl) utilise la même syntaxe que `curl`, mais nécessite également des informations supplémentaires :
+ **`--access_key`** : clé d'accès valide. Si cet élément n'est pas fourni à l'aide de ce paramètre, il doit être fourni dans la variable d'environnement `AWS_ACCESS_KEY_ID` ou dans un fichier de configuration.
+ **`--secret_key`** : clé secrète valide qui correspond à la clé d'accès. Si cet élément n'est pas fourni à l'aide de ce paramètre, il doit être fourni dans la variable d'environnement `AWS_SECRET_ACCESS_KEY` ou dans un fichier de configuration.
+ **`--security_token`** : jeton de session valide. Si cet élément n'est pas fourni à l'aide de ce paramètre, il doit être fourni dans la variable d'environnement `AWS_SECURITY_TOKEN` ou dans un fichier de configuration.

Auparavant, il était courant d'utiliser des informations d'identification persistantes avec `awscurl`, telles que les informations d'identification utilisateur IAM ou même les informations d'identification root, mais cela n'est pas recommandé. Générez plutôt des informations d'identification temporaires à l'aide de l'un des [AWS Security Token Service (STS) APIs](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html) ou de l'un de ses [AWS CLI wrappers.](https://docs.aws.amazon.com/cli/latest/reference/sts/index.html)

Il est préférable de placer les valeurs `AccessKeyId`, `SecretAccessKey` et `SessionToken` renvoyées par l'appel STS dans les variables d'environnement appropriées de la session shell plutôt que dans un fichier de configuration. Lorsque le shell se terminera, les informations d'identification seront automatiquement supprimées, ce qui n'est pas le cas avec un fichier de configuration. De même, ne demandez pas une durée plus longue que celle dont vous aurez probablement besoin pour les informations d'identification temporaires.

L'exemple suivant présente les étapes que vous pouvez suivre dans un shell Linux pour obtenir des informations d'identification temporaires valables pendant une demi-heure à l'aide de [sts assume-role](https://docs.aws.amazon.com/cli/latest/reference/sts/assume-role), puis pour les placer dans des variables d'environnement où `awscurl` peux les trouver :

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

Vous pouvez ensuite utiliser `awscurl` pour envoyer une demande signée au cluster de bases de données comme suit :

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