Cognito記事タイトルとURLをコピーするこんにちは、技術4課の城です。今回は既存Webシステムへの外部からのアクセスに対する認証として、ALBの認証機能を利用する検証をしてみました。通常は社内ネットワークからDirectConnectやVPN回線経由で利用しているシステムに対して、インターネット経由の窓口としてのALBを追加するような用途を想定しています。要件としては下記となります。既存社内Webシステムに対して、外部からアクセスさせる。既存Webシステムの変更は行わない。Webシステムにアクセスさせる前段で多要素認証を実施。検証してみた結果、下記の構成は実現することが出来ました。構成図は下図となります。利用したサービスとおおまかな内容は下記となります。多要素認証はSMSを利用EC2仮想社内システム用Cognitoユーザープールの作成それぞれのシステム用に2つのユーザープールを作成します。今回はEメールアドレスをユーザー名としました。numberも必須としています。ポリシーの指定パスワード強度、有効期限はデフォルトのまま、管理者のみユーザの作成を許可としています。今回はMFA必須、SMSテキストメッセージでの認証としています。Eメール、電話番号の検証を必須とし、[ロールの作成]ボタンをクリックしてSMS送信に必要なIAMロールを作成します。後で調べたところ、下記のポリシーが付与されたロールが作成されていました。SNSのサービス上限ここでちょっと気になるメッセージが出ていました。SNSに対して使用量の上限の引き上げをリクエストする必要があります。SNSのデフォルトのSMSメッセージ使用量上限は1$となっており、十数通メッセージを送ると上限に達してしまいます。SMSメッセージの料金表は下記です。https://aws.amazon.com/jp/sns/sms-pricing/AWSサポートへの上限緩和申請とSNSのアカウントの使用制限の設定を忘れずに行っておきましょう。私はこのblogの検証環境を得意気に上司に見せている時に上限にかかり、ワンタイムパスワードが送信されず、半泣きになってました。SMS14通目でした。メッセージのカスタマイズデフォルトのままとしました。タグタグはなしで[次のステップ]にいきます。デバイスの記憶デバイスの記憶はなしで[次のステップ]にいきます。デバイスの記憶について詳細は下記をご参照ください。https://docs.aws.amazon.com/ja_jp/cognito/latest/developerguide/amazon-cognito-user-pools-device-tracking.htmlアプリクライアントの設定[アプリクライアントの追加]をクリックします。デフォルト設定のまま、アプリクライアント名を入力し、[次のステップ]をクリックします。[次のステップ]をクリックします。トリガーこちらもデフォルトのまま[次のステップ]をクリックします。設定値を確認し[プールの作成]をクリックします。下記ドキュメントを参考にして、設定を行いました。https://docs.aws.amazon.com/ja_jp/elasticloadbalancing/latest/application/listener-authenticate-users.html実際にした設定としては下記となります。Cognitoのサインインページで利用されるドメインを指定します。今回はホストされたドメインを利用しました。ユーザーの作成ユーザープールの管理画面の[ユーザーとグループ]にて[ユーザーの作成]をクリックします。必要な情報を入力します。注意点ですが、電話番号は国番号を含めた形で記載する必要があります。【正】ユーザーを作成できました。Cognitoの設定は以上です。ワイルドカード証明書の作成ALB認証はHTTPSリスナーのみ利用できますので、今回はACMにてワイルドカード証明書を作成しておきます。作成手順についてはこちらをご覧ください。ターゲットグループの作成こちらもそれぞれのホスト用に2つのターゲットグループ、ブラックホール用のターゲットグループを1つ作成します。ホスト用には仮想社内システムとして作成した、2台のEC2をそれぞれ登録しました。ブラックホール用にはインスタンスの登録されていないターゲットグループを作成します。これはデフォルトのルールに適用し、レスポンスを返さないようにするためです。デフォルトのルールに該当するアクセスは、具体的にはALBのエンドポイントに直接アクセスをされるケースを想定しています。ALBの作成ALBを作成します。詳細な作成方法については省略します。下記のように設定しています。構成図にも記載のとおり、下記サブドメインのエイリアスレコードに作成したALBを登録しました。ap01.testdomain-jo.tkap02.testdomain-jo.tkアクセス確認アクセスしてみます。登録した電話番号にSMSでワンタイムパスワードが送られてくるので入力します。ap01にアクセスできました!ap02も同様に認証後、アクセスできました。最後に全くなれない認証の分野ではあったのですが、ある程度容易に多要素認証を追加することが出来ました。個人的にはCognito、OAuth2.0の仕様などについて、もう少し深く理解していきたいところです。(記事一覧)営業部カスタマーサクセス課・課長AWSへの移行、AWSアカウントセキュリティ、ネットワーク広く浅くといった感じです。AppStream2.0が好きです。2009-引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。