SaaS

AWS Single-Sign-OnとOktaを連携させてみる

ちゃんみおです。
AWS Single-Sign-OnとOktaが連携できるようになったのでためしてみました。
AWS側ですでに詳細な連携手順はあるので、ブログにするのもどうするかなぁと思ったのですが、せっかくやったので記念ブログです。

そんなAWSのドキュメントはこちらです
One-click access from Okta to all of your AWS resources

以下、AWS Single-Sign-Onって毎度書くのがめんどくさいのでAWS SSOと省略します。

必要なライセンス

AWS側追加料金はかからないよ
Oktaは前述のドキュメントを読むとUniversal Directoryと統合と書かれているので、Universal Directoryのライセンスが必要みたい

どんなメリットがあるの?

  • AWS Organizationsのマスターアカウントでこれを行うことで、場合によっては鬼のようにある、AWSのアカウントを1つ1つ設定していく地獄から逃れられる。
  • AWSを管理している人間と、SSOの設定をしている人間が異なる場合、この人にはこのアカウントを〜なんてやりとりが発生してヒューマンエラーが発生する可能性が高くなるが、AWS SSOを使うことで、AWSのアクセス制御は、SSOを設定を行う人間が管理することがなくなるので、ヒューマンエラーがちょっと減るかもしれないし、少なくともやりとりはなくなる。
  • OktaとAWSを複数SSOしている場合、どのAWSアカウントがどの何かがわかりにくくなるし、可視化が最高に悪くなるが、AWS SSOを利用することで、My AppsからAWS SSOのアイコンのみになりスッキリする。

手順

Okta側-1

  1. Oktaのアプリケーション設定からAWS Single-Sign-Onを選択する(テンプレートあるよ)
  2. Sing OnタブからOkta側のmetadataを取得する

次はAWS側の設定を行うがOkta側のタブは閉じないでおく

AWS側-1

  1. AWS Organizationsの親アカウントのAWS SSOにアクセスして Enabele AWS SSOでAWS SSOを始める
  2. リージョンの選択画面に遷移します
    2020.06.09時点でAWS SSOは東京リージョンはありません
  3. AWS SSOのダッシュボードが最初に表示されますが、左のサイドバーからsettingを選択する
  4. ID のソースを選択する
  5. 外部IDプロパイダーを選択し、サービスプロバイダーのメタデータの個々のメタデータ値を表示して AWS SSO ACS URL(AWS SSO ACS URL)と AWS SSO 発行者 URL(AWS SSO issuer URL)をコピーする
  6. Oktaからダウンロードしたmetadataをアップロード、NEXTで次へ
  7. 確認ページが表示されるので、AWSを日本語表記にしているの場合は 確認、英語表記にしている場合は、CONFIRMを記載して設定を完了させる

次は、Okta側の設定を行うがAWSのタブはそのままにしておく

Okta側-2

  1. AWSでコピーしておいた、AWS SSO ACS URL(AWS SSO ACS URL) と AWS SSO 発行者 URL(AWS SSO issuer URL)をSing-OnのADVANCED SIGN-ON SETTINGSに転記する
  2. CREDENTIALS DETAILSのApplication username formatがデフォルトだとOkta usernameになっているが、Okta usernameがEmailではない場合は、Application username formatの部分をEmailに変更する
  3. SAVEする

AWS側-2

  1. AWS SSO側にSCIM endpointのURLが表示されているのでコピーする
  2. 非表示状態のAccess tokenを表示させる(一度表示して消すと同じトークンは再度表示できないので注意。間違えた場合はトークンの再発行をしよう)

Okta側-3

  1. Provisioningタブの Enable API Integrationを選択する
  2. AWSでコピーした、SCIM endpointとAccess tokenを記載して、Test API Credentials
    この時に、AWSでコピーしたSCIM endpointの最後にスラッシュが入っているのですが、消してください。消さないとAPI通りません。
  3. エラーが出なければ、SAVEを行う
  4. プロビジョニングが有効になるとユーザーの作成の有無などが選択できるので任意の物を有効化する
  5. Assignタブで、アサインしたいユーザーやグループを選択する

AWS側-3

  1. AWS SSOのサイドバーからAWS Accountsを選択して、SSOさせたいAWSアカウントを選択する
    このとき何も表示がない場合は、Organizationsで連携してるAWSアカウントがあるかどうか確認する。
    複数選択可能
  2. AWSアカウントと連携させたいユーザーを選択
    複数選択可能
  3. ユーザーに対してどのpermissionを紐づけるか選択する
    初期では、ViewOnlyAccessとAdministratorAccessのみだけど、自分で作成することも可能

Okta側-4

  1. OktaのMy Appsにアクセスをすると、AWS Single-Sign-Onのアイコンが表示される
  2. 画面を遷移すると、AWS SSOの画面に切り替わりAWS SSOのポータルが表示され、紐づけたアカウントが確認できる

複数のIdPでAWS SSOしたい

1つのAWSアカウントに対して、複数のIdPを連携させることはあるかと思います。で、そんな時でもAWS SSOを利用したい!なんて、場合は、AWS側-2で利用した、SCIM endpointを利用、Access Tokenは複数発行ができるので個別に発行して利用することが可能です。
間違っても同じトークンを利用しない様に。

余談

今回はOktaのMy Appsをよく使う前提でAWS SSOのポータルにアクセスしましたが、AWS SSOのダッシュボード画面のユーザーポータルという項目にあるURLを直接叩いても、Oktaから遷移するAWS SSOのポータル画面に切り替わります。
https://hogehoge.awsapps.com/start
こんな感じのURLなので、いちいちOktaのMy Appsにアクセスするのはめんどくさいという場合はこれをお気に入りに入れておくのもいいかと思います。認証切れた場合は、当たり前ですが、Oktaの認証が求められます。
試してないけど、CLIでも利用可能。

というわけで、今回はAWS Single-Sign-OnとOktaを連携させてみました。
OktaのMy AppsがAWSのアイコンで埋もれてしんどい、みなさま是非AWS SSOをお試しあれ

渡邉美緒子

家電製品で初期不良に当たりやすいのに家電メーカーで働いたのち、クラウドネイティブに転職、今はSAMLとかそこらへんを勉強しながらお仕事してます。

長時間座ってるのが尾骶骨痛くなるので無理なタイプです。考え事は歩きながら考える派。

ダッフルバックに入ったかわいいくまちゃんとディズニーと旅行と位置ゲーが好きです。