Cognito

Amazon Cognito ユーザープールの設定方法と手順

ⓘ本ページはプロモーションが含まれています

スポンサードリンク

Amazon Cognito ユーザープールの概要と目的

Amazon Cognito ユーザープールは、アプリケーションユーザーの認証・認可を管理するクラウドベースのサービスです。サインアップ、サインイン、多要素認証(MFA)などの機能を提供し、ユーザー情報の管理やセキュリティポリシーの設定が可能です。また、AWSの他のサービス(API Gateway、Lambdaなど)と連携することで、アプリケーション全体の認証フローを効率的に構築できます。
この記事では、「Amazon Cognito ユーザープール 設定 方法」を中心に、実務で即活用できる手順を具体的に解説します。AWS管理コンソールとCLIによる設定方法の両方を取り上げ、ユーザー登録フローのテストまで網羅します。


AWS管理コンソールでのユーザープール作成手順

AWS管理コンソールでユーザープールを作成するには、以下の3つのステップを実施します。設定ミスを避けるために、ドメイン名やメールテンプレートの選択に注意が必要です。

アカウント設定

  1. AWS管理コンソールから「Cognito」サービスを開きます。
  2. 左サイドバーから「ユーザープール」を選択し、「作成」をクリックします。
  3. ドメイン名(例: example.auth.ap-northeast-1.amazoncognito.com)を入力し、リージョンの選択に注意してください。

重要ポイント: ドメイン名は一意である必要があります。既存のドメインと重複するとエラーになります。


基本属性の指定

  1. ユーザープールの「名前」を入力し、「作成」をクリックします。
  2. 次の画面で、メールまたは電話番号でのサインアップを許可するか設定します。
設定項目 説明 必須フラグ
ユーザー登録の制限 新規ユーザー作成を許可するかどうか
メール送信テンプレート 確認メールやパスワードリセット用のメッセージ設定 △(初期値で使用可能)

注意: 初期設定ではデフォルトテンプレートが使われますが、ビジネス用途ではカスタムメッセージに変更することを推奨します。


初期設定確認

作成後、以下をチェックします:

  • ユーザープールの「概要」ページで、リージョンとドメイン名が正しく表示されているか
  • 「アプリケーションクライアント」セクションから、クラウドクライアントまたはWebクライアントの作成を実施する

確認手順例:

  1. ユーザープールを選択し、「アプリケーションクライアント」タブを開く
  2. 「作成」ボタンから、アプリケーション向けに使用するクライアントを生成する

AWS CLIによるユーザープールの作成と検証

AWS CLIを使用してユーザープールを作成するには、create-user-poolコマンドを使います。この方法はスクリプト化や自動化に適していますが、パラメータの指定ミスに注意が必要です。

CLIコマンドの基本構文

指摘事項: --email-verification-messageはメールテンプレート設定と連携しており、単体で利用可能ではありません。メール送信テンプレートが有効化されていない場合、このパラメータは無視されます。


パラメータ指定の詳細

パラメータ 説明 必須か
--pool-name ユーザープール名(例: SampleUserPool)
--auto-verified-attributes 自動検証する属性(emailやphoneなど)
--email-verification-message 確認メールの内容をカスタマイズ ×

注意: CLIではJSONファイルでパラメータを指定することも可能です。複雑な設定が必要な場合は、--cli-input-jsonオプションを活用しましょう。


作成後の確認手順

  1. describe-user-poolコマンドで、作成されたユーザープールのIDとステータスを確認します:
    bash
    aws cognito-idp describe-user-pool --user-pool-id <USER_POOL_ID>

  2. ユーザー登録テスト: admin-create-userコマンドで仮ユーザーを作成し、メール送信の動作を検証します。


ユーザー属性のカスタマイズ方法

ユーザープールでは、標準属性カスタム属性の両方を管理できます。カスタム属性はcustom_プレフィックスで定義し、アプリケーション独自の情報を保存するのに適しています。

標準属性の編集

  • ユーザープールの「ユーザー属性」タブから、標準属性(メール、名前など)を編集可能です。
  • 一部の属性は必須に設定でき、ユーザーレコードの作成条件として活用できます。

カスタム属性の追加

  1. 「ユーザー属性」タブで「カスタム属性の追加」を選択します。
  2. 属性名(例: custom_occupation)とタイプ(文字列、数値など)を入力します。
カスタム属性 説明 使用例
custom_birthdate 生年月日 ユーザー向けのパーソナライズに活用可能
custom_company 所属会社名 業務アプリケーション向けに情報を収集

