

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

# 使用臨時登入資料連線至 Amazon Neptune
臨時憑證

Amazon Neptune 支援使用臨時憑證進行 IAM 身分驗證。

您可以使用假定的角色，並使用 IAM 身分驗證政策進行身分驗證，就像前面幾節的其中一個範例政策一樣。

如果您使用臨時的登入資料，除了指定 `AWS_ACCESS_KEY_ID`、`AWS_SECRET_ACCESS_KEY`、`SERVICE_REGION`，還必須指定 `AWS_SESSION_TOKEN`。

**注意**  
臨時登入資料會在指定的時間後過期，*包括工作階段字符*。  
當您請求新的登入資料時，必須更新工作階段字符。如需詳細資訊，請參閱[使用暫時安全登入資料來請求存取 AWS 資源](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_use-resources.html)。

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

**使用暫時登入資料進行身分驗證**

1. 建立具有 Neptune 叢集存取許可的 IAM 角色。如需建立此角色的詳細資訊，請參閱[使用不同種類的 IAM 政策來控制對 Neptune 的存取](security-iam-access-manage.md#iam-auth-policy)。

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

   擷取臨時登入資料，包括 `AWS_ACCESS_KEY_ID`、`AWS_SECRET_ACCESS_KEY` 和 `AWS_SESSION_TOKEN`。

1. 連線到 Neptune 叢集，並使用臨時憑證簽署請求。如需連線及簽署請求的詳細資訊，請參閱 [使用 AWS Identity and Access Management 身分驗證連線至 Amazon Neptune 資料庫](iam-auth-connecting.md)。

有多種方法可根據環境擷取臨時登入資料。

**Topics**
+ [

## 使用 取得暫時登入資料 AWS CLI
](#iam-auth-temporary-credentials-cli)
+ [

## 為 Neptune IAM 身分驗證設定 AWS Lambda
](#iam-auth-temporary-credentials-lambda)
+ [

## 為 Neptune IAM 身分驗證設定 Amazon EC2
](#iam-auth-temporary-credentials-ec2)

## 使用 取得暫時登入資料 AWS CLI
使用 取得登入資料 AWS CLI

若要使用 AWS Command Line Interface (AWS CLI) 取得登入資料，首先您需要新增信任關係，將擔任角色的許可授予將執行 AWS CLI 命令 AWS 的使用者。

將以下信任關係新增至 Neptune IAM 身分驗證角色。若您沒有 Neptune IAM 身分驗證角色，請參閱 [使用不同種類的 IAM 政策來控制對 Neptune 的存取](security-iam-access-manage.md#iam-auth-policy)。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::123456789012:user/test"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
```

------

如需將信任關係新增到角色的相關資訊，請參閱《AWS Directory Service 管理指南》**中的[編輯現有角色的信任關係](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/edit_trust.html)。

若 Neptune 政策尚未附加到角色，請建立新角色。附加 Neptune IAM 身分驗證政策，然後新增信任政策。如需建立新角色的資訊，請參閱[建立新角色](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/create_role.html)。

**注意**  
下列各節假設您 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
   ```

1. 以下為此命令的範例輸出。`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"
       }
   }
   ```

1. 使用傳回的登入資料設定環境變數。

   ```
   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
                         ca-west-1 or sa-east-1 or eu-north-1 or eu-south-2 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-northeast-3 or ap-southeast-1 or ap-southeast-2 or
                         ap-southeast-3 or ap-southeast-4 or ap-southeast-5 or ap-south-1 or ap-south-2 or
                         cn-north-1 or cn-northwest-1 or
                         us-gov-east-1 or us-gov-west-1
   ```

1. 使用以下其中一個方法連接。
   + [使用 IAM 身分驗證搭配 Gremlin 主控台連線至 Amazon Neptune 資料庫](iam-auth-connecting-gremlin-console.md)
   + [使用 IAM 搭配 Gremlin Java 連線至 Amazon Neptune 資料庫](iam-auth-connecting-gremlin-java.md)
   + [使用 IAM 身分驗證搭配 Java 和 SPARQL 連線至 Amazon Neptune 資料庫](iam-auth-connecting-sparql-java.md)
   + [使用 IAM 身分驗證搭配 Python 連線至 Amazon Neptune 資料庫](iam-auth-connecting-python.md)

**使用指令碼取得登入資料**

1. 執行以下命令來安裝 **jq** 命令。指令碼使用此命令來剖析 AWS CLI 命令的輸出。

   ```
   sudo yum -y install jq
   ```

1. 在文字編輯器中建立名為 `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
                         ca-west-1 or sa-east-1 or eu-north-1 or eu-south-2 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-northeast-3 or ap-southeast-1 or ap-southeast-2 or
                         ap-southeast-3 or ap-southeast-4 or ap-southeast-5 or ap-south-1 or ap-south-2 or
                         cn-north-1 or cn-northwest-1 or
                         us-gov-east-1 or us-gov-west-1
   ```

1. 使用以下其中一個方法連接。
   + [使用 IAM 身分驗證搭配 Gremlin 主控台連線至 Amazon Neptune 資料庫](iam-auth-connecting-gremlin-console.md)
   + [使用 IAM 搭配 Gremlin Java 連線至 Amazon Neptune 資料庫](iam-auth-connecting-gremlin-java.md)
   + [使用 IAM 身分驗證搭配 Java 和 SPARQL 連線至 Amazon Neptune 資料庫](iam-auth-connecting-sparql-java.md)
   + [使用 IAM 身分驗證搭配 Python 連線至 Amazon Neptune 資料庫](iam-auth-connecting-python.md)

## 為 Neptune IAM 身分驗證設定 AWS Lambda
設定 Lambda

AWS Lambda 每次執行 Lambda 函數時， 會自動包含登入資料。

首先，您需要新增信任關係，將擔任角色的許可授與 Lambda 服務。

將以下信任關係新增至 Neptune IAM 身分驗證角色。若您沒有 Neptune IAM 身分驗證角色，請參閱 [使用不同種類的 IAM 政策來控制對 Neptune 的存取](security-iam-access-manage.md#iam-auth-policy)。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "",
      "Effect": "Allow",
      "Principal": {
        "Service": "lambda.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
```

------

如需將信任關係新增到角色的相關資訊，請參閱《AWS Directory Service管理指南》**中的[編輯現有角色的信任關係](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/edit_trust.html)。

若 Neptune 政策尚未附加到角色，請建立新角色。附加 Neptune IAM 身分驗證政策，然後新增信任政策。如需建立新角色的相關資訊，請參閱《AWS Directory Service 管理指南》**中的[建立新角色](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/create_role.html)。

**從 Lambda 存取 Neptune**

1. 登入 AWS 管理主控台 ，並在 https：//[https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/) 開啟 AWS Lambda 主控台。

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

1. 將 `AWSLambdaVPCAccessExecutionRole` 角色指派給 Lambda 函數。需要此角色才能存取 Neptune 資源 (僅限 VPC)。

1. 將 Neptune 身分驗證 IAM 角色指派給 Lambda 函數。

   如需詳細資訊，請參閱《AWS Lambda 開發人員指南》**中的 [AWS Lambda 許可](https://docs.aws.amazon.com/lambda/latest/dg/intro-permission-model.html)。

1.  將 IAM 身分驗證 Python 範例複製到 Lambda 函數程式碼。

   如需範例及範本程式碼的詳細資訊，請參閱 [使用 IAM 身分驗證搭配 Python 連線至 Amazon Neptune 資料庫](iam-auth-connecting-python.md)。

## 為 Neptune IAM 身分驗證設定 Amazon EC2
設定 Amazon EC2

Amazon EC2 可讓您使用執行個體描述檔來自動提供登入資料。如需詳細資訊，請參閱《IAM 使用者指南》**中的[使用執行個體設定檔](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-ec2_instance-profiles.html)。

首先，您需要新增信任關係，將擔任角色的許可授與 Amazon EC2 服務。

將以下信任關係新增至 Neptune IAM 身分驗證角色。若您沒有 Neptune IAM 身分驗證角色，請參閱 [使用不同種類的 IAM 政策來控制對 Neptune 的存取](security-iam-access-manage.md#iam-auth-policy)。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "",
      "Effect": "Allow",
      "Principal": {
        "Service": "ec2.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
```

------

如需將信任關係新增到角色的相關資訊，請參閱《AWS Directory Service 管理指南》**中的[編輯現有角色的信任關係](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/edit_trust.html)。

若 Neptune 政策尚未附加到角色，請建立新角色。附加 Neptune IAM 身分驗證政策，然後新增信任政策。如需建立新角色的相關資訊，請參閱《AWS Directory Service 管理指南》**中的[建立新角色](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/create_role.html)。

**使用指令碼取得登入資料**

1. 執行以下命令來安裝 **jq** 命令。指令碼會使用此命令來剖析 **curl** 命令的輸出。

   ```
   sudo yum -y install jq
   ```

1. 在文字編輯器中建立名為 `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
                         ca-west-1 or sa-east-1 or eu-north-1 or eu-south-2 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-northeast-3 or ap-southeast-1 or ap-southeast-2 or
                         ap-southeast-3 or ap-southeast-4 or ap-southeast-5 or ap-south-1 or ap-south-2 or
                         cn-north-1 or cn-northwest-1 or
                         us-gov-east-1 or us-gov-west-1
   ```

1. 使用 `source` 命令在 `bash` shell 中執行指令碼：

   ```
   source credentials.sh
   ```

   更好的是將此腳本中的命令添加到 EC2 執行個體上的 `.bashrc` 檔案中，以便在您登入時自動呼叫它們，讓 Gremlin 主控台可使用臨時的登入資料。

1. 使用以下其中一個方法連接。
   + [使用 IAM 身分驗證搭配 Gremlin 主控台連線至 Amazon Neptune 資料庫](iam-auth-connecting-gremlin-console.md)
   + [使用 IAM 搭配 Gremlin Java 連線至 Amazon Neptune 資料庫](iam-auth-connecting-gremlin-java.md)
   + [使用 IAM 身分驗證搭配 Java 和 SPARQL 連線至 Amazon Neptune 資料庫](iam-auth-connecting-sparql-java.md)
   + [使用 IAM 身分驗證搭配 Python 連線至 Amazon Neptune 資料庫](iam-auth-connecting-python.md)