
こんにちは、株式会社FIXERの名古屋事業所に所属している村上です。本ブログは個人ブログにもポストしています。
AWSマネジメントコンソールへのサインインを、IAMユーザー(ユーザー名とパスワード)認証でしていて疲弊していませんか? 毎回 私は疲れています。
私が担当する案件では、特別な理由がない限りIAM Identity Centerを経由してサインインすることにしています。
IAM Identity Centerを推奨している理由
理由1:IAMユーザーの資格情報が漏洩するリスクを最小限に抑えるため
情報漏洩リスクを排除するためには、注意喚起や社内ルールを設けるだけでは十分なセキュリティ対策とはなりません。IAMユーザー認証を使用しないか、又は別の認証手段に切り替える必要があります。IAM Identity Centerでは、内部でAWS Security Token Service(STS)が発行されるため、セッション時間による一時的な認証を実現できます。
理由2:複数アカウント間のサインイン方法を簡素化するため
弊社では本番環境、検証環境、開発環境・・・などの環境ごとにAWSアカウントを分けています。大規模システムになればなるほどアカウントが増えます。アカウントごとにIAMユーザーを1人ずつ払い出すのは利用者や管理者が疲弊します。IAM Identity Centerでは、どのアカウントにどのIICグループと権限を付与するか一元管理できます。
理由3:Microsoft Entra IDやOktaなどのAD認証と統合できるため
弊社ではMicrosoft Entra IDで従業員などのユーザーやデバイス管理を一元管理しています。IAM Identity CenterとMicrosoft Entra IDなどのSaaSを統合することで、Microsoft Entra ID上の条件付きアクセスを準拠しつつ、IAM Identity CenterへのSSO連携が容易にできます。
導入手順
本ブログでは、IAM Identity Centerディレクトリによる認証方法を導入します。
また、Microsoft Entra IDを使ったSSO連携方法は、過去ブログで紹介しています。
【過去ブログ】
・【AWS】IAM Identity Center × Azure AD を統合してAWSアカウントへのシングルサインオンを試してみた
事前に AWS Organizations を有効化する必要があります。
次に管理アカウント上でIAM Identity Centerを有効化します。今回は東京リージョンで有効化しました。

1. IICグループを作成する
IAM Identity Centerでは、グループ(以下、IICグループ)に権限を付与してユーザーと権限管理します。今回は、Administrator_Member
というIICグループを作成していきます。
IAM Identity Centerコンソールを開き、グループを選択します。

IICグループを作成します。

これでIICグループを作成できました。
2. 許可セットを作成する
IICグループに付与する権限(IAMポリシー)を作成していきます。 今回はAWSマネージドポリシーを付与します。
IAM Identity Centerコンソールを開いたまま、許可セットを選択します。
ステップ1. 許可セットタイプを選択
事前定義された許可セット を選択し、AdministratorAccessを選びます。

ステップ2. 許可セットの詳細を指定
許可セット名に任意の名前を名付けます。セッション時間は1時間〜12時間で設定できます。
リレー状態 にはセッションが切れた際のリダイレクト先を記載します。
毎回 私は東京リージョンのトップ画面に遷移させています。
https://ap-northeast-1.console.aws.amazon.com/console/home?region=ap-northeast-1
あとは、画面の操作に従い許可セットを作成します。
3. AWSアカウントに許可セットを登録する
作成した許可セットをAWSアカウントに登録していきます。
IAM Identity Centerコンソールを開いたまま、AWSアカウントを選択します。

ステップ1. ユーザーとグループの選択
作成したIICグループを選択します。

ステップ2. 許可セットを選択
作成した許可セットを選択します。

あとは、画面の操作に従い許可セットを登録します。
4. IIC経由でサインインしたいユーザーを追加する
今までの操作で IAM Identity Center のセットアップは完了しました。
最後にIIC経由でサインインしたいユーザーを追加していきます。
IAM Identity Centerコンソールを開いたまま、ユーザーを選択します。

ステップ1. ユーザーの詳細を指定
サインインさせたい人のメールアドレス等を記載していきます。

ステップ2. ユーザーをグループに追加
作成したグループに追加します。

あとは、画面の操作に従いユーザーを登録します。
5. 招待ユーザー側の初期設定する
上記の操作後、no-reply@login.awsapps.com から招待メールが来ます。
「Accept invitation」を押下して、セットアップを進めます。

パスワード設定をしていきます。IAM Identity Centerではパスワードポリシーが決まっているので、準じてください。
パスワードポリシーは以下のとおりです。全てを満たす必要があります。
No | 内容 |
---|---|
1 | 8~64文字 |
2 | 大文字と小文字を含める |
3 | 数値を含める |
4 | 英数字以外の文字 |

設定後、サインインフォームにリダイレクトされます。次に多要素認証の登録をしていきます。
私はパスキーに統一したい勢なので、「組み込みの認証アプリ」を選択しています。業務で使用する場合では、MacやWindowsの会社端末に依存すると思いますので、認証アプリ(Google Authenticator等)やハードウェア認証(YubiKey等)を使用することを推奨します。

<パスキーを選択した場合 with MacOS>

これでセットアップは完了です。
6. IAM Identity Center経由でサインインする
AWS アクセスポータルのURLからサインインを行います。 招待メールにも同一のURLが記載されています。

AWSアクセスポータルから許可セット名(本ブログでは、AdministratorAccess)を押下します。

サインインできました👍 (東京リージョンになっていますね!)
さいごに
最後まで読んでいただき、ありがとうございます。
IAM Identity Centerの導入からサインインまでの手順を紹介しました。意外に簡単だったと思います。
IAMユーザーの払い出し管理に限界を感じているシステム管理者のために、IAM Identity Centerを導入することは一番お勧めできることになります。今回はAWSアカウントに限定していますが、実際にはMicrosoft Entra IDなどのSaaSと信頼関係を作り、人事観点でも管理したほうがよりセキュアになります。
AWSもIAM Identity Centerの利用を推奨しているため、導入を検討されてみてはどうでしょうか?