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