Amazon Web Services ブログ

AWS SSOでAmazon EC2 Windowsインスタンスへのセキュアでシームレスなシングルサインオンを可能にする方法

本記事は How to enable secure seamless single sign-on to Amazon EC2 Windows instances with AWS SSO を翻訳したものです。

本投稿は、Principal Product Manager の Todd Rowe により寄稿されました。

2021年11月23日に、Microsoft Windowsを実行しているAWSコンピュートインスタンスへの安全なアクセスを簡素化する新機能を発表しました。今回のアップデートは、管理者やユーザがEC2のWindowsインスタンスに安全にアクセスするための、より合理的なエクスペリエンスの実現に関するお客様からのフィードバックに応えるために実施しました。新しいエクスペリエンスでは、既存のアイデンティティソリューションを利用して、AWS上でMicrosoft Windowsのワークロードを実行および管理します。

AWS Single Sign-On(AWS SSO)や、AWS SSOに対応したIDプロバイダーでユーザーを作成・管理することができます。(Okta、Ping、OneLoginなど)を利用して、AWS Fleet Manager のコンソールからEC2のWindowsインスタンスにワンクリックでシングルサインオンを提供することができます。また、既存の企業のユーザー名、パスワード、多要素認証デバイスを使用して、認証情報を何度も入力することなく、EC2ウィンドウズインスタンスに安全にアクセスすることができます。

AWS SSOを利用することで、共有の管理者認証情報の使用や、リモートアクセスのクライアントソフトウェアの設定が不要になります。そして、複数のAWSアカウントにまたがる大規模なEC2 Windowsインスタンスへのアクセスを一元的に付与・解除することができます。例えば、AWS SSO統合IDシステムから従業員を削除すると、その従業員のすべてのAWSリソース(EC2 Windowsインスタンスを含む)へのアクセスが自動的に取り消されます。個々のユーザーのアクションは、Amazon EC2 Windowsインスタンスのイベントログで確認できるようになり、監査やコンプライアンスの要件を満たすことが容易になりました。

AWS SSO とは

AWS SSOは、AWSアカウントやビジネスアプリケーションへのSSOアクセスの管理を簡素化するもので、AWSにおける従業員のアイデンティティを作成または接続するための中心的な場所です。AWS Organizationsでは、すべてのAWSアカウントのSSOアクセスとユーザー権限を制御できます。AWSアカウントへのアクセスを管理するか、クラウドアプリケーションへのアクセスを管理するか、またはその両方を選択することができます。

AWSアカウントへのアクセスを管理する際、AWS SSOではアクセス権限セットを使用して、AWS Organizationsアカウント全体でロールを一元的に定義して割り当てることができます。アクセス権限セットは、AWS Organizationsアカウントでのロールの作成と維持のためにAWS SSOが使用するロール定義(テンプレート)です。アクセス権限セットは、ロールのセッション期間とポリシーを定義します。選択したAWSアカウントのユーザーまたはグループにアクセス権限セットを割り当てると、AWS SSOは対象アカウントに対応するロールを作成し、AWS SSOはAWS SSOユーザーポータルを通じてロールへのアクセスを制御します。

この記事では、AWS Fleet Managerへのアクセスを管理するアクセス権限セットを使用して、EC2インスタンスへのワンクリックアクセスを実現しています。

これを3つのステップで実現します。

  1. AWS SSO アクセス権限セットを作成します(例:demoFMPermissionSet)。
  2. アクセス権限セットを既存のAWS SSOグループに割り当てます(例:demoFMGroup)。
  3. AWS SSO ユーザーポータルにログインし、AWS Fleet Manager コンソールを介して EC2 Windows インスタンスに接続します。

前提条件

この例での前提条件は、以下が準備済であることです

  1. プロビジョンされたユーザとグループを持つ設定済の AWS SSO
  2. AWS Systems Manager Fleet Managerが管理するEC2のWindowsインスタンス。

ソリューションアーキテクチャ

図1:このソリューションに実装されたステップを示すアーキテクチャ図

次の図は、EC2のWindowsインスタンスにログインするためのAWS SSOユーザーIDを設定して使用するための手順を示しています。

仕組み

AWS SSO アクセス権限セットは、対象アカウントにロールを作成し、許可されたユーザーに AWS Fleet Manager を使用して EC2 Windows インスタンスにサインインする許可を与えます。ユーザーがアカウント内のロールを選択すると、ユーザーは AWS Fleet Manager コンソールにサインインし、サインインしたい EC2 インスタンスを選択します。

AWS Fleet Managerは、ローカルのWindowsユーザーアカウントとそのユーザーのクレデンシャルを作成し、そのユーザーのインスタンスへのサインインを自動化します。

AWS SSOアクセス権限セットを作成するには

この手順では、割り当てられたユーザーやグループに、EC2インスタンスへのシングルサインオンにAWS Fleet Managerを使用する権限を付与するアクセス権限セットを作成します。

  1. AWS SSOコンソールから「AWS アカウント」に移動し、「アクセス権限セット」タブを選択し、「アクセス権限セットを作成」を選択し、「カスタムアクセス権限セットを作成」を選択します。
  2. アクセス権限セットに名前を付け、必要な項目を入力し、ページの下部にある「カスタムアクセス権限ポリシーを作成」を必ず選択します。ポリシーの詳細については、以下の「カスタムパーミッションポリシーの例」を参照してください。
  3. カスタム権限ポリシーの作成後、オプションのタグ付けを適用することもできます。作成が完了したら、図2に示すように、確認して「Create」を選択し、カスタム権限セットの作成を完了します。

    図2:カスタムアクセス権限セットの確認

カスタムパーミッションポリシーの例

これは使用するポリシーのサンプルで、こちらからダウンロードできます

