こんにちは。「クロジカサーバー管理」プリセールスの高瀬です。
今回はAmazon Cognito によるWebシステムの認証について解説します。
Amazon Cognito は アプリケーションにおけるユーザー管理機能を提供するAWSのサービスで、ユーザープールとIDプール(フェデレーティッド ID)の大きく二つの機能があります。
Webサーバー上のプログラムなど独自実装のシステムに対してユーザー認証を行う場合はユーザープール、ALBやS3などのAWSのサービスへのアクセスに対してユーザー認証を行う場合はIDプールを使います。
今回はPHPなどで実装するWebシステムでAmazon Cognitoを使うことを想定したユーザープール機能について解説します。
どんな機能があるか
Webシステムやモバイルアプリでよく使われるアカウント情報の追加、削除、パスワード認証といった基本的なアカウント管理機能が一通りAmazon CognitoのAPIで実現できるようになっています。
AWS Management Console 上でユーザーの一覧確認や追加削除も行うことができますので、ユーザーテーブルのデータベースを用意したり管理機能を作らなくてもユーザー認証機能を使うことができます。
また、パスワードの文字数や使用文字といったポリシーの設定やOAuth、2要素認証のようによく使われるセキュリティ対策や、SAML または Open ID Connect 経由でFacebook、Google、Amazon、Apple などの外部のソーシャル ID プロバイダーを通じたログイン機能も実装できるようになっています。
費用
AWS Cognitoの利用費用はアクティブユーザー数ベースになっており、2022年7月時点では0.0055USDで100,000ユーザーまで利用可能です。
SAML または Open ID Connect 経由でのログインを使ったり、2要所認証のためにSMSを送信する場合は別途費用が発生しますので、詳しくは料金ページをご確認ください。
https://aws.amazon.com/jp/cognito/pricing/
利用の流れ
まずはAWS Management Consoleからユーザープールを作成します。作成する際に各種の設定を画面で行うことができます。
・ログイン時にユーザー名をつかうのか、メールアドレスを使うのか
・パスワードポリシー
・多要素認証の利用有無
・メールなどでのアカウント復旧機能の有無
・ユーザーによるサインアップ機能の利用有無
・登録時のメールやSMSによる本人確認の有無
・認証情報以外にユーザーテーブルに保存する属性(氏名や生年月日など)
など
PHPなどのプログラムからAmazon CognitoにアクセスするためにはIAMユーザーを作成してアクセスキー、シークレットキーを生成します。
プログラム側でAmazon CognitoのAPIを呼び出すように実装します。AWSのマニュアルサイトにサンプルのコードがあります。
さいごに
CMSやフレームワークをベースにWebサイトを制作する場合は、基本的な認証機能はすでに実装されているため、Amazon Cognitoでゼロから認証機能を実装する、というケースは少ないかもしれません。
一方で2要素認証やSAMLといった機能を使うためにAmazon Cognitoと既存のユーザー管理機能を連携させる、といった使い方が想定されます。
WordPressの認証プラグインのminiOrangeでもAmazon Cognitoを利用した認証機能をサポートしています。
また、ユーザー情報を保存するデータベースを自社で構築したり、認証機能を自社で開発するよりもAWSの機能を使うことでセキュリティ対策のコストを下げるケースも想定できます。
一方で機能が多く、かなりの数の設定項目があるため、必要な機能を慎重に検討、選択する必要があるサービスだと感じました。
コーポレートサイトをクラウドでセキュアに
無料ではじめるサーバー管理
クロジカガイドブック
- コーポレートサイト構築・運用の課題を解決
- クロジカサーバー管理の主な機能
- 導入事例
- 導入までの流れ