Cloud Service
Identity Platform
アプリにユーザー認証(サインアップ・ログイン)を提供する Google Cloud のフルマネージド CIAM サービス。多数のプロバイダと多要素認証に対応し、AWS Cognito に相当。
- 1.自社アプリのエンドユーザー認証を肩代わりするマネージド CIAM。
- 2.メール・SNS・電話・SAML/OIDC・匿名など多様なプロバイダと MFA に対応。
- 3.発行された ID トークンで API を保護。AWS Cognito に相当し従量課金。
解決する課題
自社アプリやサービスのエンドユーザー認証を、自前で作らずに任せたいときに使います。Cloud IAM が「Google Cloud のリソースに誰がアクセスできるか」を制御するのに対し、Identity Platform は「あなたのアプリにログインするのは誰か」を扱う、いわゆる CIAM(顧客 ID とアクセス管理)です。
- パスワードのハッシュ保存・リセット・ブルートフォース対策などを自作するとバグと脆弱性の温床になる → マネージドな認証基盤に任せたい
- Google・Apple・Facebook ログインや、メール・電話番号(SMS)など多様なサインイン方法をまとめて提供したい
- ログイン後にバックエンド API を保護したい → **検証可能な ID トークン(JWT)**で認証状態を引き回したい
- 金融・行政系などで**多要素認証(MFA)**やリスクベースの保護を後付けで足したい
対応する AWS のサービスは Amazon Cognito(ユーザープール)です。Firebase Authentication と中身を共有しており、Identity Platform はそこにエンタープライズ向け機能(SAML/OIDC、MFA、マルチテナント、監査ログ等)と SLA を加えた上位版にあたります。
主要概念と用語
- ユーザー(エンドユーザー): アプリにサインインする一般利用者。Google Cloud にログインする管理者やサービスアカウントとは別物
- アイデンティティプロバイダ(IdP): 認証の出どころ。メール/パスワード、電話番号(SMS)、フェデレーション系(Google・Apple・Facebook・GitHub 等の OAuth)、企業向けの SAML / OIDC、ゲスト用の匿名認証など
- ID トークン: 認証成功時に発行される署名付き JWT。
uid・メール・プロバイダ情報などを含み、バックエンドはこれを検証してユーザーを識別する - リフレッシュトークン: 期限切れの ID トークンを再発行するための長期トークン
- カスタムクレーム: ID トークンに付与できる任意の属性。
roleやtenantなどを入れて**認可(権限)**に使う - 多要素認証(MFA): パスワードに加え SMS や TOTP など第二要素を要求する仕組み
- マルチテナンシー(テナント): 1 プロジェクト内にユーザー集合を論理分割する単位。SaaS で顧客企業ごとにユーザーを分離する用途
- ブロッキング関数(Blocking Functions): サインアップ/サインイン時に Cloud Functions を割り込ませ、登録の拒否やクレーム付与を行う拡張点
仕様・制限・クォータ
- グローバルサービスで、ユーザーディレクトリはプロジェクトに紐づく。料金・運用はリージョンに依存しないが、SMS など一部機能の挙動は地域要因を受ける
- ID トークンは短命(標準で 1 時間程度)。アプリは SDK 経由でリフレッシュトークンを使い自動更新するのが前提
- 無料枠と上限が用意され、**月間アクティブユーザー(MAU)**を基準に課金される。SMS(電話認証)など外部コストが伴う機能は別建て課金になりやすい
- フェデレーション系プロバイダ(Google・Apple 等)は各プロバイダ側の設定・審査・ポリシーに従う必要がある
- クォータや具体的な料金・トークン有効期限の数値は変動するため、本番設計時は公式ドキュメントで最新値を確認すること
Identity Platform と Firebase Authentication は基盤を共有します。クライアント SDK や API はほぼ共通で、SAML/OIDC・MFA・マルチテナント・監査ログ・SLA が必要なら Identity Platform、軽量な利用なら Firebase Auth、と捉えると整理しやすいです。
内部の仕組み
クライアント(Web・モバイル)が SDK でサインインを行うと、Identity Platform が IdP との認証フローを仲介し、成功すると署名付き ID トークン(JWT)とリフレッシュトークンを返します。
- クライアントが選んだプロバイダで認証(パスワード照合、OAuth リダイレクト、SMS コード検証など)
- 成功すると Identity Platform がユーザーレコードを作成・更新し、
uidを確定 - **ID トークン(JWT)**を発行。クライアントはこれを API 呼び出しの
Authorizationヘッダに載せる - バックエンドは Admin SDK 等でトークンの署名と有効期限を検証し、
uidやカスタムクレームから認可を判断 - トークンが切れたらリフレッシュトークンで再発行(再ログイン不要)
ID トークンが有効でも、それは「誰か」を保証するだけです。「何をしてよいか」はアプリ側でカスタムクレームやデータベース上のロールに基づいて判断する必要があります。トークンを信じきって認可を省略しないでください。
設計パターン / ベストプラクティス
- トークンはサーバ側で必ず検証する: クライアントから来た JWT は Admin SDK で署名・期限・発行者を検証してから信頼する
- 認可はカスタムクレームで: ロールやテナント ID をカスタムクレームに入れ、API 側はクレームを見て権限を判定する。クレーム付与は信頼できるサーバ側(または ブロッキング関数)で行う
- SaaS はマルチテナンシーを活用: 顧客企業ごとにテナントを分け、ユーザーや IdP 設定を分離する
- 企業顧客には SAML / OIDC: 取引先の既存 IdP(社内 SSO)とフェデレーションし、パスワードを自社で持たない
- 登録時の制御はブロッキング関数で: 許可ドメインのみ登録可にする、初期クレームを付ける、不正登録を弾く、といった処理を割り込ませる
- 最終的なリソース権限は Cloud IAM 側で: エンドユーザー認証は Identity Platform、Google Cloud リソースの権限は IAM、と役割を分ける
運用・監視
- Cloud Audit Logs と連携し、ユーザー作成・削除・設定変更などの管理操作を監査できる
- コンソールのユーザー管理画面でユーザーの一覧・無効化・削除、サインイン方法やテンプレート(確認メール等)の設定を行う
- **使用量(MAU)**を監視し、急増(攻撃や bot 登録)やコスト増を早期に検知する
- SMS 送信は到達性・コストの観点で監視対象。電話認証は乱用(課金狙いの大量送信)に注意する
- ユーザーデータのエクスポート / インポート機能で、移行やバックアップ、他環境への複製を行う
コスト
課金は主に**月間アクティブユーザー(MAU)**ベースで、認証したユーザー数に応じた従量制です。無料枠を超えた分が課金対象となり、料金体系はプロバイダ種別(標準の認証か、フェデレーション/エンタープライズ機能か)で異なる場合があります。
| 項目 | 課金の考え方 | 備考 |
|---|---|---|
| 基本の認証(MAU) | 月間アクティブユーザー従量 | 無料枠あり、超過分のみ課金 |
| SAML/OIDC・MFA など | 上位区分として課金されることがある | エンタープライズ向け機能 |
| 電話認証(SMS) | 送信コストが別途発生 | 地域差・乱用対策に注意 |
無料枠の人数や単価は変動します。設計時は公式の料金ページで最新値を確認し、MAU 見積もりと SMS コストを合わせて試算してください。
セキュリティ
- **多要素認証(MFA)**を有効化し、特に重要操作の前に第二要素を要求する
- メール確認を必須化し、未確認アドレスでの重要操作を制限する
- 乱用対策: 電話認証の悪用(課金狙いの大量 SMS)や bot による大量サインアップに備え、レート制限や reCAPTCHA、ブロッキング関数での検証を組み合わせる
- トークンの取り扱い: ID トークンとリフレッシュトークンを安全に保管し、ログアウト時や侵害時はトークンを失効させる
- 最小権限: カスタムクレームに過剰な権限を埋め込まず、認可の最終判断はサーバ側のロジックで行う
クライアントから渡された ID トークンを検証せずに信頼したり、認可判断をフロントエンドだけで完結させるのは危険です。JWT はサーバで必ず検証し、権限チェックは必ずバックエンドで行ってください。
Well-Architected の観点
- セキュリティ: 認証の難所(パスワード保管・MFA・トークン署名と検証)をマネージドに委ね、攻撃面を減らせる。フェデレーションで自社にパスワードを持たない構成も取れる
- 運用: ユーザー管理・監査ログ・テンプレート管理がコンソールと API で完結し、運用負荷が低い
- 信頼性: フルマネージドで SLA が提供され、スケールはプラットフォーム側が吸収する
- コスト: MAU 従量で初期費用が小さく、利用量に比例。ただし SMS など外部コストは別管理が必要
試験で問われるポイント
- エンドユーザー認証は Identity Platform、Google Cloud リソースの権限は Cloud IAM という役割分担を区別する(混同を狙う設問が出やすい)
- AWS Cognito(ユーザープール)に相当する CIAM サービスである
- Firebase Authentication の上位版で、SAML/OIDC・MFA・マルチテナント・監査ログ・SLA が加わる点
- 認証成功で発行される ID トークン(JWT)はサーバ側で検証して使う。認可はカスタムクレームやアプリ側ロジックで行う
- 企業顧客の社内 SSO 連携には SAML / OIDC を使う
- SaaS で顧客ごとにユーザーを分離するなら マルチテナンシー(テナント)
関連サービス・比較
| 観点 | Identity Platform(GCP) | Amazon Cognito(AWS) |
|---|---|---|
| 位置づけ | アプリのエンドユーザー認証(CIAM) | ユーザープールによるエンドユーザー認証 |
| 発行されるもの | ID トークン(JWT)とリフレッシュトークン | ID/アクセス/リフレッシュトークン(JWT) |
| 対応プロバイダ | メール・電話・SNS・SAML/OIDC・匿名 | メール・電話・SNS・SAML/OIDC など |
| 多要素認証 | SMS・TOTP などに対応 | SMS・TOTP などに対応 |
| テナント分離 | マルチテナンシー対応 | ユーザープール分割やテナント設計 |
| クラウド権限制御 | 別サービスの Cloud IAM が担当 | 別サービスの AWS IAM が担当 |
名前は似ていますが、Cloud IAM はクラウドリソースへのアクセス制御、Identity Platform はアプリ利用者の認証で対象がまったく異なります。両者を併用し、エンドユーザーの認証と、バックエンドが使うサービスアカウントの権限とを分けて設計します。
ハンズオン / CLI例
# プロジェクトで Identity Platform API を有効化
gcloud services enable identitytoolkit.googleapis.com --project=my-project
# メール/パスワード認証を設定するための既定テナント構成を確認
gcloud identity-platform config get --project=my-project
# マルチテナンシー用のテナントを作成(SaaS で顧客ごとに分離する例)
gcloud identity-platform tenants create \
--display-name="customer-acme" \
--project=my-project
# 作成済みテナントの一覧を確認
gcloud identity-platform tenants list --project=my-project
Google Cloud Service
Identity Platformを実務で読む
TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。
解決すること
セキュリティ・ID
比較で見る軸
クラウド: Google Cloud / カテゴリ: セキュリティ・ID / 難易度: intermediate
導入後に効く点
メール・SNS・電話・SAML/OIDC・匿名など多様なプロバイダと MFA に対応。
先に潰すリスク
サービス単体ではなく、権限、ネットワーク、監視、課金、バックアップを含めて設計する必要がある。
- クラウド
- Google Cloud
- カテゴリ
- セキュリティ・ID
- 難易度
- intermediate
- 関連資格
- —
- 設計柱
- security
判断チェックリスト
- 自社の用途が「セキュリティ・ID / security」に近いか確認する。
- 強みである「自社アプリのエンドユーザー認証を肩代わりするマネージド CIAM。」が本当に評価軸になるか確認する。
- 注意点の「サービス単体ではなく、権限、ネットワーク、監視、課金、バックアップを含めて設計する必要がある。」を運用で吸収できるか確認する。
- 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
- 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
- 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。