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
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 awscurlcurl
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 Verificationcurl
.
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 awscurlcurl
, 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 entornoAWS_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 entornoAWS_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 entornoAWS_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