IAM使用臨時身份證明進 - Amazon Neptune

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

IAM使用臨時身份證明進

Amazon Neptune 支援IAM使用臨時登入資料進

您可以使用假定的角色來使用IAM驗證原則進行驗證,例如上一節中的其中一個範例原則。

如果您使用臨時的登入資料,除了指定 AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEYSERVICE_REGION,還必須指定 AWS_SESSION_TOKEN

注意

臨時登入資料會在指定的時間後過期,包括工作階段字符

當您請求新的登入資料時,必須更新工作階段字符。如需詳細資訊,請參閱使用臨時安全登入資料來要求存取 AWS 資源

以下各節說明如何允許存取和擷取臨時登入資料。

使用暫時登入資料進行身分驗證
  1. 建立具有存取 Neptune 叢集權限的IAM角色。如需建立此角色的詳細資訊,請參閱使用不同類型的IAM原則來控制對 Neptune 的存取

  2. 為角色新增一個允許存取登入資料的信任關係。

    擷取臨時登入資料,包括 AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEYAWS_SESSION_TOKEN

  3. 連線到 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 手動
  1. 輸入以下命令以請求使用 AWS CLI。 將角色ARN、工作階段名稱和設定檔取代為您自己的值。

    aws sts assume-role --role-arn arn:aws:iam::123456789012:role/NeptuneIAMAuthRole --role-session-name test --profile testprofile
  2. 以下為此命令的範例輸出。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" } }
  3. 使用傳回的登入資料設定環境變數。

    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
  4. 使用以下其中一個方法連接。

使用指令碼取得登入資料
  1. 執行以下命令來安裝 jq 命令。該腳本使用此命令來解析 AWS CLI 指令。

    sudo yum -y install jq
  2. 在文字編輯器中建立名為 credentials.sh 的檔案,並加入下列文字。以您自己的值取代服務區域ARN、角色、工作階段名稱和設定檔。

    #!/bin/bash creds_json=$(aws sts assume-role --role-arn arn:aws:iam::123456789012:role/NeptuneIAMAuthRole --role-session-name test --profile testprofile) 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
  3. 使用以下其中一個方法連接。

設定 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
  1. 登入 AWS Management Console 並打開 AWS Lambda 控制台在https://console.aws.amazon.com/lambda/

  2. 建立適用於 Python 3.6 版的新 Lambda 函數。

  3. AWSLambdaVPCAccessExecutionRole 角色指派給 Lambda 函數。這是訪問 Neptune 資源所必需的,這些資源VPC只是。

  4. 將 Neptune 驗證IAM角色指派給 Lambda 函數。

    如需詳細資訊,請參閱 AWS中的 Lambda 許可 AWS Lambda 開發人員指南

  5. 將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 管理指南

使用指令碼取得登入資料
  1. 執行以下命令來安裝 jq 命令。指令碼會使用此命令來剖析 curl 命令的輸出。

    sudo yum -y install jq
  2. 在文字編輯器中建立名為 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
  3. 使用 source 命令在 bash shell 中執行指令碼:

    source credentials.sh

    更好的是將此腳本中的命令添加到EC2實例上的.bashrc文件中,以便在您登錄時自動調用它們,從而使 Gemlin 控制台可以使用臨時憑據。

  4. 使用以下其中一個方法連接。