Cognitoとは
一言で説明すると、ウェブアプリケーションやモバイルアプリケーションに、さくっと認証・認可、ユーザー管理の仕組みを構築できるためのサービス、ということになります。
その中で、
- ユーザープール
- IDプール
- Cognito Sync
などの代表的な機能について、まとめました。
ユーザープール
公式のドキュメントには「何億人」とまで記載されていますが、それくらい巨大なユーザーを、セキュアに管理できる、フルマネージドサービスのユーザーディレクトリで、認証の機能を提供します。
ユーザーは、
- Amazon
- Apple
などのソーシャルIDプロバイダーやSAMLベースのIDプロバイダ経由でサインインすることもできます。
プロバイダ経由でサインインする場合でも、ユーザープールのディレクトリプロファイルにアクセスすることができます。
ディレクトリプロファイルには、
- ユーザー名
- 電話番号
- 住所
- タイムゾーン
等、標準的なOpenID Connectベースのプロファイルがサポートされています。
その他の主な機能としては、
- ユーザーがサインインするための組み込みのカスタマイズ可能なウェブUI
- 多要素認証(MFA)などのセキュリティ機能
- 漏洩した認証情報のチェック
- アカウントの乗っ取り保護
- 電話とEメールによる検証
- カスタマイズされたワークフローとLambdaトリガーによるユーザー移行
- Eメールアドレスや電話番号によるサインイン認証
- パスワードポリシーの設定
- 利用デバイスの記憶
などがあります。
IDプール
ユーザーの一意のIDを作成し、IDプロバイダーで連携させることができるようになります。
IDプールでは、一時的なAWS認証情報を取得することで、各種AWSサービスにアクセスすることが可能となります。
IDプールでは、以下のようなIDプロバイダがサポートされています。
- Login width Amazon
- Apple
- Digits
- Cognito(ユーザープール)
- Open ID Connect
- SAML ID
- 開発者が認証したID
Cognito Sync
アプリケーション関連のユーザーデータのデバイス間の同期を有効にする機能です。
クライアントアプリは、データをローカルにキャッシュするため、デバイスがオフラインの状態でもデータへの読み書きが可能になります。
データは、デバイスがオンラインになっている時に同期が行われます。
この時、ユーザーが保持できるデータの最大サイズは20MBで、ユーザー情報ストア内のデータセットには、最大1MBのデータを保存できます。
データセット内に保存できるキーの数は1024個までです。
なお、現在はより高機能なAppSyncが提供されているため、今後使用を検討する場合は、AppSyncの使用を推奨されています。
対応言語
Cognitoは、AWS Mobile SDKに対応しています。AWS Mobile SDKでは、
- iOS
- Android
- Unity
- Kindle Fire
がサポートされています。
また、ユーザープールに関しては、JavaScriptによる、JavaScript AWS SDK for CognitoによるJavaScriptでの開発も可能です。
コントロールAPI、データAPIがそれぞれ用意されているため、各種言語からの呼び出しも可能です。
料金
リージョンごとで料金が異なりますが、ここでは東京リージョンを例にしたいと思います(2020年7月現在)。
ユーザープール
ユーザープールの認証情報、または、ソーシャルIDプロバイダーで直接サインインするユーザ数によって決まります。
1ヶ月あたりのアクティブユーザー数 | 1ユーザーあたりの料金 |
---|---|
〜50000 | 無料 |
50001〜10万 | 0.0055$(US) |
次の90万 | 0.0046$(US) |
次の900万 | 0.00325$(US) |
1000万超 | 0.0025$(US) |
SAMLまたはOpenID Connectionフェデレーションを使用してサインインする場合も、ユーザー数によって決まります。
1ヶ月あたりのアクティブユーザー数 | 1ユーザーあたりの料金 |
---|---|
〜50 | 無料 |
50超 | 0.015$(US) |
さらに、監査モードを含む高度なセキュリティ機能を使用すると、上記に加えて、下記料金が加算されます。
1ヶ月あたりのアクティブユーザー数 | 1ユーザーあたりの料金 |
---|---|
〜50000 | 0.050$(US) |
次の5万 | 0.035$(US) |
次の90万 | 0.020$(US) |
次の900万 | 0.015$(US) |
1000万超 | 0.010$(US) |
Cognito Sync
こちらもリージョンにより料金が異なりますので、東京リージョンを例にしたいと思います(2020年7月現在)。
無料利用枠
- 最初の12ヶ月間
- 1ヶ月あたり10GBの同期容量
- 1ヶ月あたり100万回の同期オペレーション
無料利用枠外になる場合は、
- 1ヶ月1GBの同期容量あたり 0.19$(US)
- 1ヶ月に1万回の同期オペレーションごと 0.19$(US)
また、プッシュ同期を有効にしているとSNSによる通知が行われるため、別途SNSの料金が加算されます。
リージョン
Cognitoは、以下のリージョンでサポートされています(2020年7月現在)。
- バージニア北部(us-east-1)
- オハイオ(us-east-2)
- オレゴン(us-west-2)
- ムンバイ(ap-south-1)
- ソウル(ap-northeast-2)
- シンガポール(ap-southeast-1)
- シドニー(ap-southeast-2)
- 東京(ap-northeast-1)
- カナダ(ca-central-1)
- フランクフルト(eu-central-1)
- アイルランド(eu-west-1)
- ロンドン(eu-west-2)
まとめ
Cognitoは、モバイルアプリケーションだけでなく、ウェブアプリケーションにも使用できるので、一般的なウェブアプリケーションにも、非常に簡単に認証・認可の仕組みを導入することができます。
また、既存のアプリケーションへの導入も比較的簡単に行えます。
次回は、実際にコードを使ったサンプルアプリケーションを作成してみたいと思います。