Tech BlogAWSツール & 技術ブログ

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 ssoaws sso login の流れで簡単に設定・利用できる
  • 認証情報は数時間で自動失効するため、万が一の漏洩時も被害が限定される
  • 個人アカウントでもAWS Organizationsを有効化すればIAM Identity Centerが使える
  • 設定済みのクレデンシャルはClaude CodeのAWSプラグインからそのまま利用可能