はじめに
本記事では、AWS summit 2024にて講演のあった「20分間で分かるIAM全機能」を参考に、AWS CLIの認証にIAMユーザーを用いることの問題点、その代替としてIAM Identity Centerを用いる方法について纏めます。
IAM ユーザーを用いた認証とその問題点
IAMユーザーを用いた認証は、IAMコンソールから取得したIAMユーザー情報を、認証情報として設定することで行われ、その情報は~/.aws/credentials
および、~/.aws/config
に保存される。
問題点は、IAMユーザーのこれらの情報には有効期限が存在せず、この情報が漏洩するとIAM Userに付与されたポリシーを誰でもいつでもどこからでも利用できてしまう点であり、IAM公式ガイドでも「IAMユーザーの利用は非推奨」と表明されている。
恒常的なCredentialsが常にAWSの外に存在する
参考1(IAMユーザーを用いたAWS CLIの認証設定)
$ aws configure --profile userprod
AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
Default region name [None]: us-west-2
Default output format [None]: json
参考2(公式ドキュメントでもIAMユーザーを使うことは推奨されていない)
IAM Identity Centerを用いたSSO認証によるログイン
IAMユーザーを用いた認証の代わりに、IAM Identity Centerを用いた手法が挙げられる。
IAM Identity Centerを用いた認証は、IAMユーザーによる手法と同様の種類の情報を用いるが、それらの情報は最大12時間で無効となるため、IAMユーザーによる認証よりもセキュリティ的に強固である。
以下では実際にIAM Identity Centerを用いた手法の、セットアップと使用法を示す。
セットアップ
1. 許可セットの作成
管理者アカウントのIAM Identity Centerにて、マルチアカウント設定/許可セットより、IAM ポリシーを設定した許可セットを作成する。
2. 作成した許可セットの割り当て
3. sessionの作成と認証①
AWS access portalより、当該アカウントの利用したい許可セットのAccess keysを選択する。
4. sessionの作成と認証②
AWS access portalでAccess keysをクリックした際に出てくる情報(下の写真参考)を基に、CLIでのサインインを行う。登録した情報は~/.aws/config
に保存される。
$ aws configure sso
SSO session name (Recommended): my-sso
SSO start URL [None]: {SSO start URL}
SSO region [None]: {SSO Region}
SSO registration scopes [None]: sso:account:access
There are 2 AWS accounts available to you.
{使用するアカウントを選択}
Using the account ID XXXXXXXXXXXX
There are 2 roles available to you.
{使用する許可セットを選択}
CLI default client Region [None]: ap-northeast-1
CLI default output format [None]: json
CLI profile name [AWSAdministratorAccess-XXXXXXXXXXXX]: my-sso-name
使用法
作成した認証でcliコマンドを実行する際は、以下の例ように--profile my-sso-name
をオプションとして記載し利用する。
npx ampx sandbox --profile my-sso-name
aws s3 ls --profile my-sso-name
セッションの有効期限が切れた場合は以下のコマンドで再度サインインする。
$ aws sso login --profile my-sso-name
まとめ
AWS CLIの使用に際して、IAMユーザーを用いることはセキュリティ的にあまりよろしくないのでIAM Identity Centerを用いよう。
参考