翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
コマンドラインからの IAM 認証を使用した Amazon Neptune データベースへの接続
このドキュメントの多くの例に示されるように、Neptune DB クラスターにクエリを送信するためのコマンドラインツールがあると非常に便利です。curl
ただし、データを安全に保つには、IAM 認証を有効にするのが最善です。
IAM 認証が有効になっている場合、各リクエストは署名バージョン 4 (Sig4) を使用して署名する必要があります。サードパーティの awscurlcurl
と同じ構文を使用し、Sig4 署名を使用してクエリに署名できます。以下の awscurl の使用 セクションでは、一時的な認証情報で awscurl
を安全に使用する方法について説明します。
HTTPS を使用するコマンドラインツールのセットアップ
Neptune では、すべての接続で HTTPS を使用する必要があります。HTTPS を使用するには、curl
または awscurl
などのコマンドラインツールが適切な証明書にアクセスする必要があります。curl
または awscurl
が適切な証明書を見つけられる限り、HTTP 接続と同じように HTTPS 接続を処理し、追加のパラメータを必要としません。このドキュメントの例はこのシナリオに基づいています。
そのような証明書を取得する方法と、curl
が使える証明書を認証局 (CA) 証明書ストアに適切にフォーマットする方法については、curl
ドキュメント内の「SSL 証明書の検証
次に、CURL_CA_BUNDLE
環境変数を使用してこの CA 証明書ストアの場所を指定できます。Windows では、curl
は自動的に curl-ca-bundle.crt
という名前のファイルを検索します。まず curl.exe
と同じディレクトリで curl.exe を検索し、次にこのパスの他の場所を検索します。詳細については、「SSL Certificate Verification
一時的な認証情報で awscurl
を使用して、IAM 認証が有効になっている DB クラスターに安全に接続する
awscurlcurl
と同じ構文を使用しますが、追加情報も必要です。
-
--access_key
— 有効なアクセスキー。このパラメータを使用して指定しなかった場合は、AWS_ACCESS_KEY_ID
環境変数または設定ファイルで指定する必要があります。 -
--secret_key
- アクセスキーに対応する有効なシークレットキー。このパラメータを使用して指定しなかった場合は、AWS_SECRET_ACCESS_KEY
環境変数または設定ファイルで指定する必要があります。 -
--security_token
— 有効なセッショントークン。このパラメータを使用して指定しなかった場合は、AWS_SECURITY_TOKEN
環境変数または設定ファイルで指定する必要があります。
以前は、IAM ユーザー認証情報やルート認証情報などの永続認証情報を awscurl
で使用するのが一般的でしたが、これは推奨されません。代わりに、AWS
セキュリティトークンサービス (STS) API のいずれか、またはそのAWS CLI ラッパーのいずれかを使用して、一時的な認証情報を生成してください。
STS 呼び出しによって返される AccessKeyId
、SecretAccessKey
、および SessionToken
値は、設定ファイルではなく、シェルセッション内の適切な環境変数に置くのが最善です。その後、シェルを終了すると、認証情報は自動的に破棄されますが、設定ファイルの場合はそうではありません。同様に、一時的な認証情報について、必要と思われる期間よりも長い期間をリクエストしないでください。
次の例は、Linux シェルで 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=$(cat $output | jq '.Credentials''.AccessKeyId') SecretAccessKey=$(cat $output | jq '.Credentials''.SecretAccessKey') SessionToken=$(cat $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