

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 bases de datos de Amazon Neptune mediante la autenticación de IAM desde la línea de comandos
<a name="iam-auth-connect-command-line"></a>

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](https://curl.haxx.se/) 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)](https://docs.aws.amazon.com/general/latest/gr/signing-aws-api-requests.html). La herramienta de línea de comandos [awscurl](https://github.com/okigan/awscurl) de terceros utiliza la misma sintaxis que `curl` y puede firmar consultas mediante la firma Sig4. En la sección [Uso de `awscurl`](#iam-auth-connect-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
<a name="iam-auth-connect-command-line-https"></a>

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](https://curl.haxx.se/docs/sslcerts.html) 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](https://curl.haxx.se/docs/sslcerts.html).

## 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
<a name="iam-auth-connect-awscurl"></a>

La herramienta [awscurl](https://github.com/okigan/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](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html) o uno de sus contenedores.AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/sts/index.html)

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](https://docs.aws.amazon.com/cli/latest/reference/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=$(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
```

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