AWS CLIのプロファイルにSSO認証を使う

はじめに

AWS CLIの認証情報のセットアップではアクセスキーを使う方法があるが、アクセスキーの仕様は基本的に推奨されていないのでSSO認証を使ってみる。

上記のドキュメントに沿って設定を行う。

環境

Windows 11 Professional
WSL2 Ubuntu 24.04 LTS
AWS CLI

準備

  • AWS CLI インストール済み

手順

ユーザの作成

1. AWSコンソールでIAM Identity Centerを有効にする

enable-identity-center-01 enable-identity-center-02

2. Identity Centerでユーザを作成する

create-user-01

※フォームでユーザを作成する。
今回はグループには追加しない。

3. 設定したメールアドレスにメールが届くので承認する

メール内のAccept invitation を選択し、アクセスをし、パスワードを設定する。

4. MFAデバイスの登録

認証アプリを今回は選択する。
create-user-02

許可セットの作成

1. Identity Centerのナビゲーションペイン「許可セット」→「許可セットを作成」を選択する

create-permission-sets-01

2.「PowerUserAccess」を選択する

create-permission-sets-02

3. 許可セットの詳細を設定する

デフォルトの設定のままとしておく。
create-permission-sets-03

4. 設定を確認をする

create-permission-sets-04

AWSアカウントへの割り当て

1. Identity Centerのナビゲーションペイン「AWSアカウント」→「ユーザーまたはグループを割り当て」を選択する

assign-aws-account-01

2. 作成したユーザーを選択する

assign-aws-account-02

3. 許可セットを割り当てする

許可セット「PowerUserAccess」を選択する。

assign-aws-account-03

4. 確認

assign-aws-account-04

5. 作成したユーザーでログインをしてアクセスポータルを確認する

assign-aws-account-05

WSLでセットアップ

1. aws configure ssoを実行する

aws configure sso
SSO session name (Recommended): cli
SSO start URL [None]: [SSOのスタートURL]
SSO region [None]: [SSOリージョン]
SSO registration scopes [sso:account:access]: (空白)

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:

[SSOのアクセスURL]
sso-access-01

2. SSOのアクセスURLにアクセスをし、「アクセスを許可」を行う

「アクセスを許可」を行う sso-access-02

3. 追加の情報を入力する

項目
Default client Regionap-northeast-1
CLI default output formatjson
Profile name空白
The only AWS account available to you is: [アカウントID]
Using the account ID [アカウントID]
The only role available to you is: PowerUserAccess
Using the role name "PowerUserAccess"
Default client Region [None]: ap-northeast-1
CLI default output format (json if not specified) [None]: json
Profile name [PowerUserAccess-[アカウントID]]: (空白)
To use this profile, specify the profile name using --profile, as shown:

aws sts get-caller-identity --profile PowerUserAccess-[アカウントID]

4. 確認

3で最後に書かれたコマンドを実行して確認をしておく。

aws sts get-caller-identity --profile PowerUserAccess-[アカウントID]

アウトプット

{
    "UserId": "[アクセスキー]:cli-user",
    "Account": "[アカウントID]",
    "Arn": "arn:aws:sts::[アカウントID]:assumed-role/AWSReservedSSO_PowerUserAccess_[組織ID]/cli-user"
}

AWS CLIを使う

S3のバケット一覧の取得

aws --profile PowerUserAccess-[アカウントID] s3 ls
2024-11-08 10:42:25 game-captures
2024-11-10 08:44:23 lambda-layer-for-nodej
2024-11-08 11:40:30 media-converted-game-captures

取得できてる!

Amazon Q Developer CLIで使う

q chat

q chat
> PowerUserAccess-[アカウントID] のプロファイルを使って S3バケットのの一覧を取得して
> PowerUserAccess-[アカウントID] のプロファイルを使って S3バケットのの一覧を取得して

AWS CLIを使用して、PowerUserAccess-[アカウントID]プロファイルでS3バケットの一覧を取得します。以下のコマンドを実行します:



Use AWS CLI
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Running aws cli command:
Service name: s3api
Operation name: list-buckets
Parameters:
Profile name: PowerUserAccess-[アカウントID]
Region: us-east-1
Label: List S3 buckets

Using AWS CLI...
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔

🟢 Completed in 1.18s


PowerUserAccess-[アカウントID] プロファイルで S3 バケットの一覧を取得しました。

現在のアカウントには以下の 3 つの S3 バケットがあります:

1. game-captures
   • 作成日: 2019年1月26日

2. lambda-layer-for-nodej
   • 作成日: 2024年6月29日

3. media-converted-game-captures
   • 作成日: 2024年1月13日

バケットの所有者は "******" です。

おぉ!できている。

参考

おわりに

今まで、面倒くさくてアクセスキーを使っていたがセキュリティの観点からSSOを使って作業をするようにしたかったので使ってみた。
セットアップは少し作業がいるがわかってしまえばこちらのほうが良い。
次回からはこれを使っていこう…!

Hugo で構築されています。
テーマ StackJimmy によって設計されています。