Amazon Web Services ブログ

Amazon Cognito マルチリージョンレプリケーションを利用して、アプリケーションの回復力の向上を実現

ウェブアプリケーションおよびモバイルアプリのデベロッパーと連携するデベロッパーアドボケートとして、私は、リージョンレベルのサービスが万が一中断した場合に備えて、一貫したユーザー認証を維持する必要性について、しばしば耳にしてきました。エージェンティック AI、マイクロサービス、オートメーション、サービスアカウントの利用拡大に伴って、マシン間認証についての同様のニーズが高まっています。本日、Amazon Cognito の 2 つの重要なアップデートについてお知らせします。1 つは回復力を高めるためのマルチリージョンレプリケーション、もう 1 つは暗号化コントロールをより詳細に制御できるカスタマーマネージドキーのサポートです。

多くのアプリケーションは、ユーザー認証およびマシン間認証の処理やユーザープロファイルの管理に Amazon Cognito を利用しています。高可用性を実現するために構築するには、異なる AWS リージョン間でデータの一貫性を実現することが不可欠ですが、これまでその一貫性を実現するには大きな課題が伴っていました。エンジニアリングチームは、リージョン間で設定を同期するために、カスタムレプリケーションソリューションの構築と維持に多大な時間を費やしていました。リージョン間でのユーザーデータの手動エクスポートとインポートは、潜在的なデータ漏えいによるセキュリティリスクを生み出し、データの不整合を引き起こす可能性をはらんでいました。リージョンレベルの移行時には、エンドユーザーは、強制パスワードリセットや再認証などの中断を経験していました。マシン間通信では、チームは、セカンダリリージョンで新しいアプリケーションクライアントを作成する必要があり、そのためにはアプリケーションを再設定し、新しいリージョンレベルの発行者によって発行されたアクセストークンを受け入れるように OAuth で保護されたリソースを更新する必要がありました。これらの課題により、リージョン間で中断のない運用を維持することが困難となっていました。

マルチリージョンレプリケーションを使用することで、Amazon Cognito は、任意のセカンダリ AWS リージョンにユーザーデータとマシンシークレットの同期コピーを自動的に維持します。レプリケーションは、プライマリリージョンからセカンダリリージョンへの一方向で行われます。これには、ユーザープロファイル、認証情報、およびプール設定が含まれます。セカンダリリージョンは読み取り専用モードで動作し、認証機能の維持に重点を置きます。既存のセッションは中断されずに継続されます。

トラフィックをセカンダリリージョンにルーティングする必要がある場合、既存のユーザーは、中断なく既存の認証情報を使用してサインインを継続でき、現在サインインしているユーザーは、両方のリージョンがどちらのリージョンによって発行されたアクセストークンも認識するため、認証された状態が維持されます。マルチリージョンレプリケーションは、ソーシャルプロバイダー (Amazon、Google、Apple、Facebook) を通じたフェデレーションサインイン、Security Assertion Markup Language (SAML) と OpenID Connect (OIDC) の統合、API 認証フローなど、すべての認証方法をサポートします。このアプローチにより、顧客向けアプリケーションとバックエンドサービスにおけるマシン間通信の両方で可用性が維持されます。認証は中断なく継続されますが、フェイルオーバー中は新規ユーザー登録やプロファイル更新などの操作は利用できません。

マルチリージョンレプリケーションを設定する前に、AWS Key Management Service (AWS KMS) に保存されているマルチリージョンカスタマーマネージドキーを設定し、保管中のユーザーデータを暗号化する必要があります。これらのキーは、リージョン間で一貫した暗号化を提供すると同時に、暗号化戦略を制御できるようにします。

実際の動作
us-west-2 (オレゴン) リージョンにある既存の Cognito ユーザープールを使用してこのデモを開始します。us-east-1 (バージニア北部) へのレプリケーションを設定したいと考えています。また、これらの 2 つのリージョンにレプリケートされたカスタマーマネージドキーもあります。

マルチリージョンレプリケーションの設定は、わずか 3 つのステップで完了します。AWS マネジメントコンソールは、暗号化のためのカスタムキーの設定、マルチリージョン OIDC エンドポイントの設定、レプリケーション自体の設定というステップを通じてガイドしてくれます。

まず、保管中のデータを暗号化するためにカスタム AWS KMS キーをセットアップします。

Cognito マルチリージョンレプリケーション – 初期状態

作成したカスタムキーを選択します。また、Amazon Cognito がキーにアクセスして使用できるように、キーポリシーを更新します。コンソールには、キーポリシーに追加すべき正しい IAM ポリシーステートメントが表示されます。

Cognito マルチリージョンレプリケーション – CMK の選択

カスタムキーが選択され、正しく設定されたことをコンソールが確認します。

Cognito マルチリージョンレプリケーション – CMK の確認

次に、コンソールの指示に従って OIDC 発行者タイプを設定します。[ステップ 2 – オプション] で、[設定] を選択します。

Cognito マルチリージョンレプリケーション – マルチリージョン OIDC の設定 1

これらの新しいエンドポイントを使用してクライアントアプリケーションを更新します。これは必須の変更であり、サーバー側のアプリケーションの再デプロイと、App Store および Google Play におけるモバイルアプリの更新申請が必要となります。エンドポイントを更新しないと、古いエンドポイントに対するリクエストが正しくルーティングされなくなるため、ユーザーに障害が発生します。

次の画面で、[更新済み] を選択します。新しい URL をメモしておきます。変更内容を確認し、[発行者タイプを変更] を選択します。

