Amazon Web Services ブログ

[New] Amazon Cognito 向け User Pools

Amazon Cognito を使うことでバックエンドコードを書いたり、インフラストラクチャの管理をする必要なくモバイルや Web アプリに簡単に認証やユーザ管理とデータ同期を簡単に追加できます。ユーザごとの設定やアプリケーションの状態データをバックエンドコードを書いたり、インフラストラクチャの管理をする必要なく AWS Cloud に保存することが簡単になります。昨年、AWS CloudTrail サポートログインプロバイダとして Twitter および Digits の使用、Cognito におけるイベントに応答するAWS Lambda function の実行機能、そして Amazon Kinesis へのユーザアイデンティティデータのストリーミングといったいくつかのパワフルな新機能を Cognito に追加しました。

User Pools
モバイルと Web アプリに簡単にユーザサインアップとサインインを追加するのに Amazon Cognito を利用できるようになりました。User Pool の機能を用いて、数億ユーザまでスケールし、フルマネージドなので構築したり、セキュアにしたりアプリに対する認証をスケールしたりするのに関連する重労働について心配することなく独自のユーザディレクトリを作成できます。この機能は email による確認、電話番号による確認や多要素認証といった拡張されたセキュリティ機能も提供します。アプリ開発者として、みなさんはこういった目的のために、Federated Identity Pools と呼ぶようになった Cognito の機能を利用して、Amazon、Facebook、Google、Twitter もしくは Digits といった外部のアイデンティティプロバイダを利用するというオプションを既に持っていました。User Pool を使うことで Web とモバイルの SaaS アプリ、ゲームなどといった面でサインアップとサインインに詳細なコントロールが可能になります。あらゆるスケール(潜在的には数十や数億のユーザ)でディレクトリサービスを構築し稼働させることは簡単ではなく、ユーザ名、パスワード、email アドレスやその他のセンシティブな情報のかけらを管理するときに追加されるセキュリティの重荷とともに全くもって付加価値を生まない重労働です。User Pool を使う場合、独自のディレクトリサービスを構築し、稼働させる必要はありません。

アカウントごとの複数のUser Pool
自分の AWS アカウントに複数の User Pool を作成可能です(1プール内のアイデンティティは分離され他のプール内のものとも異なります)。各プールは名前が付けられ、各ユーザで保存したい属性(アドレス、email、電話番号、ロケールなど)に対するフルコントロールを持ちます。プールの作成後はユーザを認証し、クレデンシャルを取得するなどのために AWS Mobile SDK(iOS、AndroidとJavaScriptで利用可能)を使用できます。ユーザは SMS ベースの多要素認証(Multi-Factor Authentication、MFA)や電話や email によるアカウント確認を含む各種セキュリティ機能によりベネフィットを得ます。パスワード機能では通信上、クリアテキストなパスワードを送信しないようにSecure Remote Password (SRP)を利用します。

User Poolの作成
AWS Management Console (APIとCLIも利用可能です)から User Pool を作成するプロセスをウォークスルーしてみましょう。(仮想的な)私のアプリは PaymentApp と呼ばれますので PaymentAppUsers という名前のプールを作成します

デフォルトをレビューして受け入れるか全ての設定をすることもできます。ここでは後者のアクションを選択します。新規ユーザがサービスにサインアップする際に収集しなければいけない属性のセットを選択します。

カスタム属性をセットアップすることも可能です。私のアプリの場合、ユーザの使いたい支払い通貨を記録したいです。

それから望ましいパスワード強度を設定します。これはペイメントのアプリなので全ての選択肢をチェックします。

次に、多要素認証を有効にし、email アドレスと電話番号が確認される必要があることを示します。確認の各メソッドに関連するメッセージのカスタマイズも行います。

私のアプリはモバイルクライアントも持っているのでユニーク ID とシークレットキーを作成するようにします。

サインアップ、検証、認証そして確認のステップで Cognito に Lambda ファンクションを起動させるようにすることもできます(これはオプショナルですが、カスタム属性を確認ことによるサインアップワークフローをカスタマイズしたい場合にとても便利です)。

最後に、自身の選択をレビューしプールを作成します。

この時点でWebもしくはモバイルアプリのを開発する準備が整いました。

AsurionにおけるCognito

Asurion は2億以上の顧客にスマートフォンのような高付加価値なデバイス向けの保険契約を提供しています。Asurion は新たなデバイス保護アプリ向けのユーザディレクトリの管理のために Cognito を使う計画をしています。このアプリはデバイスに関するデータを収集し、利用料の最適化を目的としたリコメンドを行います。

Asurion は幅広いアイデンティティモデルのサポートを理由に Cognito を選択しています。アイデンティティシステムをスケールさせ、セキュアにするという重労働に対処する必要なく、彼らは自身のフルマネージドなディレクトリを保有したり、サードパーティのソーシャルアイデンティティプロバイダを通したユーザ認証を持つことができます。

Ravi Tiyyagura (Asurion’s Director of Enterprise Architecture) はこう言います。

数千万のエンドユーザに対するセキュアでシンプルなサインアップとサインイン体験を提供することはとても重要です。Amazon Cognito により、我々はバックエンドを構築し管理することに関して心配することなくそれをできます。

Ravi Tiyyagura (Asurion’s Director of Enterprise Architecture) はこう言います:

数千万のエンドユーザに対するセキュアでシンプルなサインアップとサインイン体験を提供することはとても重要です。Amazon Cognito により、我々はバックエンドを構築し管理することに関して心配することなくそれをできます。

Public Beta
We are launching user pools today as a public beta. All of the primary functionality is in place and you can use it to start building and testing your app. We expect to make it available for production use within a couple of months.

user pool を本日パブリックベータとしてローンチします。全ての主要な機能は整備されており、アプリの開発とテストを始めるために利用可能です。数ヶ月のうちにプロダクション用途で利用可能にするようにするつもりです。

— Jeff; (翻訳は西谷が担当しました。原文はこちら)