こんにちは、ニキです。
この記事では、AWS IAM Identity Center(SSO)を使ってAWS CLIを認証します。
認証方法にはいくつかの種類がある中で、利便性と安全性のバランスが最も優れているのがAWS IAM Identity Center(SSO)です。
以下の流れで解説します。
- AWS CLIのインストール
- プロファイルの設定
- 認証
- AWSリソースへのCLIアクセス
- セッション切れ後の再ログイン
SSOユーザーは作成済みの前提です。以下の記事で作成方法を解説しています。
ちなみに以下が認証情報の一覧です。上から推奨順に並んでいます。
下から2番目の方法を紹介している記事が多い印象ですが、場合によってはセキュリティリスクが問題になります。
AWS サービスを使用して開発するときは、AWS CLI が AWS との間でどのように認証するかを確立する必要があります。AWS CLI にプログラムでアクセスするための認証情報を設定するには、次のいずれかのオプションを選択します。オプションは推奨順になっています。
https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/cli-chap-authentication.html
AWS IAM Identity Center(SSO)でAWS CLIを認証
awsコマンドをインストールしていない場合は、インストールします。
% brew install awscli
以下のように表示されればインストール成功です。
% aws --version
aws-cli/2.13.22 Python/3.11.5 Darwin/22.3.0 source/x86_64 prompt/off
AWSのポータル画面へ移動し、SSO情報を取得します。
認証します。以下に先ほど取得した値を入力します。
- SSO start URL
- SSO region
% aws configure sso
SSO session name (Recommended):
WARNING: Configuring using legacy format (e.g. without an SSO session).
Consider re-running "configure sso" command and providing a session name.
SSO start URL [None]: https://***********.awsapps.com/start#
SSO region [None]: ap-northeast-1
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://device.sso.ap-northeast-1.amazonaws.com/
Then enter the code:
TBVF-MXTG
ブラウザが開きますので、Confirm and continueを選択します。
Allow を選択します。
以下のように表示されれば成功です。
それぞれ入力して、プロファイルを設定します。
- CLI default client Region
- CLI default output format
The only AWS account available to you is: ************
Using the account ID **********
The only role available to you is: AdministratorAccess
Using the role name "AdministratorAccess"
CLI default client Region [None]: ap-northeast-1
CLI default output format [None]: json
CLI profile name [AdministratorAccess]:
To use this profile, specify the profile name using --profile, as shown:
aws s3 ls --profile AdministratorAccess
以下のようにAWSリソースへアクセスできます。
% aws s3 ls --profile AdministratorAccess
セッション切れ後にAWS IAM Identity Center(SSO)でAWS CLIを再度認証
プロファイルに関連付けられたSSOセッションが期限切れになった場合、以下のようなエラーが出ます。
% aws s3 ls --profile AdministratorAccess
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.
SSOログインをして、SSOセッションをリフレッシュします。
% aws sso login --profile AdministratorAccess
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://device.sso.ap-northeast-1.amazonaws.com/
Then enter the code:
WVJH-TJDW
認証の流れは先ほどと同じです。
以下のようなメッセージが表示されればログイン成功です。
Successfully logged into Start URL: https://************.awsapps.com/start#
以下のコマンドでエラーが出なくなっていることを確認できます。
% aws s3 ls --profile AdministratorAccess
まとめ
この記事では、AWS IAM Identity Center(SSO)を使ってAWS CLIを認証する方法を解説しました。