[小ネタ] AWS IAM Identity Centerの活用 〜権限管理の効率化〜
はじめに
こんにちは!株式会社ブロードエッジ・ウェアリンク CTOの高丸です。
今回は、Qiita Advent Calendar 2024の18日目の記事です。
今回は小ネタとして、IAM Identity Centerの活用についてお話ししようと思います。IAM管理というと、Webアプリケーションエンジニアからすると面倒な話に見えるかもしれませんが、実はとても重要な内容です。
IAM Identity Center
みなさんは、IAM Identity Centerを使っていますか?
AWSアカウントを環境ごとやプロジェクトごとで分けていると、親となるアカウントから各対象の環境のアカウントへスイッチロールするケースが多いかと思います。
従来のスイッチロールの仕組みでは、まず親アカウントにIAMユーザーを作成し、そのユーザーに対して各アカウントへのスイッチロール権限を付与する必要がありました。
一方、IAM Identity Centerを使うと、IdPとして機能するため、組織全体のユーザー管理が一元化できます。ユーザーは一度サインインすれば、許可された全てのAWSアカウントにアクセスできるようになります。
弊社も、wine@のECのプロダクト以外にも、いくつかAWSアカウントを持っており、それをスイッチロールする必要がある環境でした。
ある日、私がAWS CLIで他のロールへスイッチするのが面倒と感じたのが使うきっかけです。「(旧名)AWS SSOだともっと簡単にできるのに」という記事を多く見かけて、導入することにしました。
AWS CLIでの違いも大きいです。
従来の方式では、プロファイルごとに認証情報を設定し、assume-roleを使って切り替える必要がありました。複数環境での作業では、それぞれの認証情報やロールARNを.aws/credentials
や.aws/config
に記述する必要があり、管理が煩雑でした。
# 従来の方式(~/.aws/config)
[profile development]
region = ap-northeast-1
source_profile = base-account
role_arn = arn:aws:iam::123456789012:role/DevelopmentRole
[profile staging]
region = ap-northeast-1
source_profile = base-account
role_arn = arn:aws:iam::234567890123:role/StagingRole
[profile production]
region = ap-northeast-1
source_profile = base-account
role_arn = arn:aws:iam::345678901234:role/ProductionRole
# 従来の方式(~/.aws/credentials)
[base-account]
aws_access_key_id = AKIAXXXXXXXXXXXXXXXX
aws_secret_access_key = XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
# IAM Identity Center使用時(~/.aws/config)
[profile development]
sso_start_url = https://my-sso-portal.awsapps.com/start
sso_region = ap-northeast-1
sso_account_id = 123456789012
sso_role_name = DevelopmentRole
region = ap-northeast-1
[profile staging]
sso_start_url = https://my-sso-portal.awsapps.com/start
sso_region = ap-northeast-1
sso_account_id = 234567890123
sso_role_name = StagingRole
region = ap-northeast-1
[profile production]
sso_start_url = https://my-sso-portal.awsapps.com/start
sso_region = ap-northeast-1
sso_account_id = 345678901234
sso_role_name = ProductionRole
region = ap-northeast-1
IAM Identity Centerを使うと、aws sso login
コマンド一つで認証が完了し、設定したプロファイルへ簡単に切り替えられます。
使ってみた
実際に使ってみると、想像以上に便利でした。特に良かったのは以下の点です。
まず、開発メンバーの入社時の作業が大幅に簡略化されました。
以前は、新しいメンバーが入社したとき、まず親アカウントでIAMユーザーを作成し、パスワードを設定し、必要な権限を付与する...という作業が発生ししていましたが、
今ではIAM Identity Centerで一度設定すれば、必要なアカウントへのアクセス権限を一括で付与できます。
また、AWSマネジメントコンソールへのアクセスも楽になりました。以前は各アカウントのログインURLやIAMユーザー名、パスワードを覚えておく必要がありましたが、今ではIAM Identity Centerのポータルから必要なアカウントを選ぶだけです。
セキュリティ面でも安心感が増しました。ユーザー管理が一元化されたことで、退職者のアクセス権限を確実に削除できますし、多要素認証も統一的に管理できます。
さいごに
AWSの権限管理は面倒だと敬遠されがちですが、適切なツールを使えば、それほど難しくありません。みなさんも、この機会にIAM Identity Centerの導入を検討してみてはいかがでしょうか?
Discussion