メインコンテンツまでスキップ

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

· 約7分
Shinya Kato
DayoneLabs管理人、ソフトウェア開発者、OSS開発者

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ユーザーのアクセスキーとシークレットアクセスキーを取得済みであること
IAMユーザーについて

AWS CLIを使用する際には、必要最小限の操作権限がアタッチされたIAMユーザーを使用することが推奨されます。IAMユーザーの作成方法については、AWS公式ドキュメントを参照してください。

プロファイルの構造

プロファイル情報は~/.awsディレクトリに保存されます。

~/.aws/
├── config # リージョンや出力形式の設定
└── credentials # アクセスキーとシークレットアクセスキー

この2つのファイルが、プロファイル作成時に指定した名前で関連付けられています。

config

configにはIAMユーザーが存在するリージョンの情報や、CLIの実行結果の出力形式が保存されています。

~/.aws/config
[default]
region = ap-northeast-1
output = json

[profile my-project]
region = ap-northeast-1
output = json

credentials

credentialsにはIAMユーザーのアクセスキーとシークレットアクセスキーのペアが保存されています。

~/.aws/credentials
[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ファイルの形式

インポートするCSVファイルは、IAMユーザー作成時にダウンロードできるアクセスキーのCSVファイルの形式に準拠している必要があります。詳細はAWS公式ドキュメントを参照してください。

まとめ

この記事では、AWS CLIでIAMユーザーのプロファイルを設定する方法について解説しました。プロファイルは認証情報をコードから分離して管理するための仕組みであり、デフォルトプロファイルと名前付きプロファイルを使い分けることで、複数のIAMユーザーを用途に応じて切り替えることが可能です。configcredentialsの2つのファイルで構成され、CLIコマンドを通じて安全に管理できます。


参考リンク:

免責事項:
当記事は管理人の開発時に書き留められたメモをもとにAIを活用して編纂されたものです。 管理人は記事の公開前に内容の校正・校閲を行い、記事の信頼性と正確性の向上に務めますが、それらを保証するものではありません。 また、当記事の編集時の誤字やコード例の不具合等によって読者が何らかの損害等を被った場合でも、管理人は一切の責任を負いません。 当記事に掲載したコンテンツの利用については自己責任でお願い致します。