AWS Startup ブログ

え、IAM ユーザーを作らなくてもマネジメントコンソールにログインできるの!? – シングルサインオン実践編

みなさん、こんにちは。ソリューションアーキテクトの稲田(@inariku)です。

今回は「え、IAM ユーザーを作らなくてもマネジメントコンソールにログインできるの!? -シングルサインオン考え方編」の続きのセキュリティのお話です。まだ読まれていない方はそちらをご覧になってからこちらの記事を読んでいただけると幸いです。既に読んでいただいたお客様は、シングルサインオンのメリットについて十分にご理解いただけたかと思います。

本ブログのゴールはお客様に AWS アカウントにおけるシングルサインオンの設計ポイントについて理解していただくことです。また、AWS Single Sign-On (SSO) を利用する際の方法も紹介します 。

目次

AWS アカウントにおけるシングルサインオン

概要

まず、AWS アカウントにおけるシングルサインオンの認証プロセスについて整理します。

認証プロセスは、上の図の番号順に処理されます。

  1. ユーザーは、ブラウザで ID プロバイダーが提供するポータルサイトにログインします。
  2. ログイン試行がされると、ID プロバイダーはお客様の ID 認証基盤であるアイデンティティストアに対してユーザー認証を行います。
  3. 認証が成功した場合は、その応答として SAML アサーションを受け取ります。
  4. ユーザーのブラウザは、AWS のサインインエンドポイントに対してリダイレクトし、受け取った SAML アサーションを送信します。
  5. SAML アサーションを受け取ったエンドポイントは AssumeRoleWithSAML API を呼び出して一時的なセキュリティ認証情報を AWS Security Token ServiceSTS)にリクエストしてから、それらの認証情報を使用して AWS マネジメントコンソールのサインイン URL を作成し、ブラウザに送信します。
  6. ブラウザは、AWS マネジメントコンソールにリダイレクトします。

ここからは、シングルサインオンを設計するためのポイントについてご紹介します。

設計ポイント

シングルサインオンの設計ポイントは主に2つあります。1つはどの ID プロバイダー(IdP)を選ぶか、もう1つは、どのアイデンティティストアを利用するかです。両者は利用するサービスやプロダクトによってはセットで提供されている場合もあれば、独立したサービスとして別々に提供されている場合もあります。ここでは分けて考えてみたいと思います。

Point1. ID プロバイダーの選択

IdP は利用者の識別・認証情報の登録や記録、管理を行い、他のシステムやサービスに認証サービスを提供する事業者やシステムのことを指します。IdP の選択はお客様の要件によって左右されます。ここでは導入や運用のしやすさを軸にした IdP の選定ロジックフローの例をご紹介します。

まず、AWS Organizations で管理している AWS アカウントのマネージメントコンソールには AWS SSO を利用するのが最もシンプルなソリューションと言えます。AWS SSO は AWS CLI v2 との統合も可能であり、 AWS CLI を使用する際に IAM ユーザーを作成する必要がなくなります。AWS SSO を使わない場合は、3rd Party サービスの IdP を使うことも可能です。代表的な IdP については「サードパーティの SAML ソリューションプロバイダーと AWS の統合」をご参照ください。管理 AWS アカウントの管理者でもなく、3rd Party サービスの IdP の利用が出来ない場合は、お客様の AWS 環境内で Active Directory Federation Service (ADFS) を構築し、利用することが出来ます。ただし、可用性を担保するためにお客様自身で冗長化をする必要が生じます。

Point2. アイデンティティストアの選択

アイデンティティストアは ID 認証基盤のことを指し、ローカルと外部の2種類があります。ローカルのアイデンティティストアはお客様がユーザー認証に用いる IdP 自身のリポジトリ内に管理されるものを指します。外部のアイデンティティストアはお客様がユーザー認証に用いる IdP 以外の IdP (以下、外部 IdP)内のリポジトリに管理されるものを指します。お客様がご利用もしくは検討している IdP ごとにサポートしている外部 IdP は異なります。そのため、今回は AWS SSO を IdP として利用する際の導入や運用のしやすさを軸にしたアイデンティティストアの選定ロジックフローの例をご紹介します。

まず、お客様で既にご利用の外部 IdP があり、かつ管理権限をお持ちの場合は、構成変更などの手間などを考慮すると、外部 IdP のアイデンティティストアを利用して頂くのが良いでしょう。AWS SSO がサポートしている外部 IdP は OktaAzure ADOneLogin などがあります。最新のサポートされている外部 IdP は「サポートされているID プロバイダー」を参照してください。他には運用する ID 基盤をできるだけ少なくしたいというお客様もいらっしゃると思います。その際には、 AWS SSO のローカルアイデンティティストアをご利用いただけます。ただし、ローカルアイデンティティストアを参照する場合、運用の利便性が高いものの組織のアイデンティティを一元管理する観点からは推奨されないため、社内ポリシーに照らし合わせてご利用の検討をしていただけると幸いです。また、いずれにも該当しない場合は Active Directory を構成し、参照していただく形となります。

AWS Single Sign-On のセットアップ

シングルサインオンの設計ポイントで紹介したように、AWS SSO は AWS 利用の観点で最もシンプルなソリューションです。実際に以下の手順を踏んで頂くことで、AWS SSO の利用を開始することが出来ます。また、AWS Control Tower を有効化していただくことで、手順 1 – 3 をスキップすることができます。AWS Control Tower は簡単に利用開始することが出来ます。AWS Control Tower の有効化をする際は、「スタートアップにおけるマルチアカウントの考え方と AWS Control Tower のすゝめ」を参照ください。

  1. AWS SSO の有効化
  2. ID ソース(アイデンティティストア)の選択
  3. AWS アカウントへのシングルサインオンアクセスの管理
    1. ユーザー作成
    2. グループ作成
    3. ユーザーをグループに追加
    4. ユーザーの有効化およびパスワード設定
    5. アクセス権限セットのユーザー/グループへの割り当て
  4. 動作確認
  5. MFA の有効化および MFA デバイスの登録

*AWS SSO を利用するための前提条件して、お客様のアカウントで AWS Organizations で All features が有効になっていること、管理アカウントを操作可能な権限を持っている必要があります。

Step1. AWS SSO の有効化

AWS Organizations の管理 AWS アカウントでマネジメントコンソールにログインし、AWS SSO の画面に行きます。

AWS SSO は1つのリージョンでのみ有効化することが出来ます。今回は東京リージョンで AWS SSO を有効化します。AWS SSO を有効にするをクリックします。 30秒から1分ほどで有効化されます。

Step2. ID ソース(アイデンティティストア)の選択

AWS SSO が有効化されたら、左のダッシュボードを選択し、ID ソースを選択 をクリックします。ID ソースはアイデンティティストアのことを指します。また、ユーザーポータルの URL は シングルサインオンアクセスを行う際の URL となります。

デフォルトの設定では、ID ソース、認証、プロビジョニングは全て AWS SSO となっています。ID ソースとして外部 IdP を参照する場合は、変更 をクリックします。変更 を押すと AWS SSO SAML メタデータのダウンロード、および IdP SAML メタデータのアップロードが可能となります。ここでは、Active Directory および 外部 IdP の設定方法についての詳細には触れません。外部 IdP の設定方法については、「Enabling Single Sign-On Between OneLogin and AWS」をご参照ください。

Step3. AWS アカウントへのアクセス管理

a. ユーザー作成

ユーザー作成の必須項目は、「ユーザー名」「E メールアドレス」「名」「姓」「表示名」です。オプション項目として、「連絡方法」などもありますが、今回は設定せずに、 次:グループ をクリックします。

b. グループ作成

初めて AWS SSO を利用する際はグループが存在しないため、グループの作成 をクリックします。グループを作成せずに次に進むことも可能ですが、アクセス権限管理をシンプルにするためにグループは作成しましょう。

グループ名を作成し、作成 をクリックします。ここでは 「Test」というグループを作成します。

c. ユーザーをグループに追加

今回は2つのグループを作成しました。ユーザーを追加 をクリックします。

d. ユーザーの有効化およびパスワード設定

先程、ユーザーの作成で入力した E メールアドレス宛にメールが届いています。

メール内の Accept invitation をクリックします。そして、パスワードを入力後、新しいパスワードの設定 をクリックします。

e. アクセス権限セットのユーザー/グループへの割り当て

