目次
ハイブリッドクラウドコンサルティング部の榊原です。
タイトルの内容について初めての方向けにスクショ付きでまとめました。
どなたかのお役に立てば幸いです。スクショの「Okta画面」はOktaの管理者画面、「AWS画面」はAWS Identity Centerのコンソール画面を示します。
前提
・検証時のOkta(Workforce Identity Cloud)は30日間無料トライアルアカウントを使用
・Okta管理画面の設定は払い出した直後の状態(デフォルト)
・OktaとAWSのアカウントを所持
・AWS Identity Centerが設定済み
・Oktaへのユーザ追加は完了している
構成図
簡単にどのような設定を行うか、流れを含めて図示します。スペースの都合上、SSOという記載も使用しています。AWS SSOアプリは赤い部分と青い部分が重なるので紫表示です。
OktaとAWS Identity Centerの連携手順
➀下準備
まずAWS Identity Center設定の、アイデンティティソースを「外部IDプロバイダー」、認証方法を「SAML2.0」にしていきます。Oktaの管理者画面で、サイドバーから「Applications」を選択し、「Browse App Catalog」を選択します。
検索窓で「AWS IAM Identity Center」と入力し、結果に出てきた「AWS IAM Identity Center」を選択します。
「Add Integration」を選択し、遷移先で「Done」を選択します。
遷移先の画面で「Sign On」、下の方にいくとSAML Signing Certificatesの「Actions」を選択し、「Download Certificate」で右クリックをして、リンク先をXML形式で保存します。この後の操作でも本画面は操作するので開いたままにします。
AWS Identity Centerのコンソール画面のサイドバーから「設定」、「アクション」、「アイデンティティソースを変更」を選択します。遷移先の画面で「外部IDプロバイダー」、「次へ」を選択します。
遷移先のサービスプロバイダーのメタデータ3つをメモし、「ファイルを選択」から先ほど保存したXMLファイルをアップロードします。
遷移先の画面で「承諾」と入力し、「アイデンティティソースを変更」を選択します。
再びコンソール画面に戻り、アイデンティティソースが「外部IDプロバイダー」、認証方法が「SAML2.0」となっていれば設定完了です。
➁プロビジョニングの設定
ここまでで既にAWSにログインする際、Okta認証が必要な状態になっています。しかしプロビジョニング機能が手動のままなので、Okta側とAWS Identity Center側とでユーザ情報が同期されません。これにより各サイドでユーザ管理が必要となり非常に手間です。
なのでプロビジョニング機能をSCIM(System for Cross-domain Identity Management)することで、OktaとAWS間でユーザ情報が自動同期されるよう設定します。
AWS Identity Centerのコンソール画面から自動プロビジョニングを「有効」を選択し、遷移先の画面でSCMIエンドポイントとアクセストークンの二つをコピーします。画面を閉じると二度と表示されないので注意してください!!
先ほどのOktaの管理者画面に戻ります。
「Provisioning」、「Configure API Integration」を選択します。遷移先の画面でEnable API integrationにチェックを入れ、Base URLに先ほどメモしたSCIMエンドポイントを末尾の/を除いて入力します。また、API Tokenには先ほどメモしたアクセストークンを入力します。その後「Save」を押します。
上に戻ってProvisioning to Appの「Edit」を選択します。
3つの項目全てにチェックを入れます。
各項目の説明は以下の通りです。
Create Users | OktaでAWS Identity Centerにユーザがアサインされたとき、AWS Identity Centerに自動でユーザが生成されます。 |
Update User Attributes | Okta ユーザー プロファイルに属性を変更時、AWS IAM Identity Center の対応する属性値が自動的で上書きされます。 |
Deactivate Users | OktaでAWS IAM Identity Centerのアサインを解除したユーザは、AWS IAM Identity Center側でユーザの状態が無効となります。 |
以上で設定完了です。
➂SSOユーザ追加とアカウントへの権限付与
最後にOkta側でユーザを追加したとき、AWS Identity Centerでユーザが追加されるか試してみましょう。Okta画面の「Assignments」、「Assign」、「Assign to People」を順に選択します。
遷移先の画面で、追加したいユーザの行の横の「Assign」を選択し、遷移した画面で「Save and Go Back」を選択、さらに「Done」を押します。
AWS側にユーザが追加されているか確認します。AWS Identity Centerのコンソール画面のサイドバーから「ユーザー」を選択してください。検証の都合で画面に関係ないユーザがたくさんいますが、ご自身が追加したユーザが表示されていればOKです。
ユーザ追加が完了したので、Oktaで認証後に「どのアカウントに」、「どんな権限でそのアカウントに入れるか」を設定します。今回はsandboxアカウントに対して「AWSReadOnlyAccess」の権限でログインできるように設定します。サイドバーの「AWSアカウント」、「(ユーザにログインさせたい)アカウント」「ユーザーまたはグループを割り当て」を順に選択します。
先ほど追加したユーザにチェックを入れて「次へ」を選択します。
そのアカウントにどのような権限で入らせたいかを設定します。今回はAWSReadOnlyAccessを付与し、「次へ」を選択します。
内容を確認して問題が無ければ「送信」を押します。これで設定完了です。
➃追加したユーザでログインできるか確認
追加されたユーザに対して、Oktaからメールが届いていますのでログインします。設定した内容が反映されているか確認しましょう。今回はログイン後に下のような画面になればOKです。
最後に
手順としては以上です。ちなみに今回ユーザ追加は手作業でポチポチ行いましたが、XMLファイルを流して一括で追加することも可能です。気が向いたらそちらも記事にしようと思います。また、今回社内で数名の方に検証のご協力をいただいたのでこの場を借りてお礼申し上げます。ありがとうございました。