AWS CLIでIAM Identity Center(旧SSO)を使ってみよう
今回はAWS CLIからIAM Identity Center(旧称AWS SSO)を使う方法について解説します。業務で複数のAWSアカウントを扱う場合に必要だったため、試行錯誤した内容を整理しました。
IAM Identity Centerとは?
IAM Identity Center(旧称AWS Single Sign-On)は、複数のAWSアカウントやアプリケーションへのアクセスを一元管理できるサービスです。一度認証すれば、複数のAWSアカウントをシームレスに切り替えられるため、開発効率が大幅に向上します。
AWS CLIでの設定方法
前提条件
- AWS CLI v2がインストールされていること
- 所属組織でIAM Identity Centerが設定済みであること
- IAM Identity Centerへのアクセス情報(SSOのスタートURL、リージョン)を知っていること
1. AWS CLI設定コマンドを実行する
ターミナルで以下のコマンドを実行します:
aws configure sso
2. 対話形式で必要情報を入力
SSO session name (Recommended): my-sso
SSO start URL [None]: https://my-sso-portal.awsapps.com/start
SSO region [None]: us-west-2
SSO registration scopes [None]: sso:account:access
- SSO session name: セッション名(任意の名前でOK)
- SSO start URL: 組織のSSO開始URL(管理者から提供されるはず)
- SSO region: SSOが設定されているリージョン(例:us-west-2)
- SSO registration scopes: 通常はデフォルト値(sso:account:access)でOK
3. ブラウザでの認証
コマンド実行後、ブラウザが自動的に開き、SSO認証ページが表示されます:
Attempting to automatically open the SSO authorization page in your default browser.
If the browser does not open or you wish to use a different device to authorize this request, open the following URL:
https://oidc.us-west-2.amazonaws.com/authorize?response_type=code&client_id=xxxx
ブラウザが自動で開かない場合は、表示されたURLをコピーしてブラウザで開きます。
4. AWSアカウントとロールの選択
認証が成功すると、アクセス可能なAWSアカウントの一覧が表示されます:
There are 24 AWS accounts available to you.
[DC] Staging, info+dev@example.com (234567891)
> [DC] Dev, info+dev@example.com (123456789)
[DC] Production, info+dev@example.com (345678912)
矢印キーと Enter で使用するアカウントを選択します。次に、使用するロールを選択します:
Using the role name "AdministratorAccess"
5. プロファイル設定の完了
最後にデフォルトのリージョン、出力フォーマット、プロファイル名を設定します:
Default client Region [None]: us-west-2
CLI default output format (json if not specified) [None]: json
Profile name [AdministratorAccess-123456789]: dc-dev
- Default client Region: 通常使用するリージョン(例:us-west-2)
- CLI default output format: 通常は json がおすすめ
- Profile name: プロファイル名(任意だが、わかりやすい名前がおすすめ)
これで設定完了です!以下のメッセージが表示されます:
To use this profile, specify the profile name using --profile, as shown:
aws sts get-caller-identity --profile dc-dev
設定の確認
設定が正しく行われたか確認するには、以下のコマンドを実行します:
aws sts get-caller-identity --profile dc-dev
正常に設定されていれば、以下のような結果が表示されます:
{
"UserId": "XXXXX:hidetaka@example.com",
"Account": "123456789",
"Arn": "arn:aws:sts::123456789:assumed-role/AWSReservedSSO_AdministratorAccess_123xxx456xxx789/hidetaka@example.com"
}
IAM Identity Centerの自動トークン更新機能について
AWS CLI v2では、IAM Identity Centerの認証情報を自動的に更新する機能が実装されています。この機能により、長時間の作業中にセッションが切れるたびに再認証する手間が省けます。
自動トークン更新の仕組み
-
aws sso login --profile dc-devでログインすると、リフレッシュトークンとアクセストークンがキャッシュされます - アクセストークンは1時間ごとにチェックされ、期限切れの場合はリフレッシュトークンを使用して自動的に更新されます
- リフレッシュトークンが有効な間は、新しいアクセストークンが自動的に取得され続けます
- リフレッシュトークンが期限切れになった場合のみ、再度ログインが必要になります
設定ファイルの構造
上記の設定を行うと、~/.aws/config ファイルに以下のような設定が追加されます:
[profile dc-dev]
sso_session = my-sso
sso_account_id = 123456789
sso_role_name = AdministratorAccess
region = us-west-2
output = json
[sso-session my-sso]
sso_region = us-west-2
sso_start_url = https://my-sso-portal.awsapps.com/start
sso_registration_scopes = sso:account:access
AWS CDKやその他のAWSツールでの使用方法
設定したプロファイルは、AWS CDK、Terraform、SAMなど他のAWSツールでも使用できます。
AWS CDKでの使用例
# プロファイルを指定してデプロイ
cdk deploy --profile dc-dev
# または環境変数を設定してデプロイ
export AWS_PROFILE=dc-dev
cdk deploy
SSO登録スコープについて
SSO registration scopes は、OAuth 2.0の仕組みの一部で、AWS CLIがユーザーアカウントに対してどのようなアクセス権限を要求するかを定義します。
デフォルト値の sso:account:access は、アカウント一覧とロール一覧を取得するための最小限の権限です。実際のAWSリソース(Lambda、EventBridgeなど)への操作権限はこれには含まれておらず、選択したIAMロール(例:AdministratorAccess)の権限に依存します。
セッションの終了方法
作業が終わったら、以下のコマンドでセッションをログアウトできます:
aws sso logout
もちろん、ログアウトせずに自動更新機能を活用することもできます。リフレッシュトークンの有効期限が切れるまでは自動的に認証が維持されます。
まとめ
IAM Identity Centerを使うことで、複数のAWSアカウントを効率的に管理できるようになります。特に:
- 一度の認証で複数アカウントへのアクセスが可能
- パスワードやアクセスキーの管理が不要
- トークンの自動更新機能で再認証の手間を最小化
- AWS CLIやCDKなど様々なツールでシームレスに使用可能
ぜひこの機能を活用して、効率的なAWS開発環境を整えましょう!
Discussion