Uso de credenciales temporales para conectarse a Amazon Neptune - 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.

Uso de credenciales temporales para conectarse a Amazon Neptune

Amazon Neptune admite la autenticación de IAM con credenciales temporales.

Puede utilizar un rol asumido para la autenticación mediante una política de autenticación de IAM, como una de las políticas de ejemplo de las secciones anteriores.

Si está utilizando credenciales temporales, debe especificar AWS_SESSION_TOKEN además de AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY y SERVICE_REGION.

nota

Las credenciales temporales caducan después de un intervalo especificado, incluido el token de sesión.

Tiene que actualizar el token de sesión cuando solicite nuevas credenciales. Para obtener más información, consulte Uso de credenciales de seguridad temporales para solicitar acceso a los recursos. AWS

En las siguientes secciones se describe cómo permitir el acceso y recuperar las credenciales temporales.

Para realizar la autenticación mediante credenciales temporales
  1. Cree un rol de IAM con permiso para obtener acceso a un clúster de Neptune. Para obtener información acerca de la creación de esta función, consulta Uso de diferentes tipos de políticas de IAM para controlar el acceso a Neptune.

  2. Añada una relación de confianza al rol que permite el acceso a las credenciales.

    Recupere las credenciales temporales, incluidas las credenciales AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY y AWS_SESSION_TOKEN.

  3. Conéctese al clúster de Neptune y firme las solicitudes con las credenciales temporales. Para obtener más información acerca de la conexión y la firma de solicitudes, consulte Conexión a la base de datos de Amazon Neptune mediante autenticación AWS Identity and Access Management.

Hay varios métodos para recuperar credenciales temporales según el entorno.

Obtención de credenciales temporales usando la AWS CLI

Para obtener las credenciales con AWS Command Line Interface (AWS CLI), primero debe agregar una relación de confianza que conceda permiso para asumir el rol al AWS usuario que ejecutará el AWS CLI comando.

Añada la siguiente relación de confianza al rol de autenticación de IAM de Neptune. Si no tiene un rol de autenticación de IAM de Neptune, consulte Uso de diferentes tipos de políticas de IAM para controlar el acceso a Neptune.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:user/test" }, "Action": "sts:AssumeRole" } ] }

Para obtener información sobre cómo añadir la relación de confianza a la función, consulte Edición de la relación de confianza para una función existente en la guía de administración de AWS Directory Service .

Si la política de Neptune aún no está asociada a un rol, cree un nuevo rol. Asocie la política de autenticación de IAM de Neptune y, a continuación, añada la política de confianza. Para obtener información sobre la creación de una función nueva, consulte Creación de una función nueva.

nota

En las siguientes secciones se presupone que lo tiene AWS CLI instalado.

