Autenticación IAM 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.

Autenticación IAM mediante credenciales temporales

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 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 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, consulte 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 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.

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 la AWS Lambda consola AWS Management Console y ábrala 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 Ejemplo: conexión con Neptune mediante Python con firma de Signature Version 4.

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

Amazon EC2 le permite utilizar 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.

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

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.

    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

    Aún mejor es agregar los comandos de este script al archivo .bashrc de la instancia EC2 para que se invoquen automáticamente cuando inicie sesión, lo que hará que las credenciales temporales estén disponibles en la consola de Gremlin.

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