Conexión a las bases de datos de Amazon Neptune mediante la autenticación de IAM desde la línea de comandos - Amazon Neptune

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Conexión a las bases de datos de Amazon Neptune mediante la autenticación de IAM desde la línea de comandos

Es muy práctico disponer de una herramienta de línea de comandos para enviar consultas al clúster de base de datos de Neptune, como se ilustra en muchos de los ejemplos de esta documentación. La herramienta curl es una excelente opción para comunicarse con los puntos de conexión de Neptune si la autenticación de IAM no está habilitada.

Sin embargo, para mantener sus datos seguros, es mejor habilitar la autenticación de IAM.

Cuando la autenticación de IAM está habilitada, cada una de las solicitudes debe firmarse con Signature Version 4 (Sig4). La herramienta de línea de comandos awscurl de terceros utiliza la misma sintaxis que curl y puede firmar consultas mediante la firma Sig4. En la sección Uso de awscurl a continuación, se explica cómo utilizar awscurl de forma segura con credenciales temporales.

Configuración de una herramienta de línea de comandos para usar HTTPS

Neptune requiere que todas las conexiones usen HTTPS. Cualquier herramienta de línea de comandos, como curl o awscurl, necesita acceso a los certificados correspondientes para poder usar HTTPS. Mientras curl o awscurl puedan localizar los certificados apropiados, gestionan las conexiones HTTPS igual que las HTTP, sin necesidad de parámetros adicionales. Los ejemplos de esta documentación se basan en ese escenario.

Para saber cómo obtener dichos certificados y cómo formatearlos correctamente en un almacén de certificados de autoridad de certificación (CA) que curl pueda utilizar, consulte SSL Certificate Verification en la documentación de curl.

A continuación, puede especificar la ubicación de este almacén de certificados de CA mediante la variable de entorno CURL_CA_BUNDLE. En Windows, curl lo busca de forma automática en un archivo llamado curl-ca-bundle.crt. Primero busca en el mismo directorio que curl.exe y después en el resto de sitios de la ruta. Para obtener más información, consulte Certificados SSL.

Uso de awscurl con credenciales temporales para conectarse de forma segura a un clúster de base de datos con la autenticación de IAM habilitada

La herramienta awscurl usa la misma sintaxis que curl, pero también necesita información adicional:

  • --access_key: una clave de acceso válida. Si no se proporciona con este parámetro, debe proporcionarse en la variable de entorno AWS_ACCESS_KEY_ID o en un archivo de configuración.

  • --secret_key: clave de acceso secreta que corresponde a la clave de acceso. Si no se proporciona con este parámetro, debe proporcionarse en la variable de entorno AWS_SECRET_ACCESS_KEY o en un archivo de configuración.

  • --security_token: un token de sesión válido. Si no se proporciona con este parámetro, debe proporcionarse en la variable de entorno AWS_SECURITY_TOKEN o en un archivo de configuración.

En el pasado, era una práctica habitual utilizar credenciales persistentes con awscurl, como las credenciales de usuario de IAM o incluso las credenciales raíz, pero no se recomienda. En su lugar, genere credenciales temporales utilizando uno de los servicios de token de AWS seguridad (STS) APIs o uno de sus contenedores.AWS CLI

Es mejor colocar los valores AccessKeyId, SecretAccessKey y SessionToken que devuelve la llamada de STS en las variables de entorno adecuadas de la sesión del intérprete de comandos, en lugar de en un archivo de configuración. A continuación, cuando el intérprete de comandos finaliza, las credenciales se descartan automáticamente, lo que no ocurre con un archivo de configuración. Del mismo modo, no solicite una duración mayor para las credenciales temporales de la que es probable que necesite.

El siguiente ejemplo muestra los pasos que puede seguir en un intérprete de comandos de Linux para obtener credenciales temporales que sean válidas durante media hora utilizando sts assume-role y, a continuación, colocarlas en variables de entorno donde awscurl pueda encontrarlas:

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

A continuación, puede utilizar awscurl para realizar una solicitud firmada a su clúster de base de datos de una forma similar a la siguiente:

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