Usar credenciais temporárias para se conectar ao Amazon Neptune
O Amazon Neptune é compatível com a autenticação do IAM usando credenciais temporárias.
Você pode usar uma função assumida para autenticar ao usar uma política de autenticação do IAM como uma das políticas de exemplo nas seções anteriores.
Se estiver usando credenciais temporárias, você deve especificar AWS_SESSION_TOKEN bem como AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, e SERVICE_REGION.
nota
As credenciais temporárias expiram após um intervalo especificado, incluindo o token de sessão.
Você deve atualizar o seu token de sessão ao solicitar novas credenciais. Para obter mais informações, consulte Using Temporary Security Credentials to Request Access to AWS Resources.
As seções a seguir descrevem como permitir o acesso e recuperar credenciais temporárias.
Para autenticar usando credenciais temporárias
Criar um perfil do IAM com permissão para acessar um cluster do Neptune. Para obter informações sobre como criar essa função, consulte Usar diferentes tipos de política do IAM para controle de acesso ao Neptune.
-
Adicionar um relacionamento de confiança à função que permita acesso as credenciais.
Recupere as credenciais temporárias, incluindo
AWS_ACCESS_KEY_ID,AWS_SECRET_ACCESS_KEY, eAWS_SESSION_TOKEN. Conecte-se ao cluster do Neptune e assine as solicitações usando as credenciais temporárias. Para obter mais informações sobre como conectar e assinar solicitações, consulte Conectar-se ao banco de dados do Amazon Neptune usando a autenticação do AWS Identity and Access Management.
Há vários métodos para recuperar credenciais temporárias dependendo do ambiente.
Tópicos
Como obter credenciais temporárias com a AWS CLI
Para obter credenciais usando a AWS Command Line Interface (AWS CLI), primeiro é necessário adicionar uma relação de confiança que conceda permissão para assumir o perfil ao usuário da AWS que executará o comando da AWS CLI.
Adicione o seguinte relacionamento de confiança ao perfil de autenticação do IAM do Neptune. Se você não tiver um perfil de autenticação do IAM do Neptune, consulte Usar diferentes tipos de política do IAM para controle de acesso ao Neptune.
Para obter informações sobre como ampliar a relação de confiança à função, consulte Editar a relação de confiança de uma função existente no Guia de administração do AWS Directory Service.
Se a política do Neptune ainda não estiver associada a um perfil, crie um perfil. Associe a política de autenticação do IAM do Neptune e, depois, adicione a política de confiança. Para obter informações sobre como criar uma nova função, consulte Como criar uma função.
nota
As seções a seguir presumem que você tenha a AWS CLI instalado.
Para executar o AWS CLI manualmente
-
Digite o comando a seguir para solicitar as credenciais usando a AWS CLI. Substitua o ARN da função, nome de sessão e perfil com seus próprios valores.
aws sts assume-role --role-arnarn:aws:iam::123456789012:role/NeptuneIAMAuthRole--role-session-nametest--profiletestprofile -
A seguir está um exemplo de saída do comando. A seção
Credentialscontém os valores de que você precisa.nota
Anote o valor
Expiration, pois ele será necessário para obter novas credenciais após esse período.{ "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" } } -
Defina as variáveis do ambiente usando as credenciais retornadas.
export AWS_ACCESS_KEY_ID=ASIAJEXAMPLEXEG2JICEAexport AWS_SECRET_ACCESS_KEY=9drTJvcXLB89EXAMPLELB8923FB892xMFIexport 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 -
Conectar-se usando um dos seguintes métodos.
Para usar um script para obter as credenciais
-
Execute o seguinte comando para instalar comando jq. O script usa esse comando para analisar a saída do comando AWS CLI.
sudo yum -y install jq -
Crie um arquivo chamado
credentials.shem um editor de texto e adicione o texto a seguir. Substitua a região de serviço, ARN da função, nome de sessão e perfil com seus próprios valores.#!/bin/bash creds_json=$(aws sts assume-role --role-arnarn:aws:iam::123456789012:role/NeptuneIAMAuthRole--role-session-nametest--profiletestprofile) 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 -
Conectar-se usando um dos seguintes métodos.
Configurar o AWS Lambda para autenticação do IAM no Neptune
O AWS Lambda inclui credenciais automaticamente sempre que a função do Lambda é executada.
Primeiro, adicione uma relação de confiança que conceda permissão para assumir o perfil ao serviço do Lambda.
Adicione o seguinte relacionamento de confiança ao perfil de autenticação do IAM do Neptune. Se você não tiver um perfil de autenticação do IAM do Neptune, consulte Usar diferentes tipos de política do IAM para controle de acesso ao Neptune.
Para obter informações sobre como ampliar a relação de confiança à função, consulte Editar a relação de confiança de uma função existente no Guia de administração do AWS Directory Service.
Se a política do Neptune ainda não estiver associada a um perfil, crie um perfil. Associe a política de autenticação do IAM do Neptune e, depois, adicione a política de confiança. Para obter informações sobre como criar uma função, consulte Criar uma função no Guia de administração do AWS Directory Service.
Como acessar o Neptune pelo Lambda
Faça login no Console de gerenciamento da AWS e abra o console do AWS Lambda em https://console.aws.amazon.com/lambda/
. Crie uma nova função do Lambda para Python versão 3.6.
Atribua a função
AWSLambdaVPCAccessExecutionRolepara a função Lambda. Isso é necessário para acessar os recursos do Neptune, que são apenas VPC.-
Atribua o perfil do IAM de autenticação do Neptune para a função do Lambda.
Para obter mais informações, consulte AWS Lambda Permissions no Guia do desenvolvedor do AWS Lambda.
-
Copie o exemplo de Python de autenticação do IAM no código de função Lambda.
Para obter mais informações sobre os exemplos e os códigos de exemplo, consulte Conectar-se a bancos de dados do Amazon Neptune usando a autenticação do IAM com Python.
Configurar o Amazon EC2 para autenticação do IAM do Neptune
O Amazon EC2 permite que você use perfis de instância para fornecer automaticamente as credenciais. Para obter mais informações, consulte Using Instance Profiles no Guia do usuário do IAM.
Primeiro, adicione uma relação de confiança que conceda permissão para assumir o perfil ao serviço do Amazon EC2.
Adicione o seguinte relacionamento de confiança ao perfil de autenticação do IAM do Neptune. Se você não tiver um perfil de autenticação do IAM do Neptune, consulte Usar diferentes tipos de política do IAM para controle de acesso ao Neptune.
Para obter informações sobre como ampliar a relação de confiança à função, consulte Editar a relação de confiança de uma função existente no Guia de administração do AWS Directory Service.
Se a política do Neptune ainda não estiver associada a um perfil, crie um perfil. Associe a política de autenticação do IAM do Neptune e, depois, adicione a política de confiança. Para obter informações sobre como criar uma função, consulte Criar uma função no Guia de administração do AWS Directory Service.
Para usar um script para obter as credenciais
-
Execute o seguinte comando para instalar comando jq. O script usa esse comando para analisar a saída do comando curl.
sudo yum -y install jq -
Crie um arquivo chamado
credentials.shem um editor de texto e adicione o texto a seguir. Substitua a região de serviço com o seu próprio 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 -
Execute o script no shell
bashusando o comandosource:source credentials.shMelhor ainda é adicionar os comandos deste script ao arquivo
.bashrcem sua instância do EC2 para que eles sejam invocados automaticamente quando você fizer login, disponibilizando credenciais temporárias para o console Gremlin. -
Conectar-se usando um dos seguintes métodos.