Amazon Cognitoの簡単な使い方
はじめに
AWSのサービスの一つであるAmazon Cognitoの特徴や機能について、基盤となる部分ならびに必ず操作が必要な設定を解説します。読み方は”アマゾン コグニート”と読み、”匿名の”という意味でincognito(インコグニート)の反対の意味を持たせた造語であると言われています。その意味は”個人を認識する”といった認識で良いのではないでしょうか。
本記事はシンプルでセキュアな機能が学べます。ぜひ最後までご一読いただき、アプリケーションの安全性を容易に高めるための手助けとなれば幸いです。
Amazon Cognitoとは?
Webアプリケーションやモバイルアプリケーションの認証と許可、ユーザーの管理をサポートしています。ユーザーはユーザー名とパスワードを使ったログインか、よく使われている例だとFacebookやGoogle、Appleなどのサードパーティーを通してログインが可能です。
Amazon Cognitoの主となるコンポーネントは2つで、ユーザープールと IDプールです。ユーザープールはアカウント登録とログインの認証情報をアプリ内部のユーザーディレクトリの領域に保存して、その情報を使用して認証を行う機能です。IDプールはAWSにおける他サービスに対してアクセスする権限をユーザーに許可します。各コンポーネントは別で使ったり一緒に使ったりすることが可能です。
Amazon Cognitoはローカルのデータストアとクラウドのデータストアの同期機能を備えています。オフラインでも動作可能なクラウド対応のモバイルアプリケーションを構築可能です。また、データの同期は同一ユーザーであれば複数のデバイスにもされるので、スマートフォンでやっていたゲームの続きを自宅のタブレットでも楽しむといったことも可能になります。
各コンポーネントの詳細
ユーザープール
アプリユーザーはAmazon Cognito からWebやスマホアプリにログインするかサードパーティーのIDプロバイダー(IdP)を通して連携が可能です。ユーザーがログインするかにかかわらず、ユーザープールの全メンバーにソフトウェア開発キットを通じてアクセス可能なディレクトリプロファイルがあります。
IDプール
ユーザーは一時的なAWS認証情報を取得し、AmazonS3やDynamoDBなどのAWSサービスにアクセスが可能です。匿名ゲストユーザーとIDプールのユーザーを認証するのに利用できる次のIDプロバイダーをサポートします。
- Amazon Cognito ユーザープール
- FacebookやGoogle等のソーシャルログイン
- OpenID Connect (OIDC) プロバイダ
- SAML ID プロバイダー
- 開発者が認証した ID
Amazon Cognitoでできること
ユーザープールは数億人といったユーザー規模で安全なユーザーディレクトリを作ることができ、フルマネージドサービスではサーバーインフラストラクチャを気にすることなく容易にセットアップ可能です。直接アカウント登録するユーザーやソーシャルIDプロバイダーおよびエンタープライズIDプロバイダーを利用してログインするフェデレーティッドユーザーにユーザープロファイルと認証トークンを提供します。
またAmazon Cognitoにはユーザーのアカウント登録とログインのためのカスタマイズができる組み込みUIが用意されています。Android、iOS、JavaScript SDKを使用してユーザーのアカウント登録ならびにログインページをアプリケーションに追加することができ、高度なセキュリティ機能を使うとアプリケーション内部のユーザーアカウントへのアクセス保護が可能となります。アドバンスドセキュリティ機能はリスクにもとづいたアダプティブ認証および不正の対象となった認証情報に対し、保護を提供します。数回のクリックでユーザープールの高度なセキュリティ機能を有効にすることができるのです。
各コンポーネントの作成方法、使い方
ユーザープールの作成
- 初めにユーザープールを作ります。AWSコンソールにログイン、続いてサービスより”Cognito”を検索します。その後、”ユーザープールの管理”を押下します。
- 続いて、”ユーザープールを作成する”を押下し、作成画面が表示されたら任意のプール名を入力、その後で”デフォルトを確認する”を押下します。
- サイドメニューより”属性”を表示し、ユーザープロファイルで管理対処の属性を選びます。エンドユーザーのログイン方法は初期状態では”ユーザー名”が選択されているので、他の属性もお好みでカスタマイズ可能です。ユーザープールの作成後に新たに属性を追加することはできないので、この時点で仕様を決めておきましょう。
- 追加したい属性が選択できたら”次のステップ”を押下します。続いて、ポリシーの設定です。パスワードの強度等の設定をできたら、”変更の保存”を押下します。
- サイドメニューより”アプリクライアント”を表示し、”アプリクライアントの追加”リンクを押下します。それぞれ必要項目を記入し、”アプリクライアントの作成”を押下します。このとき、”クライアントシークレットを生成”のチェックを外すことに気を付けてください。JavaScriptからAmazon Cognitoを使った認証をする際にうまくいかなくなります。
- 次に、サイドメニューから”確認”を表示し、”プールの作成”を押下します。プールが正常に作られたらプールIDが発行されるので記録してください。また、アプリクライアントIDも発行されるため記録しておきましょう。アプリクライアントIDは、サイドメニューの”アプリクライアント”を表示すると確認できます。
以上でユーザープールの作成完となります。
IDプールの作成
- 画面上に表示されている”フェデレーティッドアイデンティティ”を押下し、表示された”新しいIDプールの作成”を押下します。
- IDプールの作成画面にて必要項目を記入します。
- “プールの作成”を押下し、表示された画面の”詳細を表示”を押下すると、ロールの情報を確認できます。設定は初期状態のままで結構です。”許可”を押下してください。
- “IDプールのID”(IdentityPoolId)を確認することができるのでこちらを記録しておいてください。
以上でIDプール作成完了です。
学習方法
最後に、AWSの学習方法についてご紹介です。書籍などを購入して独学で学習するのもいいですが、WebinarやAWSパートナー企業主催のセミナーならびにIT勉強会(「Connpass」等の勉強会サイト)があります。無料でも学習はできるため、オススメは「Connpass」で開催しているオンライン勉強会であればハードルが低いのではないでしょうか。
こういったいろいろな学習の機会を活用して、AWSのスペシャリストを目指してみてください。
まとめ
AWSの認証・認可のシステムはこのほかにIdentity and Access Management (IAM)やDirectory Service、AWS Single Sign-On (SSO)等もございますが、今回はAmazon Cognitoの基礎とプールの作成方法を紹介させていただきました。手順も多くはなく、比較的簡単な印象だったのではないでしょうか。より高度なセキュリティの導入でなければ無料での利用もできるため、実際に使ってみてください。
本記事を作業時に活用してくだされば幸いです。最後まで閲覧ありがとうございました。