AWS CLIでIAMユーザーのプロファイルを設定する - 認証情報の管理と操作方法

どうも、Shinyaです。この記事では、AWS CLIでIAMユーザーのプロファイルを設定する方法について解説します。以前の記事ではAWS CLIの導入方法を紹介しましたが、今回はAWS CLIを使用する際に必要となるIAMユーザーの認証情報の設定方法と操作方法について整理します。
- AWS CLIでプロファイルを設定する方法を知りたい人
- 複数のIAMユーザーを使い分けたい人
- AWS CLIの認証情報の管理方法について学びたい人
- AWSの認証情報を安全に取り扱いたい人
この記事では、AWS CLIがインストール済みであることを前提としています。まだインストールしていない場合は、以下の記事を参照してください。
プロファイルとは
プロファイルは、CLIやアプリケーションからAWSのサービスを利用する際に使用するIAMユーザーの認証情報を保管・使用するための仕組みです。プロファイルを使用することでIAMユーザーの認証情報をコードにハードコーディングする必要がなくなり、安全な開発と運用を行うことができます。
プロファイルはIAMユーザーに応じて複数作成でき、用途に合わせて任意に切り替えることが可能です。
プロファイルの設定にはIAMユーザーのアクセスキーとシークレットアクセスキーが必要です。これらは認証情報であるため取り扱いに注意し、保管場所に気をつける必要があります。Bitwardenなどのパスワードマネージャーでの管理が推奨されます。
前提条件
- AWS CLIがインストール済みであること
- IAMユーザーが作成済みであること
- IAMユーザーのアクセスキーとシークレットアクセスキーを取得済みであること
AWS CLIを使用する際には、必要最小限の操作権限がアタッチされたIAMユーザーを使用することが推奨されます。IAMユーザーの作成方法については、AWS公式ドキュメントを参照してください。
プロファイルの構造
プロファイル情報は~/.awsディレクトリに保存されます。
~/.aws/
├── config # リージョンや出力形式の設定
└── credentials # アクセスキーとシークレットアクセスキー
この2つのファイルが、プロファイル作成時に指定した名前で関連付けられています。
config
configにはIAMユーザーが存在するリージョンの情報や、CLIの実行結果の出力形式が保存されています。
[default]
region = ap-northeast-1
output = json
[profile my-project]
region = ap-northeast-1
output = json
credentials
credentialsにはIAMユーザーのアクセスキーとシークレットアクセスキーのペアが保存されています。
[default]
aws_access_key_id = xxx
aws_secret_access_key = yyy
[my-project]
aws_access_key_id = xxx
aws_secret_access_key = zzz
credentialsファイルにはIAMユーザーの認証情報が平文で保存されています。このファイルをGitリポジトリにコミットしたり、他者と共有したりしないように注意が必要です。
デフォルトプロファイルの作成
デフォルトプロファイルは、特定のプロファイルを指定しない場合にすべてのCLI操作で使用される共通プロファイルです。デフォルトプロファイルは1つのみ作成可能で、2回目以降の実行では上書きされます。
以下のコマンドで対話形式で作成できます。
aws configure
対話形式でIAMユーザーの認証情報を入力します。
AWS Access Key ID [None]: IAMユーザーのアクセスキー
AWS Secret Access Key [None]: IAMユーザーのシークレットアクセスキー
Default region name [None]: ap-northeast-1
Default output format [None]: json
以下のコマンドでデフォルトプロファイルの設定値を確認できます。
aws configure list
Name Value Type Location
---- ----- ---- --------
profile <not set> None None
access_key ******************* shared-credentials-file
secret_key ******************* shared-credentials-file
region ap-northeast-1 config-file ~/.aws/config
名前付きプロファイルの作成
デフォルトプロファイルは1つしか作成できないため、複数のIAMユーザーを使い分ける場合は不便です。名前付きプロファイルを作成することで、IAMユーザーの役割ごとにプロファイルを管理できます。
以下のコマンドで、--profileオプションに任意のプロファイル名を指定して作成します。
aws configure --profile my-project
デフォルトプロファイルと同様に、対話形式でIAMユーザーの認証情報を入力します。
AWS Access Key ID [None]: IAMユーザーのアクセスキー
AWS Secret Access Key [None]: IAMユーザーのシークレットアクセスキー
Default region name [None]: ap-northeast-1
Default output format [None]: json
以下のコマンドで名前付きプロファイルの設定値を確認できます。
aws configure list --profile my-project
Name Value Type Location
---- ----- ---- --------
profile my-project manual --profile
access_key ******************* shared-credentials-file
secret_key ******************* shared-credentials-file
region ap-northeast-1 config-file ~/.aws/config
プロファイルの特定項目を更新
プロファイルの設定値を更新する場合は、~/.aws配下のファイルを直接編集するのではなく、CLIからaws configure setコマンドで更新します。
デフォルトプロファイルの場合は以下の通りです。
aws configure set region ap-northeast-1
名前付きプロファイルの場合は--profileオプションを指定します。
aws configure set region ap-northeast-1 --profile my-project
CSV形式での一括インポート
AWSマネジメントコンソールからダウンロードしたCSV形式のIAM認証情報を、以下のコマンドで一括インポートできます。
aws configure import --csv file://credentials.csv
インポートするCSVファイルは、IAMユーザー作成時にダウンロードできるアクセスキーのCSVファイルの形式に準拠している必要があります。詳細はAWS公式ドキュメントを参照してください。
まとめ
この記事では、AWS CLIでIAMユーザーのプロファイルを設定する方法について解説しました。プロファイルは認証情報をコードから分離して管理するための仕組みであり、デフォルトプロファイルと名前付きプロファイルを使い分けることで、複数のIAMユーザーを用途に応じて切り替えることが可能です。configとcredentialsの2つのファイルで構成され、CLIコマンドを通じて安全に管理できます。
参考リンク:




