OktaのAWSアカウントフェデレーションをやってみる
こんにちは、ゲームソリューション部/業務効率化ソリューション部の新屋です。
本ブログはClassmethod ゲーソル・ギョーソル Advent Calendar 2024の18日目のブログとなります。
本日は、Okta WICとAWSアカウントを連携させる方法の1つである、AWSアカウントフェデレーションについて試していきます。
前提
OktaとAWS IAM Identity Centerを統合してシングルサインオンする設定を理解している
モチベーション
OktaからIAM Identity Centerの統合を設定しようとアプリカタログを眺めていると、「AWSアカウントフェデレーション」というアプリケーションが見当たります。

AWS…アカウント…フェデレーション…?
何やらシングルサインオンが出来そうな名称なんですが、同じくシングルサインオンの機能を提供してくれるIAM Identity Center統合と何が違うのでしょうか?
↓
Oktaを経由してAWSアカウントにシングルサインオンするのは同じです。
このアカウントフェデレーションは、割り当てたIAMロールでAWSアカウントにサインオンすることができる機能です。
IAM Identity Center統合とどっちを使うかの判断は、主にAWS Organizationsで組織のAWSアカウントを統制するかどうか、がポイントになると思います。IAM Identity Center統合は、Oktaで作成するアプリケーション1つに対してIAM Identity Centerを中継して、複数のAWSアカウントを紐づけることが出来ます。
一方で、アカウントフェデレーションはOktaで作成するアプリケーションに紐づけられるAWSアカウントは1つまでです。
OktaのIAM Identity Center統合とアカウントフェデレーションのイメージ

Organizationsを使うほどAWSアカウントが多くない場合は、右側のアカウントフェデレーションのを使うと良さそうです。
設定手順
(Okta)アプリ統合カタログからAWSアカウントフェデレーションを作成する
Okta管理者ダッシュボードからアプリケーション > アプリカタログを参照からAWSと検索して、アカウントフェデレーションを選択します。

(Okta)設定を行う
一般設定はそのままでOKです。

サインオンオプションはSAML2.0を選択します。
そして、メタデータURLをコピーして別タブで開いてください。

(Okta)メタデータを保存する
URLを開くとメタデータが表示されますので、これをxml形式で保存してください。名称は適当で大丈夫です。


(AWS)IAMからIDプロバイダを作成する
IAM > IDプロバイダと移動して、プロバイダの追加を選択してください。

(AWS)メタデータのアップロード
先ほど保存したxmlファイルをアップロードしてください。プロバイダの名称は適当で大丈夫です。

作成したらこのIDプロバイダのARNをコピーします。

(Okta)IDプロバイダのARNをセットする
Oktaの設定画面に戻って、IDプロバイダのARNを入力し、完了または設定を保存します。

(AWS)シングルサインオンするときに引き受けるIAMロールを作成する
SAML2.0フェデレーションから、さっき作成したIDプロバイダーを選択します。

今回は、EC2ReadOnlyAccessの権限でロールを作成します。

ここは特になにもしなくてOK

(AWS)さっき作成したIAMロールをOkta側で参照するために、Okta APIが利用するIAMユーザーを作成する
作成をはじめます。

ポリシーを作成します。

{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"iam:ListRoles",
"iam:ListAccountAliases"
],
"Resource": "*"
}
]
}
ポリシーをユーザーにアタッチして、作成を押下します。

このユーザーのAccessKeyとAccessSecretを取得します。



取得したらコピーします。

(Okta)プロビジョニングの有効化とAPI統合を構成

AccessKeyとAccessSecretを入力したら、テストしましょう。OKがでたら、保存してください。

アプリへのプロビジョニングで、ユーザー作成と更新を有効化しておきましょう。

(Okta)ユーザーをアプリケーションに割り当てる
割り当てタブから、ユーザー割り当てを選択します。

割り当てたいユーザーを選択します。

さっき作成したIAMロールが表示されているはずです。

ユーザーにロールを割り当てたら動作確認をします。
動作確認
割り当てたユーザーでOktaダッシュボードにサインインすると、さっき作成したアカウントフェデレーションのアプリが表示されています。

アプリを選択すると対象のAWSアカウントのコンソールにリダイレクトします。







