AWSをコマンドラインから操作するためのツール、AWS CLI。その裏側では、~/.aws
ディレクトリにある設定ファイルが、あなたが誰としてAWSにアクセスするかを管理しています。
この記事では、credentials
とconfig
という2つの中心的なファイルが、どのようにして「正社員(IAMユーザー)」と「嘱託社員(IAM Identity Center経由のSSO)」という異なる身分を管理しているのかを、「会社」の例えを使って解説します。
~/.aws/credentials
:「正社員」のIDカード保管庫
このファイルは、永続的な認証情報、つまり有効期限のない「アクセスキー」を保管する場所です。これは、AWSアカウントという会社に籍を置く**「正社員(IAMユーザー)」**のIDカードにあたります。
# ~/.aws/credentials
[default]
aws_access_key_id = AKIA...
aws_secret_access_key = ...
[another-project-user]
aws_access_key_id = AKIA...
aws_secret_access_key = ...
-
[プロファイル名]
:default
やanother-project-user
といった各ブロックが、一人の「正社員」を定義します。 -
aws_access_key_id
/aws_secret_access_key
: これがIDカードそのものです。CLIはこのキーを使って、AWSに直接認証をリクエストします。
~/.aws/config
:「嘱託社員」の業務マニュアル
このファイルは、より複雑な設定や、**「嘱託社員(SSO)」**としての働き方を定義する場所です。SSOの設定は、大きく2つのブロックに分かれています。
1. [sso-session]
ブロック:総合受付の情報 🏢
このブロックは、認証を行う「総合受付」、つまりIAM Identity Centerのポータルがどこにあるかを定義します。
# ~/.aws/config
[sso-session my-sso-session]
sso_start_url = [https://d-xxxxxxxxxx.awsapps.com/start/](https://d-xxxxxxxxxx.awsapps.com/start/)
sso_region = ap-northeast-1
-
sso_start_url
: 認証のためにアクセスすべきポータルの住所です。 -
ポイント: この
sso-session
ブロックは、複数のプロファイルで使い回すことができます。総合受付は一つで良いからです。
2. [profile]
ブロック:具体的な業務指示書 👨🏫
このブロックは、一人の「嘱託社員」が、どの会社で、どの役職で働くかを定義する具体的な指示書です。
# ~/.aws/config
[profile my-sso-profile]
sso_session = my-sso-session
sso_account_id = 123456789012
sso_role_name = MyAdminRole
region = ap-northeast-1
-
sso_session
: どの「総合受付」で認証を受けるかを指定し、上記のsso-session
ブロックと紐付けます。 -
sso_account_id
: 働くべき「会社」のIDです。 -
sso_role_name
: その会社で借りるべき「役職」の名前です。
SSO認証の仕組み:CLIとブラウザの華麗な連携 ✨
config
ファイルにはパスワードがありません。では、どうやって認証するのでしょうか?
答えは 「ブラウザとの連携」 です。
- SSOプロファイルでコマンド (
aws s3 ls --profile my-sso-profile
) を実行します。 - 有効な認証キャッシュがなければ、CLIは自動的にブラウザを起動します。
この時、単にエラーが出るだけでブラウザが起動しない場合は↓のコマンドを実行aws sso login --profile my-sso-profile
- あなたはブラウザ上で、見慣れたログイン画面で安全にユーザー名とパスワードを入力します。
- 認証成功後、AWSから発行された一時的な認証情報が安全にCLIへ渡されます。
- CLIはその情報をキャッシュ (
~/.aws/sso/cache
) し、コマンドを実行します。
この仕組みにより、パスワードのような重要な情報をファイルに保存することなく、安全に認証を行えます。
まとめ:一度の認証で、複数の仕事をこなす
SSO設定の最大の利点は、一度の認証でセッション全体が有効になることです。
aws sso login --profile my-sso-profile
を一度実行すれば、同じ sso-session
を使っている他のプロファイル(例えば、別の会社・役職が定義された[profile another-sso-job]
)も、再度ログインすることなく利用可能になります。
総合受付で一度本人確認を済ませれば、その日一日、許可された全ての部署に自由に出入りできるのと同じです。この「正社員」と「嘱託社員」の働き方の違いを理解すれば、あなたのAWS CLIライフはより快適で安全なものになるでしょう。