この許可ポリシーには、サービスごとに個別のステートメントID(Sid)が含まれており、それぞれに必要なアクションが記載されています。

84行目に、AWSSSO-CreateSSOUserドキュメントリソースへの参照があることに注目してください。このドキュメントは、AWS SSOのログインユーザーに基づいてローカルのWindowsアカウントを作成し、Windowsインスタンスへの自動ログインのためにユーザーのパスワードを設定/リセットする役割を果たします。

96-98行目には、新しいssm-guiconnectアクションがあります。これは、EC2のWindowsインスタンスへのセキュアな接続を行い、Fleet ManagerコンソールのGUIデスクトップをレンダリングするために使用されます。

AWS SSOグループを割り当てるには

AWS SSOグループを、選択したアカウントのAWS Fleet Managerアクセス権限セットに割り当てます。

この手順では、AWS組織内の2つのAWSアカウントを選択し、AWS SSOグループに、以前に作成したFleet manager経由でのサインインを可能にするアクセス権限セットへのアクセスを付与します。

  1. AWS SSOコンソールから「AWS アカウント」に移動し、図3に示すようにアカウントを選択します(例:demoAccount1とdemoAccount2)。
  2. 「ユーザーの割り当て」ボタンを選択します。必要に応じて、複数のグループやユーザーに個別にアクセス権を割り当てることもできます。

    図3:ユーザーやグループを割り当てる「AWS アカウント」の選択

  3. 複数のAWS SSOユーザーがこの機能にアクセスできるようにするには、図4に示すように、「グループ」タブからAWS SSOグループを選択し、「次へ」ボタンを選択します。

    図4:AWSアカウントへのグループの割り当て

  4. 先に作成したアクセス権限セットを選択し、「次へ」ボタンを選択します。

    図5:AWSアカウントに設定されたアクセス権限セットの選択

  5. 選択した内容を確認し、「完了」を押すと、図6に示すように入力内容が送信されます。

    図6:AWSアカウントへのサブミッション割り当ての確認

AWS SSOは、アクセス権限セット定義を使用して、選択された各アカウントにロールを作成し、ユーザーにFleet Manager経由でサインインするためのアクセスを許可するようになりました。ユーザーは、AWS SSOのユーザーポータルにサインインすることで、そのロールにアクセスできるようになります。

Fleet Managerで管理されたEC2インスタンスにアクセスするには

  1. コンソールからAWS SSOユーザーポータルのURLに移動し、上記ステップ3で選択したグループ(例:demoFMGroup)のメンバーである任意のAWS SSOユーザーとしてログインします。
  2. 図7に示すように、AWS SSOのユーザーポータルページから「Management console」を選択し、EC2のWindowsマネージドインスタンスがあるFleet Managerコンソールに移動します。

    図7:ユーザーポータルからマネジメントコンソールへの移動

  3. 図8に示すように、管理対象のWindowsインスタンスを選択し、「Instance actions」、「Connect with Remote Desktop」の順に選択します。

    図8:リモートデスクトップでの接続

  4. 図9に示すように、「Single Sign-On」を選択し、「Connect」を選択します。
    これにより、AWS SSOクレデンシャルを使用して自動的にログインします。インスタンスへの接続が初めての場合は、新しいローカルユーザーが作成されます。

    図9:「Single Sign-On」の選択

    接続すると、図10に示すように、「All sessions」タブにEC2 Windowsインスタンスが表示され、1つのビューで最大4つの同時セッションを行うことができるようになります。単一のセッション表示の場合は、Instance IDが記述されたタブを選択します。

    図10:単一のデスクトップビューの選択

  5. 単一のセッションを表示するタブから、AWS Fleet ManagerがAWS SSOユーザー(demoUser1)のためにローカルのWindows Serverユーザーを作成したことがわかります。

図11:Amazon EC2のWindowsインスタンスのイベントログにAWS SSOのユーザー名が表示される

ローカルユーザーを作成した後、AWS Fleet Managerは作成した認証情報を使用して、Windowsイベントビューアからsso-demoUser1としてEC2 Windowsサーバーにサインインし、EC2 Windowsサーバー上で個別のユーザーログを取得することができます。これらのログは、Fleet Managerコンソール内からも見ることができます。

まとめ

この記事では、AWS Fleet ManagerとAWS Single Sign-Onを使って、Windows EC2インスタンスにシングルサインインを提供する方法を説明しました。これにより、AWS SSOでユーザーを作成したり、サポートされている任意のIDプロバイダをAWS SSOに接続したり、AWS Fleet Managerを介してユーザーにEC2インスタンスへのワンクリックアクセスを提供することができます。

これは、ユーザーにAWS Fleet Managerへのアクセスを許可するAWS SSOアクセス権限セットを作成し、選択したAWSアカウントのアクセス権限セットにAWS SSOからグループを割り当てることで実現しています。ユーザーは、AWS SSOユーザーポータルにサインインし、AWS Fleet Managerに遷移し、自分のWindows EC2インスタンスを選択し、Windowsのクレデンシャルを別途入力することなく、Windowsのユーザー体験にたどり着くことができます。

AWS SSOの詳細については、AWS Single Sign-On Documentation をご覧ください。Fleet Managerの詳細については、AWS Systems Manager Fleet Manager Documentation をご覧ください。

このブログ記事に関するフィードバックがある場合は、以下のコメント欄にコメントを送信してください。この記事について質問がある場合は、AWS Single Sign-Onフォーラムで新しいスレッドを立ち上げてください。

AWSセキュリティのニュースをもっと知りたい場合は、こちらのTwitterをぜひフォローしてください。

翻訳は Solutions Architect の高野秀樹が担当しました。原文はこちらです。