

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

# IAM 認証を使用することによるコマンドラインからの Amazon Neptune データベースへの接続
<a name="iam-auth-connect-command-line"></a>

このドキュメントの多くの例に示されるように、Neptune DB クラスターにクエリを送信するためのコマンドラインツールがあると非常に便利です。[curl](https://curl.haxx.se/) ツールは、IAM 認証が有効になっていない場合に Neptune エンドポイントと通信するための優れたオプションです。

**ただし、データを安全に保つには、IAM 認証を有効にするのが最善です。**

IAM 認証が有効になっている場合、各リクエストに[署名バージョン 4 (Sig4) を使用して署名する](https://docs.aws.amazon.com/general/latest/gr/signing-aws-api-requests.html)必要があります。サードパーティの [awscurl](https://github.com/okigan/awscurl) コマンドラインツールは、`curl` と同じ構文を使用し、Sig4 署名を使用してクエリに署名できます。以下の [`awscurl`の使用](#iam-auth-connect-awscurl) セクションでは、一時的な認証情報で `awscurl` を安全に使用する方法について説明します。

## HTTPS を使用するコマンドラインツールのセットアップ
<a name="iam-auth-connect-command-line-https"></a>

Neptune では、すべての接続で HTTPS を使用する必要があります。HTTPS を使用するには、`curl` または `awscurl` などのコマンドラインツールが適切な証明書にアクセスする必要があります。`curl` または `awscurl` が適切な証明書を見つけられる限り、HTTP 接続と同じように HTTPS 接続を処理し、追加のパラメータを必要としません。このドキュメントの例はこのシナリオに基づいています。

そのような証明書を取得する方法と、`curl` が使える証明書を認証局 (CA) 証明書ストアに適切にフォーマットする方法については、`curl` ドキュメント内の「[SSL 証明書の検証](https://curl.haxx.se/docs/sslcerts.html)」を参照してください。

次に、`CURL_CA_BUNDLE` 環境変数を使用してこの CA 証明書ストアの場所を指定できます。Windows では、`curl` は自動的に `curl-ca-bundle.crt` という名前のファイルを検索します。まず `curl.exe` と同じディレクトリで curl.exe を検索し、次にこのパスの他の場所を検索します。詳細については、「[SSL Certificate Verification](https://curl.haxx.se/docs/sslcerts.html)」を参照してください。

## 一時的な認証情報で `awscurl` を使用して、IAM 認証が有効になっている DB クラスターに安全に接続する
<a name="iam-auth-connect-awscurl"></a>

[awscurl](https://github.com/okigan/awscurl) ツールは、`curl` と同じ構文を使用しますが、追加情報も必要です。
+ **`--access_key`** — 有効なアクセスキー。このパラメータを使用して指定しなかった場合は、`AWS_ACCESS_KEY_ID` 環境変数または設定ファイルで指定する必要があります。
+ **`--secret_key`** - アクセスキーに対応する有効なシークレットキー。このパラメータを使用して指定しなかった場合は、`AWS_SECRET_ACCESS_KEY` 環境変数または設定ファイルで指定する必要があります。
+ **`--security_token`** — 有効なセッショントークン。このパラメータを使用して指定しなかった場合は、`AWS_SECURITY_TOKEN` 環境変数または設定ファイルで指定する必要があります。

以前は、IAM ユーザー認証情報やルート認証情報などの永続認証情報を `awscurl` で使用するのが一般的でしたが、これは推奨されません。代わりに、[AWS セキュリティトークンサービス (STS) API](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html) のいずれか、またはその[AWS CLI ラッパー](https://docs.aws.amazon.com/cli/latest/reference/sts/index.html)のいずれかを使用して、一時的な認証情報を生成してください。

STS 呼び出しによって返される `AccessKeyId`、`SecretAccessKey`、および `SessionToken` 値は、設定ファイルではなく、シェルセッション内の適切な環境変数に置くのが最善です。その後、シェルを終了すると、認証情報は自動的に破棄されますが、設定ファイルの場合はそうではありません。同様に、一時的な認証情報について、必要と思われる期間よりも長い期間をリクエストしないでください。

次の例は、Linux シェルで [sts assume-role](https://docs.aws.amazon.com/cli/latest/reference/sts/assume-role) を使用して 30 分有効な一時的な認証情報を取得し、`awscurl` で検索できる環境変数に格納する手順を示しています。

```
aws sts assume-role \
    --duration-seconds 1800 \
    --role-arn "arn:aws:iam::{{(account-id)}}:role/{{(rolename)}}" \
    --role-session-name AWSCLI-Session > $output
AccessKeyId=$(echo $output | jq '.Credentials''.AccessKeyId')
SecretAccessKey=$(echo $output | jq '.Credentials''.SecretAccessKey')
SessionToken=$(echo $output | jq '.Credentials''.SessionToken')

export AWS_ACCESS_KEY_ID=$AccessKeyId
export AWS_SECRET_ACCESS_KEY=$SecretAccessKey
export AWS_SESSION_TOKEN=$SessionToken
```

その後、`awscurl` を使用して DB クラスターに次のような署名付きリクエストを行うことができます。

```
awscurl {{(your cluster endpoint)}}:8182/status \
    --region us-east-1 \
    --service neptune-db
```