一時的な認証情報を使用した IAM 認証 - Amazon Neptune

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

一時的な認証情報を使用した IAM 認証

Amazon Neptune は一時的な認証情報を使用した IAM 認証をサポートしています。

前のセクションのポリシー例などの IAM 認証ポリシーを使用して認証するために、引き受けたロールを使用できます。

一時的なセキュリティ認証情報を使用している場合は、AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEYSERVICE_REGION に加えて AWS_SESSION_TOKEN を指定する必要があります。

注記

一時的なセキュリティ認証情報は、セッショントークンを含めて、指定した期間が過ぎると失効します。

新しい認証情報をリクエストするときは、セッショントークンを更新する必要があります。詳細については、一時的なセキュリティ認証情報を使用して AWS リソースへのアクセスをリクエストするをご参照ください。

以下のセクションでは、一時的な認証情報のアクセスを許可する方法と取得方法について説明します。

一時的な認証情報を使用して認証するには

  1. Neptune クラスターにアクセスする権限を持つ IAM ロールを作成します。このロールの作成の詳細については、「Neptune へのアクセスを制御するために異なる種類の IAM ポリシーを使用する」を参照してください。

  2. 認証情報へのアクセスを許可するロールに信頼関係を追加します。

    AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEYAWS_SESSION_TOKEN を含む一時的な認証情報を取得します。

  3. Neptune クラスターに接続し、一時的な認証情報を使用してリクエストに署名します。リクエストへの接続と署名の詳細については、「AWS 署名バージョン 4 を使用した接続および署名」を参照してください。

一時的な認証情報を取得する方法は、環境に応じてさまざまです。

AWS CLI を使用した一時的な認証情報の取得

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

Neptune IAM 認証ロールに次の信頼関係を追加します。Neptune IAM 認証ロールがない場合は、Neptune へのアクセスを制御するために異なる種類の IAM ポリシーを使用する を参照してください。

{ "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 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 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. 以下のいずれかの方法を使用して接続します。

Neptune IAM 認証用の AWS Lambda のセットアップ

Lambda 関数が実行されるたび、AWS Lambda に認証情報が自動で格納されます。

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

Neptune IAM 認証ロールに次の信頼関係を追加します。Neptune IAM 認証ロールがない場合は、Neptune へのアクセスを制御するために異なる種類の IAM ポリシーを使用する を参照してください。

{ "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. Lambda 関数に AWSLambdaVPCAccessExecutionRole ロールを割り当てます。これは、VPC のみの Neptune リソースにアクセスするために必要です。

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

    詳細については、AWS LambdaデベロッパーガイドAWS Lambda 関数のエラーを参照してください。

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

    サンプルおよびサンプルコードの詳細については、「例: Python で署名バージョン 4 署名を使用して Neptune に接続」を参照してください。

Neptune IAM 認証用の Amazon EC2 のセットアップ

Amazon EC2 ではインスタンスプロファイルを使用して、認証情報を自動的に提供することができます。詳細については、IAM ユーザーガイドインスタンスプロファイルの使用を参照してください。

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

Neptune IAM 認証ロールに次の信頼関係を追加します。Neptune IAM 認証ロールがない場合は、Neptune へのアクセスを制御するために異なる種類の IAM ポリシーを使用する を参照してください。

{ "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 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 シェルでスクリプトを実行します。

    source credentials.sh

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

  4. 以下のいずれかの方法を使用して接続します。