本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
IAM使用臨時身份證明進
Amazon 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 第 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 IAM 驗證的 Lambda
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只是。-
將 Neptune 驗證IAM角色指派給 Lambda 函數。
如需詳細資訊,請參閱 AWS中的 Lambda 許可 AWS Lambda 開發人員指南。
-
將IAM驗證 Python 範例複製到 Lambda 函數程式碼中。
如需範例及範本程式碼的詳細資訊,請參閱 範例:搭配 Signature 第 4 版簽署,使用 Python 連線到 Neptune。
EC2為 Neptune IAM 身份驗證設置 Amazon
Amazon EC2 允許您使用執行個體設定檔自動提供登入資料。如需詳細資訊,請參閱使用指南中的IAM使用執行個體設定檔。
首先,您要新增一個信任關係,以授予將角色扮演至 Amazon 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
文件中,以便在您登錄時自動調用它們,從而使 Gemlin 控制台可以使用臨時憑據。 -
使用以下其中一個方法連接。