[AWS SDKs]ローカル開発環境でのアクセスキー/シークレットキーの管理について

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

先日、弊社渡辺が「プログラムではアクセスキー/シークレットキーを使わずにRoleを利用する」の記事を書きました。今回は、AWS SDKを使用するプログラムをローカルマシンで開発する場合、どのようにアクセスキー/シークレットキーを保持するかについて書きたいと思います。

Credentialsファイル

結論から書くと、Credentialsファイルを用意し、そこにアクセスキー/シークレットキーを記述します。以下、そのCredentialsファイルについての説明です。

1.環境について

.NET用SDK以外の、全てのAWS-SDKにてCredentialsファイルを参照するようです。

All the SDKs except the .NET SDK now can automatically look for credentials in the same environment variables: AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY.

Mike Pope A New and Standardized Way to Manage Credentials in the AWS SDKs より

2.Credentialsファイルについて

AWSにアクセスするためのクレデンシャル情報を記述するためのファイルです。デフォルトでは「credentials」のファイル名で、以下のフォルダに記述します。

~/.aws/credentials (Linux/Mac)
%USERPROFILE%\.aws\credentials (Windows)

Mike Pope A New and Standardized Way to Manage Credentials in the AWS SDKs より

書式は、以下の通りです。

[default]
aws_access_key_id = YOUR_ACCESS_KEY
aws_secret_access_key = YOUR_SECRET_KEY
 
[Test]
aws_access_key_id = TEST_ACCESS_KEY
aws_secret_access_key = TEST_SECRET_KEY

デフォルトでは「default」に記述したアクセスキー/シークレットキーをAWS SDKは使用します。「default」以外の値を使用したい場合は、環境変数「AWS_PROFILE」に値をセットすることで、そちらを参照するようになるようです(これについては検証してませんが)。

作成したcredentialsファイルには、(Linuxでは)chmod 600などでプログラムからアクセスできるようにしてください。

まとめ

アクセスキー/シークレットキーの管理について

  • ローカル開発環境ではCredentialsファイル
  • EC2上ではRole

とすることで、プログラムから独立してアクセスキー/シークレットキーを持たせる事ができます。

プログラムから独立させることで

  • うっかりリポジトリに上げてしまうミスの防止
  • 一つのEC2上で複数のプログラムを稼働させる際の、定義の一元化

などのメリットがあります。

アクセスキー/シークレットキーの保持について、一助になれば幸いです。