Contents
ユーザープール作成の基本的な手順
ユーザープールを作成する際は、AWS管理コンソールの「Cognito」サービスから操作します。以下にステップバイステップで解説します。
基本設定項目の確認と入力
ユーザー登録や認証フローの基盤となる設定を以下のように構築します。
- プール名とデフォルト認証を入力
- プール名は「MyUserPool」といった識別可能な名称を設定
-
「パスワードポリシー」は初期値でも最低限の強度が確保されているが、セキュリティ要件に応じて後述するセクションでカスタマイズ可能
-
アプリクライアントの作成タイミング
-
ユーザープールを作成した後、「アプリクライアント」を別途作成する必要がある点に注意。API Gatewayやアプリケーションとの連携時に必須です。
-
初期管理者ユーザーの作成
- 「管理ユーザーを追加」からメールとパスワードを入力し、プール管理者として登録します。このユーザーは後で権限管理に活用されます。
メール/電話番号検証の有効化
ユーザー登録時の本物性確認のために以下のオプション設定を行います。
- 「メールアドレス検証」や「携帯電話認証」を有効化することで、ユーザー登録時の一時パスワード発行が可能になります。
- 例: メール送信先は「[メールアドレス削除]」とし、認証コードを発行する仕組みを構築できます。
セキュリティ初期値の確認と修正
初期設定ではセキュリティ設定が最低限に抑えられているため、実務で必ず見直す必要があります。
| 項目 | 初期状態 | 推奨設定 |
|---|---|---|
| パスワードポリシー | 無効化 | 最小文字数8桁以上、大文字・小文字・記号必須 |
| MFAの有効化 | オプション | 必須(企業環境の場合) |
| メール検証 | 未設定 | 有効化(ユーザー本物性確認) |
注意: 初期状態ではパスワードポリシーの強制が無効になっているため、実務では必ず「最小文字数」「大文字小文字必須」など、企業のセキュリティ基準に合わせて設定してください。
ユーザー属性のカスタマイズと管理方法
ユーザープールで管理するユーザー情報をカスタマイズすることで、アプリケーション固有のニーズに対応できます。
標準属性の編集
AWS Cognitoには、名前・メールアドレス・電話番号など標準的な属性が用意されています。これらはプール作成時に自動で定義されますが、以下のようなケースでは調整が必要です。
- 例: 「誕生日」を必須項目に設定する場合、「BirthDate」をカスタム属性として追加
カスタム属性の追加手順
- ユーザープール画面で「属性の管理」を選択
- 「カスタム属性」タブから、「名前」「種類」「説明」を入力して追加
-
例: 「会社名」は文字列型、識別子は
custom:companyと指定 -
必須項目の設定を行うことで、ユーザー登録時にこの属性の入力を強制できます。
デフォルト値・必須項目の設定
- 業務フローによっては「部署名」を必須とするケースがあります。これにより、後段のアプリケーションロジックで分岐処理が可能になります。
IDプロバイダーとの連携設定
外部認証サービス(Googleアカウントや企業のSAML)と接続することで、ワンクリックログインを実現できます。
フェデレートアイデンティティの有効化
- 「フェデレーテッドアイデンティティ」画面から、連携したいプロバイダー(Google/Facebook/SAML)を選択
- 各プロバイダー側でアプリケーションを登録し、クライアントIDとシークレットを取得
SAML/Google/Facebook連携手順
| プロトコル | 概要 | 用途 |
|---|---|---|
| SAML | 企業内Active DirectoryやオンプレミスのIdPと連携 | 大規模な組織向けに最適 |
| OAuth 2.0(Google/Facebook) | Webアプリケーションやモバイルアプリとの連携が簡単 | ユーザー体験向上に貢献 |
注意: SAMLは複雑な構成が必要ですが、企業の統合ID管理の要件に応じて導入推奨です。
OAuth 2.0のスコープ設定
- スコープは「email」「profile」など限定的に指定する必要があります。無駄な権限付与を避けるために、必要な最小範囲だけを選択してください。
AWS CLIによるユーザープール操作
CLIを使用することで、CI/CDパイプラインやスクリプト化された自動テスト環境でユーザープール管理が可能になります。
create-user-poolコマンドの基本構文
|
1 2 3 4 5 |
aws cognito-idp create-user-pool \ --pool-name "MyUserPool" \ --auto-verified-attributes email \ --email-configuration From="[メールアドレス削除]" |
ユーザー登録・削除コマンド実例
- ユーザー登録
|
1 2 3 4 5 |
aws cognito-idp admin-create-user \ --user-pool-id "us-east-1_XXXXX" \ --username "[メールアドレス削除]" \ --temporary-password "Password123!" |
- ユーザー削除
|
1 2 3 4 |
aws cognito-idp delete-user \ --user-pool-id "us-east-1_XXXXX" \ --username "[メールアドレス削除]" |
スクリプト化時の注意点
- CLIコマンドにはセキュリティトークンが必要なため、AWS credentials(AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY)を環境変数で設定してください。
- セキュリティ上、テスト用のプールを専用に用意し、本番環境ではカスタマイズされたスクリプトを使用するのがベストプラクティスです。
パスワードポリシーとセキュリティ強化
Cognitoユーザープールはデフォルトでセキュアですが、企業の要件に応じて更なる強化策が求められます。
推奨されるパスワードポリシー設定
- 最低文字数: 8文字以上を推奨(例:
Password1!) - 大文字・小文字・記号の混在が必要なら、設定で「必須」に変更
| オプション | 初期値 | 推奨 |
|---|---|---|
| 大文字必須 | なし | 有効 |
| 小文字必須 | なし | 有効 |
| 記号必須 | なし | 有効 |
MFAの導入手順
- ユーザープール画面の「MFAの設定」を選択
- 「メール認証」または「SMS認証」を有効化し、利用可能なデバイスをユーザーが選択可能にする設定にします。
注意: MFAはオプションとして提供されるため、企業によっては強制的に有効化するケースもあります。
アクセスログの監査設定
CognitoはCloudWatch Logsと連携することで、認証操作やエラーをリアルタイムで監視可能です。
CloudWatchとの連携方法
- ロググループを用意し、「Cognito」サービスから出力されたログを収集
- 例: ユーザーが「パスワードリセット」を試行した際のログを確認できます。
まとめ
本記事では、Amazon Cognitoユーザープールの設定手順と実務でのポイントを以下に整理しました。
- AWSコンソールでプールを作成し、アプリクライアントや管理者ユーザーを設定
- ユーザー属性はカスタム属性や必須項目の指定で柔軟性を確保
- 外部プロバイダー連携を活用したOAuth 2.0やSAMLによる認証フロー構築
- CLIコマンドを使用してスクリプト化し、CI/CD連携に活かす
- パスワードポリシー・MFAなど、セキュリティ設定を最適化
記事を参考に、実際にユーザープールを作成してみましょう。実際の操作を通して理解が深まるでしょう。