これで、ユーザーおよびグループの作成が完了しました。しかし、現状 AWS アカウントにログイン可能な権限の設定を行っていないためログインできません。そこで、アクセス権限セットを作成し、ユーザー/グループに割り当てていきます。アクセス権限セットについては「え、IAM ユーザーを作らなくてもマネジメントコンソールにログインできるの!? -シングルサインオン考え方編-」をご参照ください。

AWS アカウント をクリックします。ユーザーおよびグループにシングルサインオンアクセスを行いたい AWS アカウントを1つ以上選択後、ユーザーの割り当て をクリックします。

グループタブを開き、シングルサインオンアクセスを許可するグループを選択肢、次:アクセス権限セット をクリックします。

AWS SSO の初回利用時は、アクセス権限セットが存在しません。そのため、新しいアクセス権限セットを作成 をクリックします。

今回は、既存の職務機能ポリシーを使用します。カスタムアクセス権限セットを作成することで、お客様のニーズに合わせたきめ細やかな設定が可能となります。次:詳細 をクリックします。

職務機能ごとに AWS 側でポリシーを準備しているので、お客様のニーズにあったポリシーを選択します。今回は、PowerUserAccess を選択し、次:タグ をクリックします。

今回は、タグの設定は行わずに、次:確認 をクリックします。

最後に、作成したいアクセス権限セットに間違いがないかを確認し、作成 をクリックします。

今作成した、PowerUserAccess の権限セットを選択し、完了 をクリックします。

Step4. 動作確認

ユーザーポータルの URL にアクセスし、ユーザー名/パスワードを入力して、ログインし、AWS アカウントが見えるようになっているか確認しましょう。作成したアクセス権限セットが確認できると思います。Management console をクリックします。

マネジメントコンソールに IAM ユーザーを作らずに、フェデレーションによってログインをすることが出来ました。

Step5. MFA の有効化および MFA デバイスの登録

ここまでの設定が完了すると、AWS アカウントへのシングルサインオンアクセスが可能となりました。しかし、現状のシングルサインオンではユーザー名/パスワードのみでログインが可能な状態となっています。そのため、ユーザーに対して MFA の設定を行います。また、AWS SSO とは少し話が逸れますが、Root アカウントに対しても MFA を設定することがベストプラクティスです。これを期に、Root アカウントに対しても MFA を設定しましょう。設定方法は、「AWS アカウント ルートユーザー に対して MFA を有効化」をご参照ください。

では、本題に戻ります。まず、AWS SSO の MFA はデフォルトでは無効化されているため、有効化します。以下の画面では、MFA の要求タイミングや MFA の認証タイプなどを設定することが出来ます。

次に、MFA デバイスの登録を行います。AWS SSO ユーザーポータルに移動します。
右上の MFA devices をクリックすると、MFA の設定画面に遷移します。Register device をクリックします。

MFA デバイスには物理的なセキュリティキーや組み込みのオーセンティケーター、および認証アプリが登録可能です。使用可能な認証アプリは、「認証アプリ」をご参照ください。今回は MFA デバイスとして、認証アプリを使用します。認証コードを入力後、Assign MFA をクリックします。

ユーザーポータルの URL にアクセスし、ユーザー名/パスワードを入力後に、認証コードを要求されたら無事 MFA の設定が成功しています。ログインし、AWS アカウントが見えるようになっているか確認しましょう。以上で、全ての設定が完了しました。

おわりに

AWS アカウントにおけるシングルサインオン設計のポイントおよび AWS SSO の設定方法についてご紹介しました。先述の通り、IdP およびアイデンティティストアの選択についてはお客様の要件によって左右されます。そのため、お客様自身の社内ポリシーに照らし合わせて選択していただきたいです。そして、IdP、アイデンティティストアなどの詳細な比較や、シングルサインオンの運用ポイントなど本ブログよりも詳細な内容につきましては、「【AWS Black Belt Online Seminar】AWS アカウント シングルサインオンの設計と運用」をご参照ください。ユーザー管理の効率化を通してセキュリティやガバナンスの向上につながれば幸いです。

このブログの著者

稲田 大陸(Riku Inada)@inariku

2021 年 4 月に AWS Japan に入社し、一人前の SA になるための修行中。
好きな AWS のサービスは AWS AmplifyAmazon CDK 。趣味は筋トレ。