IAMAutenticación mediante credenciales temporales - 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.

IAMAutenticación mediante credenciales temporales

Amazon Neptune admite la IAM autenticación mediante credenciales temporales.

Puede usar un rol asumido para autenticarse mediante una política de IAM autenticación, 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 AWS los recursos.

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 IAM rol con permiso para acceder a un clúster de Neptune. Para obtener información acerca de la creación de esta función, consulte Uso de diferentes tipos de IAM políticas 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 y firma con AWS Signature, versión 4.

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.

Agregue la siguiente relación de confianza a la función de IAM autenticación de Neptune. Si no tiene una función de IAM autenticación de Neptune, consulte. Uso de diferentes tipos de IAM políticas 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. Adjunte la política de IAM autenticación de Neptune y, a continuación, agregue 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 tiene la AWS CLI instalada.

Para ejecutar el AWS CLI manual
  1. Escriba el comando siguiente para solicitar las credenciales usando la AWS CLI. Sustituya el rolARN, 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. Sustituya la región, el rolARN, el nombre de la sesión y el perfil del servicio 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 de Neptune IAM

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.

Agregue la siguiente relación de confianza a la función de IAM autenticación de Neptune. Si no tiene una función de IAM autenticación de Neptune, consulte. Uso de diferentes tipos de IAM políticas 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. Adjunte la política de IAM autenticación de Neptune y, a continuación, agregue 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 acceder a los recursos de Neptune, que son VPC únicamente.

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

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

  5. Copie el ejemplo IAM de autenticación de Python 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 Ejemplo: conexión con Neptune mediante Python con firma de Signature Version 4.

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

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

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

Agregue la siguiente relación de confianza a la función de IAM autenticación de Neptune. Si no tiene una función de IAM autenticación de Neptune, consulte. Uso de diferentes tipos de IAM políticas 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. Adjunte la política de IAM autenticación de Neptune y, a continuación, agregue 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.

    role_name=$( curl -s http://169.254.169.254/latest/meta-data/iam/security-credentials/ ) creds_json=$(curl -s 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.