Table of Contents
はじめに
FundastA Inc.の鈴木です。
現在、AWS 認定デベロッパーアソシエイト試験を勉強中です。
その中で Cognito について勉強をしたので、そのことを備忘録として書いていこうと思います。
Cognitoとは
ウェブおよびモバイルアプリの認証、承認、およびユーザー管理機能を提供するサービス
Cognito:「認証と認可」
Cognitoでは「認証と認可」の違いを明確にしておいた方が良いと思うので、意味を記載します。
-
認証とは
-
ログインした人が「本人であるか」また「誰であるか」を確認する行為
-
-
認可とは
-
リソースへのアクセス権限を与えること
-
ユーザがアクセスできる範囲を確認すること
-
Cognitoとよく似たサービス
-
AWS IAM
-
AWSのサービスやリソースへのアクセスを許可および拒否できるサービス
-
アクセス権を制御することで、安全に管理することができる。
-
-
AWS Directory Service
-
ディレクトリ対応型ワークロードとAWSリソースがAWS 内のマネージド型Active Directoryを使用することが可能になる。
-
AD機能:グループポリシーやSingle Sign-Onなどが利用可能
-
-
AWS Single Sign-On(SSO)
-
複数のAWSアカウントとビジネスアプリケーションへのアクセスの一元的な管理を容易にする。
-
Organizationsにあるすべてのアカウントに対するアクセスとユーザーアクセス許可を簡単に一元管理できる。
-
これらのサービスは認証するようなサービスになっています。
しかし上記は会社内のユーザー認証、管理で用いることを主に想定したサービスなので用途がCognitoとは少し違います。
Cognito 機能
ユーザープール(認証)
-
ユーザー認証とユーザー管理を行うコンポーネント
-
ユースケース
-
アプリのサインアップとサインインのウェブページを使用
-
ユーザーデータにアクセスし、管理する。
-
ユーザーデバイス、場所、IPアドレスを追跡し、様々なリスクレベルのサインイン要求に適応する。
-
アプリのカスタム認証フローを使用する。
-
IDプール(認可)
-
外部のIDプロバイダーによって認証されたIDに対してAWSへのアクセス権限を持つ一時クレデンシャル(ユーザー等の認証に用いられる情報の総称)を払い出すことができるコンポーネント
-
外部IDプロバイダー例
-
Amazon、Facebook、Google、Twitterなど。。。
-
-
ユースケース
-
AmazonS3バケットやDynamoDBテーブルなどのAWSリソースへのアクセスをユーザーに許可する。
-
未認証ユーザー用のAWS認証情報を一時的に生成する。
-
Cognito 使用例
ユーザープール
ユーザープールは、認証を行っているため本人かどうかを確認してもらっています。
本人であれば、AWSのリソース等にアクセスを許可し、動作させることができます。
IDプール
IDプールのみを使用したい際
IDプールは外部のIDプロバイダーを使用した認可システムとなっています。
匿名で使用したい場合
AWSリソースに認証を行わせるまでもない場合などに使用されます。
ユーザープールとID プールの組み合わせ
こちらは皆さんもよく見かけると思いますが、サイトのログインと外部プロバイダーでのログインを選択できる。
上記のような外部のプロバイダーとQiitaのログインの2つがある場合などに使用されています。
Cognitoに関するサービス
CognitoSync
-
デバイス間のアプリケーションデータを同期するためのサービス
※AWSドキュメントより
「CognitoSyncを初めて使用する場合は、AWSAppSyncを使用してください」と注意書きがあります。
Cognitoストリーム
-
Cognitoに保存されているデータに対する制御と洞察をデベロッパーに提供する。
-
SyncデータをKinesisに移動することができる。
-
分析のためにAmazonRedshiftなどのデータウェアハウスツールにストリーミングできる。
参考サイト
おわりに
今回はCognitoについて記載しました。
Cognitoについて詳しく調べる前は、ログインを簡易にしてくれるサービスくらいに考えていました。
詳しく調べていくうちに、外部IDプロバイダーと通常のログイン画面では別のコンポーネントを使用した設定になっていたり、様々な方法で活用できることがわかりました。
Cognitoをハンズオンで試しに使用することもできるサイトを添付しているので、ぜひ試してみてください。
以上、ご覧いただきありがとうございました。