以前はAWS CLIを使うたびに、IAMユーザーのアクセスキーを発行して利用していました。
動作には問題ありませんでしたが、
- アクセスキーの管理が面倒
- 定期的なローテーションが必要
- 誤って漏洩しないか不安
といった課題がありました。
そこで、AWS IAM Identity Center(旧AWS SSO)を使った認証へ移行しました。
設定してしまえば、CLIの認証がかなりシンプルになり、アクセスキーを持つ必要もなくなりました。
IAM Identity Centerとは
IAM Identity Centerは、AWSアカウントへの認証を一元管理できるサービスです。
ブラウザでログインすると、
- AWSマネジメントコンソール
- AWS CLI
- SDK
などを同じ認証情報で利用できます。
従来のCLI認証
これまでは、
aws configure
で
- Access Key ID
- Secret Access Key
を設定していました。
AWS Access Key ID: AKIA...
AWS Secret Access Key: xxxxxxxxx
Region: ap-northeast-1
この方法は簡単ですが、
長期間有効な認証情報をローカルに保存することになります。
IAM Identity Centerでの設定
まず設定を行います。
aws configure sso
質問に沿って入力します。
SSO session name:
SSO start URL:
SSO region:
AWS account:
Permission set:
設定が終わると、
~/.aws/config
にプロファイルが作成されます。
ログイン
CLIを利用するときは、
aws sso login --profile dev
を実行します。
ブラウザが開き、
AWSへサインインすると認証完了です。
その後は通常どおりCLIを利用できます。
aws s3 ls --profile dev
aws sts get-caller-identity --profile dev
複数アカウントも扱いやすい
例えば、
dev
stg
prod
それぞれにプロファイルを作成しておけば、
aws s3 ls --profile prod
のように切り替えられます。
アクセスキーを何個も管理する必要はありません。
良かった点
アクセスキーが不要になった
ローカルに長期間有効な認証情報を保存しなくて済むようになりました。
権限管理がシンプル
利用者ごとの権限はIdentity Center側で管理できます。
CLI側で設定を変更する必要はありません。
一時認証なので安心
ログインすると一時的な認証情報が発行されます。
期限が切れれば再度ログインするだけです。
万が一ローカルPCが盗難・紛失した場合でも、長期間利用できるアクセスキーを保存している場合と比べてリスクを抑えられます。
導入して感じたこと
最初は設定が少し増えた印象でした。
ただ、一度設定してしまえば、
aws sso login
だけでCLIもマネジメントコンソールも利用できるため、運用は以前より楽になりました。
特に複数のAWSアカウントを扱う場合は、切り替えもしやすく感じています。
まとめ
IAMユーザーのアクセスキーを使った運用でもCLIは利用できます。
ただ、
- アクセスキーを配布しなくてよい
- 一時認証でセキュリティを高められる
- 複数アカウントを管理しやすい
といった理由から、現在はIAM Identity Centerを利用した認証が標準的になっています。
AWS CLIをこれから利用する場合は、アクセスキーではなくIAM Identity Centerを使った認証を選ぶと、運用もしやすくなると感じました。