Connexion aux bases de données Amazon Neptune à l'aide de l'authentification IAM depuis la ligne de commande - Amazon Neptune

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

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 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). L'outil de ligne de commande tiers awscurl utilise la même syntaxe que curl et peut signer les requêtes à l'aide de la signature Sig4. La section Utiliser 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

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

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

L'outil 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 ou de l'un de ses AWS CLI wrappers.

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, 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=$(cat $output | jq '.Credentials''.AccessKeyId') SecretAccessKey=$(cat $output | jq '.Credentials''.SecretAccessKey') SessionToken=$(cat $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