どうも、Shinyaです。
この記事では、AWS CLIを使用してIAMユーザー毎に認証プロファイルを作成する方法について書いていきます。
AWSのサービスを利用してアプリケーションを開発していると、ローカル環境で動作確認を行う際にアプリで使用するIAMユーザーの認証情報を環境変数等に登録して使用したい場面があると思います。
しかし、AWSで運用しているアプリケーションで使用されているIAMユーザーが数個程度であれば環境変数を使用して個別に管理することも可能かもしれませんが、使用するIAMユーザーの数が増加すると環境変数を使用した方法ではあっという間に管理が困難になることが容易に予想できます。
そのため、環境変数を直接使用する代わりにIAMユーザー毎の認証プロファイルを作成して管理することがAWS公式のガイドラインで推奨されています。
事前準備
この記事ではAWS CLIを使用してIAMユーザー毎の認証プロファイルを作成していくので、事前にAWS CLIをインストールしておく必要があります。そのため、AWS CLIをまだインストールしていない方は、次の記事を参考にAWS CLIをインストールしてください。
IAMユーザーの認証情報を設定する
まずは、AWS CLIでIAMユーザーの認証プロファイルを作成するに当たって、実際に使用するIAMユーザーの認証情報を設定していきます。
AWS IAMで検証用のIAMユーザーを作成する
この記事で認証プロファイルを作成する際に使用する検証用のIAMユーザーをAWS IAMで作成しておきます。
先日、WebブラウザからAWS IAMにアクセスしてIAMユーザーを作成する方法を以下の記事で書きました。そのため、IAMユーザーの作成方法がわからない人は以下の記事を参考にIAMユーザーを作成してみてください。
今回の記事では以下のような検証用のIAMユーザーを使用していきます。これはAmazon S3のリソースに対して読み取り権限だけがアタッチされている参照ユーザーです。

作成したIAMユーザーのアクセストークンを発行する
次に、AWS CLIで認証プロファイルを作成する際には、作成したIAMユーザーのアクセスキーが必要なので、IAMユーザーの作成と併せてアクセスキーを発行しておきます。
作成したIAMユーザーの詳細画面から、「概要」のセクションにある「アクセスキーを作成」をクリックしてください。

上記の「アクセスキーを作成」をクリックすると、次のようなアクセスキーのユースケースを選択する画面に遷移します。
この画面でユースケースを選択するとAWS公式から推奨されるベストプラクティスが代替案として表示されます。
ほとんどの場合、IAMユーザーを使用したアクセスキーを発行する方法でも問題はありませんが、セキュリティ等の要件によってアクセスキーの発行では不安という場合はAWS公式から推奨された代替案の使用を検討してみてください。
また、アクセスキーを使用する場合でも、AWS公式から次のようなベストプラクティスが推奨されています。
- アクセスキーをプレーンテキストもしくはコードリポジトリで、またはコードに保存しないでください。
- 不要になったアクセスキーを無効化または削除します。
- 最小権限の許可を有効にします。
- アクセスキーを定期的にローテーションします。
アクセスキーの管理の詳細については、「AWS アクセスキーを管理するためのベストプラクティス」を参照してください。
AWS公式によるアクセスキー管理のベストプラクティスについての説明から抜粋
今回の記事では参考までに次の手順で各項目を選択しました。
- ユースケース: コマンドラインインターフェース(CLI)
- 「確認」をチェック
- 「次へ」ボタンをクリック

そうすると、アクセスキーを管理する際の説明タグを設定する画面に遷移しますので、必要な場合は任意の説明タグを入力してください。
説明タグについては入力が必須ではないので、入力が不要の場合はそのまま「アクセスキーを作成」のボタンをクリックしてください。

上記の「アクセスキーを作成」をクリックすると、発行されたアクセスキーとシークレットアクセスキーを取得するための画面に遷移します。
アクセスキーについては後でも確認することはできますが、シークレットアクセスキーはこの画面でしか確認できないので、確実にコピーして安全な場所に保管するようにしてください。アクセスキーとシークレットアクセスキーを安全な場所に保存したら、「完了」のボタンを押してください。

シークレットアクセスキーのコピーは、「表示」を押して値をコピーするよりも、「コピー」アイコンを使用してコピーした方が安全かつ確実です。

AWS CLIで認証プロファイルを作成する
さて、ここまでの作業でIAMユーザーの認証情報を設定できたので、実際にAWS CLIでこの認証情報を使用して認証プロファイルを作成していきます。
awsコマンドで認証プロファイルを作成する
コマンドラインで次のaws
コマンドを実行してください。
aws configure --profile test-day-one-shinya
コマンドラインで上記のaws
コマンドを実行すると、先ほど作成したIAMユーザーの認証情報を対話形式で質問されますので、順番に次のように回答していきましょう。
- AWS Access Key ID: プロファイルに登録するIAMユーザーのアクセスキー
- AWS Secret Access Key: プロファイルに登録するIAMユーザーのアクセスシークレットキー
- Default region name: デフォルトで使用したい任意のリージョンを入力
- Default output format: 特にこだわりがなければ「json」でOK

上記の入力が完了すると、先に入力したプロファイル名で認証プロファイルが作成されます。
作成した認証プロファイルは次のaws
コマンドで一覧を表示することができます。
aws configure list-profiles
作成した認証プロファイルを実際に使用する
せっかく認証プロファイルを作成したので、実際に動作確認してみましょう。
試しに、コマンドラインで次のawsコマンドで実行して、検証用に作成したIAMユーザーの認証プロファイルでS3バケットの中身を参照できるか確認してみます。
aws s3 ls s3://test-day-one-shinya --profile test-day-one-shinya
そうすると、次のようにS3バケットの中身を取得することができました。
yyyy-MM-dd HH:mm:ss 0 hello_world
