AWSには認証機能を提供するサービスが数多くあります。代表的なサービスは、IAMやAWS SSO、Amazon Cognitoなどです。
この記事では、その中でもAWS SSOとAmazon Cognitoについて、サービス内容や特徴、ユースケースなどを解説します。
この記事を読むと、AWS SSOとAmazon Cognitoの概要を理解できるようになります。
認証機能のサービス導入を検討されている方は、ぜひ最後までお読みください。
AWS SSO(Single-Sign-On)とは
AWS SSOを理解するために、まずはSSOそのものについて触れます。
その後にAWS SSOの概要を解説します。
SSO(Single-Sign-On)とは
まずSSO(Single Sign-On)とは、1つのIDとパスワードで認証を行うと、その後は複数のアプリケーションやWebサイトにログインできるようにする認証機能のことです。
各種システムでそれぞれIDとパスワードを作成して運用することは、システムの数が多くなるほど覚えておくことやメモなど管理が煩雑になります。
SSOを利用することで、ユーザーは1セットのIDとパスワードで認証を行えるようになります。ユーザーのアカウント管理の負担軽減や、セキュリティ性の向上も見込めるのがSSOのメリットです。
AWS SSOについて
AWS SSOは、1つのアカウントで複数のAWSアカウントにログインできる機能です。
AWSアカウントは、開発環境と本番環境では異なるアカウントを使うことが推奨されています。またプロジェクトの数が多くなると、その分必要なAWSアカウントも増えていくので、アカウント管理の負担が大きくなることは珍しくありません。実際に開発者やアプリ運営者が複数のAWSアカウントを保持、管理しているケースは多いです。
AWS SSOを利用すると、連携するAWSアカウントにログインできるようになり、生産性が向上します。またAWS CloudTrailに操作記録が残るなどセキュリティ改善も見込まれます。
AWS SSOを利用する際は、前提としてAWS Organizationsというマルチアカウント管理機能を有効にしておく必要があります。
AWS SSOのユースケース
AWS SSOのユースケースを3つ解説します。
- ADアカウントでクラウドアプリケーションを利用する
- AWS Organizationのポータルサイトとして利用する
- 特定のページのアクセスフィルタとして利用する
順番に解説します。
ADアカウントでクラウドアプリケーションを利用する
AWS SSOを使うと、Microsoft Active Directory(AD)アカウントを使ってAWSにログインすることができるようになります。このように各種クラウドアプリケーションをポータル画面で一括管理が可能です。
AWS Organizationのポータルサイトとして利用する
AWS SSOには、クラウドアプリケーション以外にもAWSアカウントを配置することが可能です。そのため、AWS Organizationsに参加している各アカウントへログインするためのポータルサイトとして利用できます。
特定のページのアクセスフィルタとして利用する
AWS SSOは、サービスのアクセスを制限するフィルタとしての役割をもたせることができます。例えば、担当者専用ページを作り、その担当者のみがアクセスできるという仕組みが実現可能です。
Amazon Cognitoとは
ここからAmazon Cognito(コグニート)の解説に移ります。Amazon Cognitoは、Webアプリおよびモバイルアプリにおける認証、承認、およびユーザー管理機能を提供するサービスです。
ユーザー名とパスワードを使用して直接サインインする方法はもちろん、以下のアカウントを使ってサインインすることもできます。
- Facebookアカウント
- Amazonアカウント
- Googleアカウント
- Apple ID
具体的な内容は、このあとで詳しく解説していきます。
Amazon CognitoのユーザープールとIDプールとは
Amazon Cognitoを利用する上で、次の2点を理解しておく必要があります。
- ユーザープール
- IDプール
それぞれ解説していきます。
ユーザープールとは
ユーザープールは、アプリユーザーのサインアップとサインイン(認証)を提供するユーザーディレクトリです。Amazon Cognitoのユーザープールを利用すると、簡単にユーザー登録やログインといった認証機能をアプリに導入することができます。先ほども紹介したように、Facebook、Google、Appleなどの外部のIDプロバイダーと連携したログインの導入が可能です。
IDプール(アイデンティティープール)とは
IDプールは、AWSの他のサービスに対するアクセスをユーザーに許可(認可)できる機能です。IDプールを利用すると、ユーザーは一時的な AWS 認証情報を取得して、他のAWS サービスにアクセスできます。Facebook、Google、Appleなどの外部のIDプロバイダーのアカウントを利用してAWSへのアクセス権限を払い出すことができるようになります。
Cognitoの特徴
Amazon Cognitoの特徴を3つ紹介します。
- 簡単にユーザー認証機能が導入できる
- デバイス間同期が簡単に導入できる
- 無料利用枠が提供されている
順番に解説します。
簡単にユーザー認証機能が導入できる
Amazon Cognito を使用すると、アプリのユーザー認証機能(サインアップやサインイン機能)を追加しアクセスの管理ができます。Amazon Cognito は、数百万人のユーザーに拡張できるアイデンティティストアを提供し、ソーシャルおよびエンタープライズ ID フェデレーションをサポートし、コンシューマーとビジネスを保護するための高度なセキュリティ機能を提供します。オープンアイデンティティ標準に基づいて構築された Amazon Cognito は、さまざまなコンプライアンス規制をサポートし、フロントエンドおよびバックエンドの開発リソースと統合します。
フルマネージドで高パフォーマンス、信頼性の高い ID ストアを使用して、数百万人のユーザーに拡張できます。
Amazon Cognitoでは、アプリのユーザーIDを作成し、外部IDプロバイダーで認証・認可ができます。また認証されていないIDもサポートしており、ユーザーはログインしなくてもアプリを使えるようにもできます。その場合、あとからいずれかの外部IDプロバイダーでプロフィールを作成し、ユーザーのプロフィールデータをシームレスに転送することも可能です。
Amazon Cognitoを使用すれば、あらゆる種類のユーザーデータをキーと値のペアに保存できます。例えばアプリの設定やゲーム内のステータスなど、アプリに関わる全般的なデータが保存可能です。
デバイス間同期が簡単に導入できる
Amazon Cognitoを利用すると、ユーザーIDとデータの同期サービスで、アプリ用のユーザーデータを複数のデバイス間で、簡単に管理できるようになります。
ユーザーは複数のデバイスを持っている可能性があることを想定する必要があります。例えば通勤中はスマホやタブレットPC、デスクではノートPCを使う場合が多いです。
Amazon Cognitoを利用したユーザー認証機能では、ユーザーの登録情報がAWSクラウド上に保管され、デバイス間で同期することが可能になります。異なるデバイス間で同じアプリのデータを同期できると、ユーザーの満足度は格段に上がります。
しかし、このようなデータを同期させるバックエンド機能を自社で構築するのは、非常に大変です。Amazon Cognitoを利用すると、同期機能を自社でバックエンド開発を行わず、アプリの本質的な部分の開発に専念することができます。
無料利用枠が提供されている
ユーザープールは無料利用枠が提供されています。1ヶ月あたり5万回の同期が、最初の12ヶ月間は無料で利用可能です。またIDプールは無料で利用することができます。
ユーザープールの認証情報、またはソーシャルIdPで直接サインインするユーザーの場合、東京リージョンでの利用料金は以下のようになっています。
料金範囲(MAU:Monthly Active Users) | 1MAUあたりの料金(USD) |
〜 50,000 | 無料 |
50,001 〜 100,000 | 0.0055USD |
100,0001 〜 1,000,000 | 0.0046USD |
1,000,001 〜 10,000,000 | 0.00325USD |
10,000,001 〜 | 0.0025USD |
まとめ
今回は、AWSの認証機能を提供する主要なサービスとしてAWS SSOとAmazon Cognitoを紹介しました。
AWS SSOは、連携する複数のAWSアカウントにログインできる機能です。複数のAWSアカウントを管理して業務にあたるケースは珍しくなく、アカウント数が増えると管理の負担やセキュリティに不安が出てきます。AWS SSOを利用すると、このようなAWSアカウント管理やセキュリティの向上に貢献できるでしょう。
Amazon Cogtnitoは、アプリケーションに必要な認証・認可機能、ユーザー管理を導入できるサービスです。アプリにおけるユーザーデータのデバイス間での同期や、外部のIDプロバイダーでのユーザー認証が実現できます。どちらもユーザーの満足度を高める上で非常に重要な機能と言えます。
アプリのユーザー認証機能の導入を検討されている方は、ぜひ今回紹介した内容を参考にしてみてください。
先日対応したLPを生成できるWebアプリケーションを追加対応としてセキュリティを実装しました。 セキュリティシートを元にセキュリティ診断を行い、対応が不足している箇所を実装提案を行いシステムのセキュリティを強化しました。
ONETECHはベトナムオフショア開発でAWS構築と運用に力を入れています。