Para ejecutar el AWS CLI manualmente
  1. Escriba el comando siguiente para solicitar las credenciales usando la AWS CLI. Reemplace el ARN del rol, el nombre de la sesión y el perfil por sus propios valores.

    aws sts assume-role --role-arn arn:aws:iam::123456789012:role/NeptuneIAMAuthRole --role-session-name test --profile testprofile
  2. A continuación se muestra un ejemplo de salida del comando. La sección Credentials contiene los valores que necesita.

    nota

    Registre el valor de Expiration ya que lo necesitará para obtener nuevas credenciales transcurrido este tiempo.

    { "AssumedRoleUser": { "AssumedRoleId": "AROA3XFRBF535PLBIFPI4:s3-access-example", "Arn": "arn:aws:sts::123456789012:assumed-role/xaccounts3access/s3-access-example" }, "Credentials": { "SecretAccessKey": "9drTJvcXLB89EXAMPLELB8923FB892xMFI", "SessionToken": "AQoXdzELDDY//////////wEaoAK1wvxJY12r2IrDFT2IvAzTCn3zHoZ7YNtpiQLF0MqZye/qwjzP2iEXAMPLEbw/m3hsj8VBTkPORGvr9jM5sgP+w9IZWZnU+LWhmg+a5fDi2oTGUYcdg9uexQ4mtCHIHfi4citgqZTgco40Yqr4lIlo4V2b2Dyauk0eYFNebHtYlFVgAUj+7Indz3LU0aTWk1WKIjHmmMCIoTkyYp/k7kUG7moeEYKSitwQIi6Gjn+nyzM+PtoA3685ixzv0R7i5rjQi0YE0lf1oeie3bDiNHncmzosRM6SFiPzSvp6h/32xQuZsjcypmwsPSDtTPYcs0+YN/8BRi2/IcrxSpnWEXAMPLEXSDFTAQAM6Dl9zR0tXoybnlrZIwMLlMi1Kcgo5OytwU=", "Expiration": "2016-03-15T00:05:07Z", "AccessKeyId": "ASIAJEXAMPLEXEG2JICEA" } }
  3. Establezca las variables de entorno mediante las credenciales devueltas.

    export AWS_ACCESS_KEY_ID=ASIAJEXAMPLEXEG2JICEA export AWS_SECRET_ACCESS_KEY=9drTJvcXLB89EXAMPLELB8923FB892xMFI export AWS_SESSION_TOKEN=AQoXdzELDDY//////////wEaoAK1wvxJY12r2IrDFT2IvAzTCn3zHoZ7YNtpiQLF0MqZye/qwjzP2iEXAMPLEbw/m3hsj8VBTkPORGvr9jM5sgP+w9IZWZnU+LWhmg+a5fDi2oTGUYcdg9uexQ4mtCHIHfi4citgqZTgco40Yqr4lIlo4V2b2Dyauk0eYFNebHtYlFVgAUj+7Indz3LU0aTWk1WKIjHmmMCIoTkyYp/k7kUG7moeEYKSitwQIi6Gjn+nyzM+PtoA3685ixzv0R7i5rjQi0YE0lf1oeie3bDiNHncmzosRM6SFiPzSvp6h/32xQuZsjcypmwsPSDtTPYcs0+YN/8BRi2/IcrxSpnWEXAMPLEXSDFTAQAM6Dl9zR0tXoybnlrZIwMLlMi1Kcgo5OytwU= export SERVICE_REGION=us-east-1 or us-east-2 or us-west-1 or us-west-2 or ca-central-1 or sa-east-1 or eu-north-1 or eu-west-1 or eu-west-2 or eu-west-3 or eu-central-1 or me-south-1 or me-central-1 or il-central-1 or af-south-1 or ap-east-1 or ap-northeast-1 or ap-northeast-2 or ap-southeast-1 or ap-southeast-2 or ap-south-1 or cn-north-1 or cn-northwest-1 or us-gov-east-1 or us-gov-west-1
  4. Conéctese utilizando uno de los siguientes métodos.

Para usar un script para obtener las credenciales
  1. Ejecute el siguiente comando para instalar el comando jq. El script usa este comando para analizar el resultado del AWS CLI comando.

    sudo yum -y install jq
  2. Cree un archivo con el nombre credentials.sh en un editor de texto y añada el siguiente texto. Reemplace la región del servicio, el ARN del rol, el nombre de la sesión y el perfil por sus propios valores.

    #!/bin/bash creds_json=$(aws sts assume-role --role-arn arn:aws:iam::123456789012:role/NeptuneIAMAuthRole --role-session-name test --profile testprofile) export AWS_ACCESS_KEY_ID=$(echo "$creds_json" | jq .Credentials.AccessKeyId |tr -d '"') export AWS_SECRET_ACCESS_KEY=$(echo "$creds_json" | jq .Credentials.SecretAccessKey| tr -d '"') export AWS_SESSION_TOKEN=$(echo "$creds_json" | jq .Credentials.SessionToken|tr -d '"') export SERVICE_REGION=us-east-1 or us-east-2 or us-west-1 or us-west-2 or ca-central-1 or sa-east-1 or eu-north-1 or eu-west-1 or eu-west-2 or eu-west-3 or eu-central-1 or me-south-1 or me-central-1 or il-central-1 or af-south-1 or ap-east-1 or ap-northeast-1 or ap-northeast-2 or ap-southeast-1 or ap-southeast-2 or ap-south-1 or cn-north-1 or cn-northwest-1 or us-gov-east-1 or us-gov-west-1
  3. Conéctese utilizando uno de los siguientes métodos.

Configuración de AWS Lambda para la autenticación IAM de Neptune

AWS Lambda incluye las credenciales automáticamente cada vez que se ejecuta la función Lambda.

En primer lugar, añada una relación de confianza que conceda permiso para asumir el rol al servicio de Lambda.

