使用临时凭证连接到 Amazon Neptune
Amazon Neptune 支持使用临时凭证进行 IAM 身份验证。
您可以使用代入的角色通过 IAM 身份验证策略(如上面各节中的示例策略之一)进行身份验证。
如果您使用的是临时凭证,则除了 AWS_SESSION_TOKEN、AWS_ACCESS_KEY_ID 和 AWS_SECRET_ACCESS_KEY 之外,您还必须指定 SERVICE_REGION。
注意
临时凭证(包括会话令牌)将在指定时间间隔后到期。
在请求新凭证时,您必须更新您的会话令牌。有关更多信息,请参阅使用临时安全凭证以请求对 AWS 资源的访问权限。
以下各节介绍如何允许访问和检索临时凭证。
使用临时凭证进行身份验证
创建有权访问 Neptune 集群的 IAM 角色。有关创建此角色的信息,请参阅 使用不同类型的 IAM policy 控制对 Neptune 的访问权限。
-
向角色添加允许访问凭证的信任关系。
检索临时凭证(包括
AWS_ACCESS_KEY_ID、AWS_SECRET_ACCESS_KEY和AWS_SESSION_TOKEN)。 使用临时凭证连接到 Neptune 集群并签署请求。有关连接和签名请求的更多信息,请参阅使用 AWS Identity and Access Management 身份验证连接到 Amazon Neptune 数据库。
可通过多种方法检索临时凭证,具体取决于环境。
使用 AWS CLI 获取临时凭证
要使用 AWS Command Line Interface (AWS CLI) 获取凭证,您首先需要添加信任关系,该信任关系为将运行 AWS CLI 命令的 AWS 用户授予代入此角色的权限。
向 Neptune IAM 身份验证角色添加以下信任关系。如果您没有 Neptune IAM 身份验证角色,请参阅使用不同类型的 IAM policy 控制对 Neptune 的访问权限。
有关向角色添加信任关系的信息,请参阅《AWS Directory Service 管理指南》中的编辑现有角色的信任关系。
如果 Neptune 策略尚未附加到角色,请创建一个新的角色。附加 Neptune IAM 身份验证策略,然后添加信任策略。有关创建新角色的信息,请参阅创建新角色。
注意
以下部分假设您已安装 AWS CLI。
手动运行 AWS CLI
-
使用 AWS CLI 输入以下命令以请求凭证。将角色 ARN、会话名称和配置文件替换为您自己的值。
aws sts assume-role --role-arnarn:aws:iam::123456789012:role/NeptuneIAMAuthRole--role-session-nametest--profiletestprofile -
下面是此命令中的示例输出。
Credentials部分包含您需要的值。注意
记录
Expiration值,因为在此次之后您将需要获取新凭证。{ "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" } } -
使用返回的凭证设置环境变量。
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 -
使用下列方法之一进行连接。
使用脚本获取凭证
-
运行以下命令以安装 jq 命令。脚本使用此命令解析 AWS CLI 命令的输出。
sudo yum -y install jq -
在文本编辑器中创建一个名为
credentials.sh的文件并添加以下文本。将服务区域、角色 ARN、会话名称和配置文件替换为您自己的值。#!/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 -
使用下列方法之一进行连接。
为 Neptune IAM 身份验证设置 AWS Lambda
AWS Lambda 在每次运行 Lambda 函数时自动包括凭证。
首先,您添加信任关系,该信任关系向 Lambda 服务授予代入此角色的权限。
向 Neptune IAM 身份验证角色添加以下信任关系。如果您没有 Neptune IAM 身份验证角色,请参阅使用不同类型的 IAM policy 控制对 Neptune 的访问权限。
有关向角色添加信任关系的信息,请参阅《AWS Directory Service 管理指南》中的编辑现有角色的信任关系。
如果 Neptune 策略尚未附加到角色,请创建一个新的角色。附加 Neptune IAM 身份验证策略,然后添加信任策略。有关创建新角色的信息,请参阅《AWS Directory Service 管理指南》中的创建新角色。
通过 Lambda 访问 Neptune
登录到 AWS 管理控制台,然后通过以下网址打开 AWS Lambda 控制台:https://console.aws.amazon.com/lambda/
。 为 Python 版本 3.6 创建新的 Lambda 函数。
将
AWSLambdaVPCAccessExecutionRole角色分配给 Lambda 函数。这是访问 Neptune 资源(仅 VPC)所必需的。-
将 Neptune 身份验证 IAM 角色分配给 Lambda 函数。
有关授予权限的更多信息,请参阅《AWS Lambda 开发人员指南》中的 AWS 权限。
-
将 IAM 身份验证 Python 示例复制到 Lambda 函数代码中。
有关示例和示例代码的更多信息,请参阅通过 Python 使用 IAM 身份验证连接到 Amazon Neptune 数据库。
为 Neptune IAM 身份验证设置 Amazon EC2
Amazon EC2 允许您使用实例配置文件自动提供凭证。有关更多信息,请参阅《IAM 用户指南》中的使用实例配置文件。
首先,您添加信任关系,该信任关系向 Amazon EC2 服务授予代入此角色的权限。
向 Neptune IAM 身份验证角色添加以下信任关系。如果您没有 Neptune IAM 身份验证角色,请参阅使用不同类型的 IAM policy 控制对 Neptune 的访问权限。
有关向角色添加信任关系的信息,请参阅《AWS Directory Service 管理指南》中的编辑现有角色的信任关系。
如果 Neptune 策略尚未附加到角色,请创建一个新的角色。附加 Neptune IAM 身份验证策略,然后添加信任策略。有关创建新角色的信息,请参阅《AWS Directory Service 管理指南》中的创建新角色。
使用脚本获取凭证
-
运行以下命令以安装 jq 命令。脚本使用此命令解析 curl 命令的输出。
sudo yum -y install jq -
在文本编辑器中创建一个名为
credentials.sh的文件并添加以下文本。将服务区域替换为您自己的值。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 -
使用
bash命令在sourceshell 中运行脚本:source credentials.sh更好的办法是将此脚本中的命令添加到 EC2 实例上的
.bashrc文件中,以便在您登录时自动调用这些命令,从而使临时凭证可用于 Gremlin 控制台。 -
使用下列方法之一进行连接。