

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# 一時認証情報を使用した Amazon Neptune への接続
<a name="iam-auth-temporary-credentials"></a>

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 ロールを作成します。このロールの作成の詳細については、「[Neptune へのアクセスを制御するためのさまざまな種類の IAM ポリシーの使用](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
<a name="iam-auth-temporary-credentials-cli"></a>

 AWS Command Line Interface (AWS CLI) を使用して認証情報を取得するには、まず、 AWS CLI コマンドを実行する AWS ユーザーにロールを引き受けるアクセス許可を付与する信頼関係を追加する必要があります。

Neptune IAM 認証ロールに次の信頼関係を追加します。Neptune IAM 認証ロールがない場合は、[Neptune へのアクセスを制御するためのさまざまな種類の IAM ポリシーの使用](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. 以下のいずれかの方法を使用して接続します。
   + [Gremlin コンソールでの IAM 認証を使用した Amazon Neptune データベースへの接続](iam-auth-connecting-gremlin-console.md)
   + [Gremlin Java による IAM を使用した Amazon Neptune データベースへの接続](iam-auth-connecting-gremlin-java.md)
   + [Java および SPARQL による IAM 認証を使用した Amazon Neptune データベースへの接続](iam-auth-connecting-sparql-java.md)
   + [Python による IAM 認証を使用した 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. 以下のいずれかの方法を使用して接続します。
   + [Gremlin コンソールでの IAM 認証を使用した Amazon Neptune データベースへの接続](iam-auth-connecting-gremlin-console.md)
   + [Gremlin Java による IAM を使用した Amazon Neptune データベースへの接続](iam-auth-connecting-gremlin-java.md)
   + [Java および SPARQL による IAM 認証を使用した Amazon Neptune データベースへの接続](iam-auth-connecting-sparql-java.md)
   + [Python による IAM 認証を使用した Amazon Neptune データベースへの接続](iam-auth-connecting-python.md)

## Neptune IAM 認証用の AWS Lambda のセットアップ
<a name="iam-auth-temporary-credentials-lambda"></a>

AWS Lambda には、Lambda 関数が実行されるたびに自動的に認証情報が含まれます。

最初に Lambda サービスにロールを引き受けるアクセス権限を与える信頼関係を追加します。

Neptune IAM 認証ロールに次の信頼関係を追加します。Neptune IAM 認証ロールがない場合は、[Neptune へのアクセスを制御するためのさまざまな種類の IAM ポリシーの使用](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://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/) で AWS Lambda コンソールを開きます。

1. Python バージョン 3.6 用に新しい Lambda 関数を作成します。

1. Lambda 関数に `AWSLambdaVPCAccessExecutionRole` ロールを割り当てます。これは、VPC のみの Neptune リソースにアクセスするために必要です。

1. Lambda 関数に Neptune 認証 IAM ロールを割り当てます。

   詳細については、*AWS Lambda デベロッパーガイド*の[AWS Lambda 関数のエラー](https://docs.aws.amazon.com/lambda/latest/dg/intro-permission-model.html)を参照してください。

1.  IAM 認証の Python サンプルを Lambda 関数コードにコピーします。

   サンプルおよびサンプルコードの詳細については、「[Python による IAM 認証を使用した Amazon Neptune データベースへの接続](iam-auth-connecting-python.md)」を参照してください。

## Neptune IAM 認証用の Amazon EC2 のセットアップ
<a name="iam-auth-temporary-credentials-ec2"></a>

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 認証ロールがない場合は、[Neptune へのアクセスを制御するためのさまざまな種類の IAM ポリシーの使用](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` シェルでスクリプトを実行します。

   ```
   source credentials.sh
   ```

   さらに良い方法は、このスクリプトのコマンドを EC2 インスタンス上の `.bashrc` ファイルに追加して、ログイン時に自動的に呼び出されるようにします。これにより、一時的な認証情報が Gremlin コンソールで使用できるようになります。

1. 以下のいずれかの方法を使用して接続します。
   + [Gremlin コンソールでの IAM 認証を使用した Amazon Neptune データベースへの接続](iam-auth-connecting-gremlin-console.md)
   + [Gremlin Java による IAM を使用した Amazon Neptune データベースへの接続](iam-auth-connecting-gremlin-java.md)
   + [Java および SPARQL による IAM 認証を使用した Amazon Neptune データベースへの接続](iam-auth-connecting-sparql-java.md)
   + [Python による IAM 認証を使用した Amazon Neptune データベースへの接続](iam-auth-connecting-python.md)