Cognito マルチリージョンレプリケーション – マルチリージョン OIDC の設定 2最後に、レプリケーションのターゲットリージョンを選択します。カスタム暗号化キーがレプリケートされているリージョンのみを選択できます。ターゲットリージョンを選択したら、[作成] を選択します。Cognito マルチリージョンレプリケーション – レプリケーションプロセスの開始

サービスがレプリケーションのために準備します。必要な時間は、ユーザープール内のデータ量によって異なります。

レプリケートされたユーザープールの準備が整ったら、手動で [アクティブ化] します。

Cognito マルチリージョンレプリケーション – レプリケーションプロセスの完了

レプリケーションステータスは [アクティブ] になります。これで、トラフィックをレプリカにルーティングする準備が整いました。

Cognito マルチリージョンレプリケーション – アクティブ

追加の設定
コンソールは、計画する必要のある追加の設定を追跡するのに役立ちます。また、カスタム認証フローや SMS または E メール通知のために Lambda 関数を使用する場合は、新しいリージョンでこれらのリソースをデプロイして設定する必要があります。

同様に、認証トラフィックをターゲットリージョンにルーティングする前に、ログストリーミングや AWS WAF の設定をそのターゲットリージョンで手動設定する必要があります。

Cognito マルチリージョンレプリケーション – タスクリスト

ヘルスチェックとフェイルオーバー
プライマリリージョンレベルとセカンダリリージョンレベルのエンドポイントは、常にアクティブな状態を維持し、いつでもトラフィックを処理できる準備が整っています。システムの正常性をモニタリングし、フェイルオーバーを管理するには、アプリケーション固有の要件とセキュリティ体制に整合的な戦略を設計する必要があります。ヘルスチェックを実装することで、プライマリリージョンの認証サービスのステータスをモニタリングし、フェイルオーバーを開始する条件を定義できます。これらのチェックでは、エラー率、レイテンシーパターン、特定のサービスアラートなどを確認できます。

モニタリングシステムがフェイルオーバーの条件を満たす問題を検出した場合、DNS 更新を通じてトラフィックをセカンダリリージョンにリダイレクトできます。このアプローチにより、セキュリティを維持しながら、フェイルオーバープロセスを制御できます。ピーク時以外の時間帯に、トラフィックの一部をリダイレクトし、セカンダリリージョンで認証が想定どおりに機能し続けることを検証することで、フェイルオーバー戦略をテストすることをお勧めします。

カスタムドメインでマネージドログインとフェデレーションを使用する場合、Amazon Route 53 ヘルスチェック ID を指定することで、組み込みのトラフィックルーティング機能も利用できます。

料金と利用可能なリージョン
マルチリージョンレプリケーションは、Essentials および Plus 階層をご利用の Amazon Cognito のお客様向けのアドオン機能として、本日よりご利用いただけます。ユーザー認証では、アドオン料金は、Essentials 階層のお客様の場合、レプリカリージョンごとに月間アクティブユーザーあたり 0.0045 USD、Plus 階層のお客様の場合、レプリカリージョンごとに月間アクティブユーザーあたり 0.006 USD です。マシン間 (M2M) 認証では、アドオンについては、正常に発行されたトークンの標準ボリュームベース料金に 30% が加算されます。料金に関する詳細については、「Amazon Cognito の料金」をご覧ください

マルチリージョンレプリケーションは現在、米国東部 (オハイオ、バージニア北部)、米国西部 (カリフォルニア北部、オレゴン)、アジアパシフィック(ムンバイ、ソウル、シンガポール、シドニー、東京)、カナダ (中部)、欧州 (フランクフルト、アイルランド、ロンドン、パリ、ストックホルム)、南米 (サンパウロ) のリージョンでご利用いただけます。

これらのリージョンはいずれも、レプリケーション元またはレプリケーション先として使用できます。

Essentials および Plus 階層では、カスタマーマネージドキーのサポートをご利用いただけます。次のリージョンでご利用いただけます: 米国東部 (オハイオ、バージニア北部)、米国西部 (北カリフォルニア、オレゴン)、アフリカ (ケープタウン)、アジアパシフィック (香港、ハイデラバード、ジャカルタ、マレーシア、メルボルン、ムンバイ、ニュージーランド、大阪、ソウル、シンガポール、シドニー、タイ、東京)、カナダ (中部)、カナダ西部 (カルガリー)、欧州 (フランクフルト、アイルランド、ロンドン、ミラノ、パリ、スペイン、ストックホルム、チューリッヒ)、イスラエル (テルアビブ)、メキシコ (中部)、南米 (サンパウロ)、および AWS GovCloud (米国東部、米国西部)

お客様との会話から、リージョンレベルのインシデントの発生時であっても、セキュリティ要件を満たしながら事業継続性を維持することが優先事項であることがわかりました。マルチリージョンレプリケーションにより、複雑なレプリケーションロジックを自社で管理することなく、より堅牢なアプリケーションを構築できます。ユーザーデータと設定の自動同期により、セキュリティを維持しながら運用上のオーバーヘッドを削減できます。

規制が厳しい業界のお客様向けに、カスタマーマネージドキーの新たなサポートは、データ暗号化に対する追加のコントロールを提供します。独自の暗号化キーを使用して保管中のユーザーデータを保護できるようになりました。これは、ヘルスケアや金融サービスなどの業界における規制要件に対応するのに役立ちます。

マルチリージョンレプリケーションとカスタマーマネージドキー暗号化の使用を開始するには、Amazon Cognito コンソールにアクセスしてください。また、詳細なセットアップ手順については、ドキュメントをご覧ください。この機能を活用してアプリケーションアーキテクチャを強化する方法について、ぜひお聞かせください。

– seb

原文はこちらです。