外部のAWS IAM Identity Centerでメンバーアカウントにログイン(Jumpアカウントを廃止したい)

2024/04/22

AWS

t f B! P L

AWSのマルチアカウントが大前提となっている環境において、AWSのコンソールログインにIAMユーザーは不要派です。

そのためにIAM Identity Centerがあるので、大抵はこれでIAMユーザーを利用しないで済むのだけど、

IAM Identity Centerを使うことができない属性の人(例えば外部ベンダーとか)はどうするのか?

という問題に対しては、「Jumpアカウント」というスイッチロールする専用のAWSアカウントを用意して、

そこにIAMユーザーを集約する方法が一般的です。


イメージは↓のような感じ。


特に外部Idp(Entra IDとかOktaとか)を利用しているIAM Identity Centerを使っていると外部Idpには社員しか登録されていないケースがほとんど。

ちなみにEntra IDにはゲストユーザーの機能があるのだけど、そのゲストユーザーではSCIM連携ができない(技術的には可能だが、M365テナント管理者権限が必要なので非現実的)ため、

実質的に社外ユーザーはIAM Identity Centerが使えない状態。


Jumpアカウントを使えば大抵の問題は解消されるのだけど、

社外ユーザーがaws cliコマンドを使うためにIAMアクセスキーを発行する必要がある。

これがIAMユーザーを使う上でのリスク。

最小限の権限でアクセスキーを使うってのは当たり前の話なんだけど、

そもそもアクセスキー自体を作りたくない。

アクセスキーを利用する前提で設計されているクソアプリとか滅んでほしい。


というわけで、Jumpアカウントに代わる方法がないかを考えてみました。

Organizations組織外のAWSアカウントで社外ユーザー専用のIAM Identity Centerを作って

そこで社外ユーザーを管理。

メンバーアカウントに対してはSAMLプロバイダを追加してログイン。

イメージで書くと以下。


これにより、IAMユーザーを作る必要がなくなり、IAMアクセスキーの呪縛からも逃れられる。


外部のAWSアカウントを用意してIAM Identity Centerを設定

論より証拠。

実際にやってみますた。

IAM Identity Centerを用いて、組織外のAWSアカウントにSAMLログインするやり方は以前にもやったことがあって、基本的な流れは同じ。


まずは新規にAWSアカウントを作成。

IAM Identity Centerにアクセスして「有効にする」をクリックする。


Organizationsを有効にするほうを選択した状態で「続行」をクリックする。



これにより、OrganizationsとIAM Identity Centerが有効になる。

画面左の「アプリケーション」をクリックする。


「アプリケーションを追加」をクリックする。


「カタログから〜」を選択して、下の画面にスクロールする。


アプリケーションカタログでは「External AWS Account」を選択して「次」をクリックする。


任意の表示名と説明を入力する。


続けて「ダウンロード」をクリックして、SAMLメタデータファイルをダウンロードする。


セッション期間を必要に応じて変更して、「送信」をクリックする。


以上で外部AWS Identity Center側の作業は一旦終了。


メンバーアカウントにてSAMLプロバイダ、IAMロール作成

次にログイン先となるメンバーアカウントに切り替えて、IAMコンソールを開く。

「IDプロバイダ」をクリックする。


「プロバイダを追加」をクリックする。


プロバイダのタイプは「SAML」、任意のプロバイダ名を入力して、

先ほどDLしたメタデータファイルをアップロードする。

その後に「プロバイダを追加」をクリックする。


プロバイダを追加できたら「ロールの割り当て」をクリックする。


「新しいロールを作成」を選択して「次へ」をクリックする。


信頼されたエンティティタイプは「SAML2.0」を選択し、プロバイダは先ほど作成したプロバイダ。

許可されるアクセスは「マネジメントコンソールを許可する」をクリックする。


IAMロールに付与する許可ポリシーを選択する。

ここでは「PowerUserAccess」にしてみた。


IAMロールの名前を入力する。


IAMロールが作成されたら「ロールを表示」をクリックする。


作成したIAMロールのARN情報を控えておく。


同様にして、SAMLプロバイダのARN情報も控える。


外部IAM Identity Centerにて属性マッピング

また外部AWSアカウントのIdentity Centerでの作業に戻る。

作成したアプリケーションを選択して、「アクション」→「属性マッピングを編集」をクリックする。


「新規属性マッピングの追加」をクリックする。


それぞれ以下の通り入力して「変更の保存」をクリックする。

ユーザー属性:https://aws.amazon.com/SAML/Attributes/Role

マッピング:"プロバイダARN","IAMロールARN"

形式:unspecified


次に「ユーザーとグループを割り当てる」をクリックする。


ログインさせたいユーザーを選択して「ユーザーを割り当て」をクリックする。


ユーザーが割り当てられたことを確認する。


以上で設定が完了!


外部IAM Identity Centerからメンバーアカウントにログインできることを確認

先ほど割り当てたユーザーでAWSアクセスポータルにログイン。

「Applications」タブに作成したアプリケーションが表示されていることを確認する。


SAMLプロバイダに割り当てたIAMロール(PowerUserAccess)でログインできた。


当然ながらAWS IAM Identity CenterでMFA登録を強制させることが可能なので、

一定のセキュリティレベルは維持できる。


これでAWSコンソールログインにIAMユーザーはほぼ完全に不要となる。


次はこの状態でAWS CLIを用いる方法を紹介します。

検索

Blog Archive

Popular Posts

About Me

自分の写真
性別:男
年齢:ついに40over
趣味:Snowboard、パソコン、iPhone、子育て

仕事:ユー子の社内SEとしてサーバ、NW等のインフラ全般をやってます

日々生活していく中で思ったことなどをつらつらと書いていきます。

どうぞよろしく!

ブログランキング

ブログランキング・にほんブログ村へ

QooQ