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