Añada la siguiente relación de confianza al rol de autenticación de IAM de Neptune. Si no tiene un rol de autenticación de IAM de Neptune, consulte Uso de diferentes tipos de políticas de IAM para controlar el acceso a Neptune.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "lambda.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

Para obtener información sobre cómo añadir la relación de confianza a la función, consulte Edición de la relación de confianza para una función existente en la guía de administración de AWS Directory Service.

Si la política de Neptune aún no está asociada a un rol, cree un nuevo rol. Asocie la política de autenticación de IAM de Neptune y, a continuación, añada la política de confianza. Para obtener información sobre la creación de una función nueva, consulte Creación de una función nueva en la guía de administración de AWS Directory Service .

Para obtener acceso a Neptune desde Lambda
  1. Inicie sesión en AWS Management Console y abra la AWS Lambda consola en https://console.aws.amazon.com/lambda/.

  2. Cree una nueva función Lambda para Python versión 3.6.

  3. Asigne el rol AWSLambdaVPCAccessExecutionRole a la función Lambda. Esto es necesario para obtener acceso a los recursos de Neptune, que son solo VPC.

  4. Asigne el rol de IAM de autenticación de Neptune a la función de Lambda.

    Para obtener más información, consulte Permisos de AWS Lambda en la Guía para desarrolladores de AWS Lambda .

  5. Copie la muestra de Python de autenticación de IAM en el código de la función Lambda.

    Para obtener más información acerca de la muestra y el código de muestra, consulte Conexión a las bases de datos de Amazon Neptune mediante la autenticación de IAM con Python.

Configuración de Amazon EC2 para la autenticación IAM de Neptune

Amazon te EC2 permite usar perfiles de instancia para proporcionar credenciales automáticamente. Para obtener más información, consulte Uso de perfiles de instancias en la Guía del usuario de IAM.

Primero, agregas una relación de confianza que otorga permiso para asumir el rol al EC2 servicio de Amazon.

Añada la siguiente relación de confianza al rol de autenticación de IAM de Neptune. Si no tiene un rol de autenticación de IAM de Neptune, consulte Uso de diferentes tipos de políticas de IAM para controlar el acceso a Neptune.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "ec2.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

Para obtener información sobre cómo añadir la relación de confianza a la función, consulte Edición de la relación de confianza para una función existente en la guía de administración de AWS Directory Service .

Si la política de Neptune aún no está asociada a un rol, cree un nuevo rol. Asocie la política de autenticación de IAM de Neptune y, a continuación, añada la política de confianza. Para obtener información sobre la creación de una función nueva, consulte Creación de una función nueva en la guía de administración de AWS Directory Service .

Para usar un script para obtener las credenciales
  1. Ejecute el siguiente comando para instalar el comando jq. El script utiliza este comando para analizar la salida del comando curl.

    sudo yum -y install jq
  2. Cree un archivo con el nombre credentials.sh en un editor de texto y añada el siguiente texto. Reemplace la región de servicio por su propio valor.

    TOKEN=$( curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600" ) role_name=$( curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/iam/security-credentials/ ) creds_json=$( curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/iam/security-credentials/${role_name} ) export AWS_ACCESS_KEY_ID=$(echo "$creds_json" | jq .AccessKeyId |tr -d '"') export AWS_SECRET_ACCESS_KEY=$(echo "$creds_json" | jq .SecretAccessKey| tr -d '"') export AWS_SESSION_TOKEN=$(echo "$creds_json" | jq .Token|tr -d '"') export SERVICE_REGION=us-east-1 or us-east-2 or us-west-1 or us-west-2 or ca-central-1 or sa-east-1 or eu-north-1 or eu-west-1 or eu-west-2 or eu-west-3 or eu-central-1 or me-south-1 or me-central-1 or il-central-1 or af-south-1 or ap-east-1 or ap-northeast-1 or ap-northeast-2 or ap-southeast-1 or ap-southeast-2 or ap-south-1 or cn-north-1 or cn-northwest-1 or us-gov-east-1 or us-gov-west-1
  3. Ejecute el script en el shell bash con el comando source:

    source credentials.sh

    Lo mejor es añadir los comandos de este script al .bashrc archivo de la EC2 instancia para que se invoquen automáticamente al iniciar sesión, de forma que las credenciales temporales estén disponibles en la consola de Gremlin.

  4. Conéctese utilizando uno de los siguientes métodos.