ヒント: カスタム属性は、API GatewayやLambda経由で取得することが可能です。


属性マッピング設定

カスタム属性を他のAWSサービス(例: DynamoDB)と連携するには、「アトリビュートマッピング」の設定が必要です。

  • マッピングテンプレートを作成し、カスタム属性がどのテーブルに保存されるか指定します。

以下はDynamoDBと連携する際のJSONテンプレート例:

指摘事項: 本例ではカスタム属性custom_occupationがDynamoDBにマッピングされる仕組みを示しています。


セキュリティポリシーのベストプラクティス

ユーザープールのセキュリティを強化するには、以下の3つのポイントに注力することが重要です。

パスワードポリシーの強化

  • AWS推奨:最小8文字、大文字・小文字・数字・特殊記号の使用を義務付けます。
  • 例: PasswordPolicy={MinimumLength=8,RequireLowercase=true,RequireNumbers=true}
ポリシータイプ 推奨設定 理由
最小文字数 8文字以上 多様なパスワードの導入を促進
特殊記号必須 ✅有効 セキュリティリスクの軽減

アカウントロックアウト設定

  • 該当アカウントが不正アクセスを検出された場合、自動的にロックされます。
  • ロック解除には、管理者による手動操作またはメール送信が必要です。
設定
不正ログイン回数 5回以下でロック(推奨)

監査ログの有効化

  • AWS CloudTrailと連携させることで、ユーザープール内での全操作履歴を監査可能です。
  • イベントタイプは「Sign-in」「Password change」など多岐にわたります。

指摘事項: CognitoのイベントログをCloudTrailで利用するには、以下の手順が必要です:

  1. AWS Management Console > CloudTrail > トレールを作成
  2. イベントソースとして「Cognito Identity Provider」を選択
  3. トレールの有効化とS3バケット設定を完了

アクション: Cognitoの「イベントログ」セクションから、CloudTrailとの連携設定を確認してください。


フェデレーティッドログインの構成方法

外部IDプロバイダー(例: GoogleやFacebook)と連携させることで、フェデレーティッドサインインが実現可能です。

SAMLプロバイダーとの連携

  1. Cognitoの「フェデレーション」セクションから、「SAMLプロバイダー」を追加します。
  2. IDP側(例: Active Directory)で信頼関係を設定し、ロールアサーションを取得します。

指摘事項: SAMLプロバイダーでのロールアサーションの説明はAWS仕様と整合性がありますか?

  • AWSでは「ロールアサーション」はSAMLレスポンス内に含まれるRole要素で、IAMロールを指定します。
  • IDPが発行するSAML応答には、Assertion/AttributeStatement/Attributeにロール名をマッピングして含める必要があります。
機能 必須か
認証フローの指定
IAMロールの定義 〇(外部IDPにアクセス権を付与)

OAuth 2.0設定手順

OAuth 2.0を使用するには、以下のステップが必要です:

  1. 「アプリケーションクライアント」セクションで「OAuth設定」を開く。
  2. プロトコルタイプ(Authorization Codeなど)を選択し、「認証フロー」を許可します。

注意: OAuthの使用には、リダイレクトURIの事前登録が必要です。


IDトークンの検証フロー

  • ユーザーが外部IDプロバイダーで認証後に取得するIDトークンを、Cognitoと照合して有効性を確認します。
  • トークンはJSON Web Token(JWT)形式であり、サインイン時と比較される必要があります。
チェック項目 内容
鍵の検証 Cognitoが発行した公開鍵で署名を確認する
有効期限 5分以内に発行されたものを許可

まとめ

本記事では、Amazon Cognito ユーザープールの初期設定手順とセキュリティ対策について解説しました。重要なポイントを以下に整理します:

  • ユーザープールは、サインアップ、MFA、外部IDプロバイダーとの連携が可能
  • CLIやコンソールでの設定方法の違いを理解し、使い分けを実施
  • カスタム属性やセキュリティポリシーの設定で、アプリケーションに合わせた柔軟性を得る
  • フェデレーティッドサインインは、企業向けまたは外部ユーザーへのアクセス制御に効果的

「Amazon Cognito ユーザープール 設定 方法」についての理解が深まり、実務での導入がスムーズになることを願っています。AWS CLIやコンソールを使って、実際にユーザー登録フローをテストしてみましょう!

スポンサードリンク

-Cognito