Okta+AWSのSAMLによるフェデレーションで複数のIAMロールを使う方法

2022.01.01

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

前回の記事でOktaのSAML2.0を使ったAWSコンソールへのフェデレーションを紹介しました。記事中ではOktaのユーザーに1つのIAMロールを割り当てたのですが、複数のIAMロールを割り当てたときにどのような動きになるか試してみました。

OktaのSAML2.0を使ったAWSコンソールへのフェデレーションをやってみた

AdministratorポリシーをつけたIAMロールの作成

IAMコンソール>ロール>ロールを作成を選びます。信頼されたエンティティはSAML2.0フェデレーション、SAMLプロパイダーに作成したものを指定し、「プログラムによるアクセスと AWS マネジメントコンソールによるアクセスを許可する」を選びます。ポリシーにはAdministratorAccessを割り当てました。ロール名はAdministratorAccess-Oktaとしました。

Oktaアプリケーションデータの更新

AWS Account FederationアプリのProvisioning>Integrationに設定したアクセスキーを使って、OktaはIAMロールの一覧を取得します。キーを設定したあとにIAMロールを作成した場合、Oktaに自動的に反映されません。

アプリケーションデータを更新し、最新のIAMロールを取得します。Okta管理コンソール>Applications>More>Refresh Application Dataを選択します。

IAMロールの割当て

AWS Account FederationアプリのAssignmentsからユーザーの編集を行います。

作成しておいたAdministratorAccess-Oktaロールが確認できます。AdministratorAccess-Oktaを有効にし、セーブします。

フェデレーションを行う

Okta一般ユーザーのコンソールからフェデレーションしてみます。マイアプリからフェデレーションアプリを選びます。

どのIAMロールを使うのか選択する画面になります。IAMロールを選択してサインすると、AWSコンソールが表示されます。

まとめ

Oktaの1ユーザーにIAMロールを2つ割り当ててみました。ユーザーがフェデレーションする際にどのIAMロールにフェデレーションするか選択する形になることを確認しました。実運用する際は、フェデレーションアプリをAWSアカウントごとに作りつつ、ReadOnly権限、変更権限、Admin権限のように複数のIAMロールを作成し、ユーザーの役割ごとにロールを割り当てるといいと思います。

参考