本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用臨時憑證連線至 Amazon Neptune
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 Identity and Access Management 身分驗證連線至 Amazon Neptune 資料庫。
有多種方法可根據環境擷取臨時登入資料。
使用 AWS CLI取得臨時登入資料
若要使用 AWS Command Line Interface (AWS CLI) 取得憑證,首先您需要新增信任關係,以授予許可,讓將執行 AWS CLI 命令 AWS 的使用者擔任角色。
將下列信任關係新增至 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 Lambda for Neptune 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資源僅為 。-
將 Neptune 身分驗證IAM角色指派給 Lambda 函數。
如需詳細資訊,請參閱《AWS Lambda 開發人員指南》中的 AWS Lambda 許可。
-
將IAM身分驗證 Python 範例複製到 Lambda 函數程式碼。
如需範例及範本程式碼的詳細資訊,請參閱 使用 Python IAM身分驗證連線至 Amazon Neptune 資料庫。
設定 Amazon EC2 for Neptune IAM身分驗證
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
檔案,以便在您登入時自動叫用這些命令,讓 Gremlin 主控台可以使用臨時憑證。 -
使用以下其中一個方法連接。