1
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

[AWS] Cognitoの基本まとめ

Last updated at Posted at 2020-07-29

Cognitoとは

一言で説明すると、ウェブアプリケーションやモバイルアプリケーションに、さくっと認証・認可、ユーザー管理の仕組みを構築できるためのサービス、ということになります。
その中で、

  • ユーザープール
  • IDプール
  • Cognito Sync

などの代表的な機能について、まとめました。

ユーザープール

公式のドキュメントには「何億人」とまで記載されていますが、それくらい巨大なユーザーを、セキュアに管理できる、フルマネージドサービスのユーザーディレクトリで、認証の機能を提供します。

ユーザーは、

  • Google
  • Facebook
  • Amazon
  • Apple

などのソーシャルIDプロバイダーやSAMLベースのIDプロバイダ経由でサインインすることもできます。
プロバイダ経由でサインインする場合でも、ユーザープールのディレクトリプロファイルにアクセスすることができます。
ディレクトリプロファイルには、

  • ユーザー名
  • 電話番号
  • 住所
  • タイムゾーン

等、標準的なOpenID Connectベースのプロファイルがサポートされています。

その他の主な機能としては、

  • ユーザーがサインインするための組み込みのカスタマイズ可能なウェブUI
  • 多要素認証(MFA)などのセキュリティ機能
    • 漏洩した認証情報のチェック
    • アカウントの乗っ取り保護
    • 電話とEメールによる検証
  • カスタマイズされたワークフローとLambdaトリガーによるユーザー移行
  • Eメールアドレスや電話番号によるサインイン認証
  • パスワードポリシーの設定
  • 利用デバイスの記憶

などがあります。

IDプール

ユーザーの一意のIDを作成し、IDプロバイダーで連携させることができるようになります。
IDプールでは、一時的なAWS認証情報を取得することで、各種AWSサービスにアクセスすることが可能となります。
IDプールでは、以下のようなIDプロバイダがサポートされています。

  • Login width Amazon
  • Facebook
  • Google
  • Apple
  • Twitter
  • 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は、モバイルアプリケーションだけでなく、ウェブアプリケーションにも使用できるので、一般的なウェブアプリケーションにも、非常に簡単に認証・認可の仕組みを導入することができます。
また、既存のアプリケーションへの導入も比較的簡単に行えます。
次回は、実際にコードを使ったサンプルアプリケーションを作成してみたいと思います。

- [AWS] ReactアプリでCognitoユーザープール認証を行ってみる

1
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?