AWS CLIのクレデンシャル設定ガイド。IAM Identity Centerで一時認証情報を使おう
はじめに
AWS CLIを使うには、AWSに「自分は誰か」を伝えるための クレデンシャル(認証情報) が必要です。
クレデンシャルの設定方法はいくつかありますが、結論から言うと IAM Identity Center(旧AWS SSO)を使った一時的な認証情報 がベストプラクティスです。
この記事では、なぜ一時認証が推奨されるのかと、具体的な設定手順を解説します。
認証方式の比較
AWS CLIで利用できる主な認証方式は以下の3つです。
| 方式 | セキュリティ | 推奨度 | 用途 |
|---|---|---|---|
| IAM Identity Center(SSO) | 高(一時認証情報) | 推奨 | 組織での日常利用 |
| IAM Roles Anywhere | 高(一時認証情報) | 推奨 | オンプレミスやCI/CD環境 |
| IAMユーザーのアクセスキー | 低(永続認証情報) | 非推奨 | レガシー環境、やむを得ない場合のみ |
なぜ永続的なアクセスキーは非推奨なのか
aws configureでアクセスキーIDとシークレットアクセスキーを設定する方法は、最もシンプルですが 最もリスクが高い 方式です。
# こうやって設定したことがある方は多いはず
aws configure
AWS Access Key ID: AKIAIOSFODNN7EXAMPLE
AWS Secret Access Key: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
この方式の問題点:
- キーが漏洩したら即アウト —
~/.aws/credentialsにキーが平文で保存される。PC紛失、gitへの誤コミット、スクリーンショットへの映り込みなどで漏洩するリスクがある - キーは無期限 — 手動でローテーションしない限り永久に有効。漏洩に気づくまでの間、不正利用され続ける
- AWSも公式に非推奨 — 2024年以降、AWSはIAMユーザーの長期アクセスキーの使用を明確に非推奨としている
IAM Identity Centerとは
IAM Identity Center(旧AWS SSO)は、AWS Organizationsと連携して複数のAWSアカウントへのアクセスを一元管理するサービスです。
ポイントは以下の通りです。
- ブラウザでログインするだけで 一時的な認証情報 が自動発行される
- 認証情報は 数時間で自動失効 する(デフォルト1時間、最大12時間)
- アクセスキーをローカルに保存する必要がない
- 複数AWSアカウントの切り替えも簡単
セットアップ手順
前提条件
- AWS Organizationsが有効であること
- IAM Identity Centerが有効化されていること(管理者に確認)
- 自分のユーザーアカウントが作成済みであること
個人アカウントの場合: AWS Organizationsを有効化し、IAM Identity Centerを自分でセットアップする必要があります。手順は後述します。
ステップ1:AWS CLIのインストール
まだインストールしていない場合は、AWS CLI v2をインストールします。
macOS(Homebrew):
brew install awscli
macOS(公式インストーラー):
curl "https://awscli.amazonaws.com/AWSCLIV2.pkg" -o "AWSCLIV2.pkg"
sudo installer -pkg AWSCLIV2.pkg -target /
バージョン確認:
aws --version
# aws-cli/2.x.x Python/3.x.x Darwin/... が表示されればOK
IAM Identity CenterのSSO機能を使うには AWS CLI v2 が必要です。v1では利用できません。
ステップ2:SSOセッションの設定
以下のコマンドでSSO接続を設定します。
aws configure sso
対話形式で以下の情報を入力します。
SSO session name (Recommended): my-sso
SSO start URL [None]: https://d-xxxxxxxxxx.awsapps.com/start
SSO region [None]: ap-northeast-1
SSO registration scopes [sso:account:access]:
| 項目 | 説明 |
|---|---|
| SSO session name | 任意の名前。複数SSOを使い分ける場合に便利 |
| SSO start URL | IAM Identity CenterのスタートURL。管理者から共有される |
| SSO region | IAM Identity Centerが有効なリージョン |
| SSO registration scopes | デフォルトのままEnterでOK |
コマンドを実行するとブラウザが開き、AWSのログインページが表示されます。ログインして認可を許可してください。
ログイン後、利用可能なアカウントとロールが表示されます。
There are N AWS accounts available to you.
Using the account ID xxxxxxxxxxxx
The only role available to you is: AdministratorAccess
CLI default client Region [None]: ap-northeast-1
CLI default output format [None]: json
CLI profile name [...]: dev
ステップ3:設定の確認
設定が完了すると、~/.aws/configに以下のようなプロファイルが作成されます。
[profile dev]
sso_session = my-sso
sso_account_id = xxxxxxxxxxxx
sso_role_name = AdministratorAccess
region = ap-northeast-1
output = json
[sso-session my-sso]
sso_start_url = https://d-xxxxxxxxxx.awsapps.com/start
sso_region = ap-northeast-1
sso_registration_scopes = sso:account:access
~/.aws/credentialsにアクセスキーは保存されません。 これが永続キー方式との大きな違いです。
ステップ4:ログインと利用
SSOセッションにログインします。
aws sso login --profile dev
ブラウザが開き、認証が完了すると一時的な認証情報が取得されます。
以下のコマンドで正しく認証できているか確認しましょう。
aws sts get-caller-identity --profile dev
{
"UserId": "AROAEXAMPLE:user@example.com",
"Account": "xxxxxxxxxxxx",
"Arn": "arn:aws:sts::xxxxxxxxxxxx:assumed-role/AWSReservedSSO_AdministratorAccess_abc123/user@example.com"
}
ステップ5:デフォルトプロファイルの設定(任意)
毎回--profile devを指定するのが面倒な場合は、環境変数でデフォルトプロファイルを設定できます。
# .zshrc や .bashrc に追加
export AWS_PROFILE=dev
これで--profileを省略してもdevプロファイルが使われます。
# --profile なしで実行できる
aws s3 ls
セッションの有効期限と再ログイン
一時認証情報には有効期限があります。
- SSOセッション: デフォルト8時間(管理者が1〜12時間で設定可能)
- ロールセッション: デフォルト1時間(最大12時間)
期限が切れると以下のようなエラーが表示されます。
Error: The SSO session associated with this profile has expired or is otherwise invalid.
To refresh this SSO session run aws sso login with the corresponding profile.
再ログインするだけで復帰できます。
aws sso login --profile dev
個人アカウントでのIAM Identity Centerセットアップ
組織ではなく個人のAWSアカウントでIAM Identity Centerを使いたい場合の手順です。
1. AWS Organizationsの有効化
AWSマネジメントコンソールで AWS Organizations を開き、「組織を作成」をクリックします。個人アカウントが管理アカウントになります。
2. IAM Identity Centerの有効化
AWSマネジメントコンソールで IAM Identity Center を開き、「有効にする」をクリックします。
3. ユーザーの作成
IAM Identity Centerの「ユーザー」から自分のユーザーを作成します。メールアドレスを入力し、招待メールから初回パスワードを設定します。
4. 許可セットの作成
「許可セット」から AdministratorAccess (または必要な権限)の許可セットを作成します。
5. AWSアカウントへの割り当て
「AWSアカウント」から自分のアカウントを選択し、作成したユーザーと許可セットを割り当てます。
これで、個人アカウントでもIAM Identity CenterによるSSO認証が利用できるようになります。
Claude CodeのAWSプラグインとの連携
ここまでの設定が完了していれば、Claude CodeのAWSプラグイン(Agent Plugins for AWS)がそのまま利用できます。
# SSOでログイン
aws sso login --profile dev
# デフォルトプロファイルを設定
export AWS_PROFILE=dev
# Claude Codeを起動 → AWSプラグインが認証情報を利用可能に
claude
Claude Codeは環境変数やAWS CLIの設定を自動的に参照するため、追加の設定は不要です。
プラグインの導入方法は Claude CodeのAWSプラグインが便利すぎる。デプロイもサーバーレスも会話だけで完結する時代 を参照してください。
まとめ
- AWS CLIのクレデンシャルは IAM Identity Center(SSO)による一時認証情報 を使うのがベストプラクティス
- 永続的なアクセスキーは漏洩リスクが高く、AWSも公式に非推奨としている
aws configure sso→aws sso loginの流れで簡単に設定・利用できる- 認証情報は数時間で自動失効するため、万が一の漏洩時も被害が限定される
- 個人アカウントでもAWS Organizationsを有効化すればIAM Identity Centerが使える
- 設定済みのクレデンシャルはClaude CodeのAWSプラグインからそのまま利用可能