Contents
Authy の機能とエンタープライズプラン
| 機能 | 主な利用シーン | メリット | 注意点 |
|---|---|---|---|
| TOTP (6 桁コード) | オフラインでも使用可能な社内システム | 標準化された方式でほぼ全サービスに対応 | 手入力が必要になるため UI/UX がやや劣る |
| プッシュ認証(OneTouch) | スマートフォン常時オンライン環境 | ワンクリック承認で高速、SMS/音声料金不要 | ネットワーク不通時はフォールバックが必要 |
| SMS / 音声コード | 携帯電話しか持たないユーザー向け | 端末に依存しない簡易 MFA | コストが発生しやすく、フィッシングリスクあり |
| バイオメトリクス(指紋・顔) (Authy アプリ内) | モバイル中心の従業員 | デバイスロックと同時に認証可能 | 生体情報は端末内部で保護されるが、プライバシー方針策定が必須 |
| API 経由のカスタム MFA | 独自アプリ・SaaS 連携 | 認証フローを自由に設計可能 | 開発コストとセキュリティレビューが必要 |
注記
Authy はハードウェアトークン(例:YubiKey)を提供しません。物理的な二要素デバイスが必要な場合は、別途 FIDO2 認証器や OTP ハードウェアトークンの導入をご検討ください。
エンタープライズプランの実際
| プラン | 料金体系(2026 年 4 月時点) | 主な対象 |
|---|---|---|
| Authy Enterprise (MAU ベース) | $0.10 / アクティブユーザー/月(最小 100 ユーザー) | 大規模組織・多要素を全社的に適用したい企業 |
| Add‑on: カスタム API | $0.05 / 認証リクエスト | 高頻度の認証が必要な SaaS 連携や自社アプリ |
| サポートオプション | 年間契約で $5,000〜(24/7) | ミッションクリティカル環境向け |
料金は Twilio の公式価格表(https://www.twilio.com/authy/pricing)を参照。実際の見積もりはユーザー数、利用頻度、サポートレベルに応じて変動します。
ゼロトラスト時代に求められる MFA 要件と公的ガイドライン
1. NIST SP 800‑63B(デジタル認証)
最新版は 2024 年リビジョン。
| 項目 | 推奨内容 |
|---|---|
| 認証レベル | L2(多要素)以上を必須とし、リスクベースで L3(ハードウェアトークン・FIDO2)へ昇格 |
| リスク評価 | IP アドレス、デバイスヘルス、ユーザー行動のリアルタイム分析を組み込むこと |
| バックアップ手段 | 暗号化されたコードやハードウェアトークンは 90 日ごとにローテーション |
NIST のガイドラインは米国政府だけでなく、世界的なベストプラクティスとして広く参照されています。
(公式ドキュメント:https://csrc.nist.gov/publications/detail/sp/800-63b/final)
2. Microsoft Zero Trust Security(2025 年版)
Microsoft が公開した Zero Trust Deployment Guide(2025 年)は、以下の 3 本柱を掲げています。
- 常に検証 – 全アクセスで MFA を適用し、リスクスコアが閾値を超えた場合は追加要素を要求。
- 最小権限 – アプリケーションごとに必要最低限の認可レベルを設定。
- 継続的監視 – SIEM と連携し、異常検知時に自動でポリシー変更。
Microsoft の公式 PDF(https://learn.microsoft.com/azure/architecture/framework/security/zero-trust)を参照してください。
3. Okta MFA ベストプラクティス(2024 年版)
Okta が提供する MFA Deployment Guide(2024 年)は、実装例として次のようなポリシーを推奨しています。
| アクセス元 | 推奨 MFA |
|---|---|
| 社内 LAN → VPN | TOTP またはプッシュ認証 |
| 公衆 Wi‑Fi / モバイルネットワーク | プッシュ + リスクベース評価(異常 IP の場合はハードウェアトークン) |
| 高リスクアプリ(金融、機密データ) | FIDO2 デバイスまたはプッシュ+生体認証の二段階 |
Okta のガイドは公開 URL(https://www.okta.com/resources/whitepaper/mfa-deployment-guide/)で入手可能です。
主要 IdP(Okta・Azure AD など)との統合パターン
重要
Authy は SAML Identity Provider(IdP)ではなく、MFA の 認証サーバー として API/SDK を通じて利用します。そのため「Authy が SAML SP として動作する」という記述は誤りです。以下では正しい統合方式をご紹介します。
1. OpenID Connect (OIDC) + Authy の MFA API
| 手順 | 内容 |
|---|---|
| ① アプリ登録 | IdP(Okta、Azure AD)側で OIDC クライアントを作成し、リダイレクト URL を設定。 |
| ② 認証フローに MFA チャレンジを組み込む | ユーザーが ID トークン取得後、バックエンドで Authy の Verify Token API(/protected/json/verify/{authy_id})を呼び出し、MFA が成功したか判定。 |
| ③ MFA ステータスのクレーム付与 | 成功時に authy_mfa_verified: true をカスタムクレームとして ID トークンに追加(Okta の Authorization Server でマッピング)。 |
実装サンプル(Node.js)
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
// Express + Passport の例 app.post('/login/callback', async (req, res) => { const { id_token } = req.body; // OIDC 発行トークン const userInfo = jwt.decode(id_token); // Authy にチャレンジ(プッシュ)を要求 const challenge = await axios.post( `https://api.authy.com/protected/json/onetouch/${userInfo.authy_id}`, { message: 'ログイン承認' }, { headers: { 'X-Authy-API-Key': process.env.AUTHY_API_KEY } } ); // クライアント側でプッシュ承認結果を待ち、成功ならカスタムクレーム付与 if (challenge.data.success) { const customToken = jwt.sign( { ...userInfo, authy_mfa_verified: true }, process.env.JWT_SECRET, { expiresIn: '1h' } ); res.json({ token: customToken }); } else { res.status(401).send('MFA 認証失敗'); } }); |
2. SCIM(ユーザー自動プロビジョニング)
| 項目 | 内容 |
|---|---|
| 対象 | ユーザー属性、デバイス情報、グループ |
| エンドポイント | https://api.authy.com/scim/v2/ (Authy コンソールで有効化) |
| 認証方式 | Bearer Token(API キー) |
| 同期タイミング | 5 分ごとのポーリング、または IdP の Webhook によるプッシュ |
PowerShell 例(Azure AD → Authy)
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
$scimUrl = "https://api.authy.com/scim/v2" $token = $env:AUTHY_SCIM_TOKEN # Azure AD 全ユーザー取得 $users = Get-AzureADUser -All:$true foreach ($u in $users) { $payload = @{ userName = $u.UserPrincipalName name = @{ givenName=$u.GivenName; familyName=$u.Surname } emails = @(@{ value=$u.Mail; primary=$true }) active = $true } | ConvertTo-Json -Depth 3 try { Invoke-RestMethod -Method Post ` -Uri "$scimUrl/Users" ` -Headers @{ Authorization="Bearer $token"; "Content-Type"="application/json" } ` -Body $payload } catch { Write-Warning "[$($u.UserPrincipalName)] SCIM エラー: $_" } } |
ポイント
- 409(Conflict)や 422(Unprocessable Entity)が返った場合は、ユーザーが既に存在するか属性不備です。スクリプトでPATCHに切り替えるロジックを追加すると運用が楽になります。
3. SAML + Authy の実装イメージ
| 項目 | 内容 |
|---|---|
| 役割 | IdP(Okta、Azure AD) → SAML アサーション → アプリ側で MFA 要求をトリガー |
| Authy の関わり | SAML では直接関与しない。アプリが受け取った認証情報を元に Authy API を呼び出す形になる。 |
| 実装フロー | 1) ユーザーは IdP に SAML 認証 → 2) アプリは RelayState とともに Authy の OneTouch エンドポイントへリダイレクト → 3) プッシュ承認後、アプリがアクセストークンを発行 |
この方式は 「SAML + API」ハイブリッド と呼ばれ、既存の SAML アプリケーション資産を活かしつつ MFA を追加できる点がメリットです。
段階的導入とプロビジョニング自動化 (SCIM)
1. パイロットフェーズの設計
| フェーズ | 主な目的 | 推奨対象ユーザー |
|---|---|---|
| ① スモールスケール | 基本機能(プッシュ・TOTP)の体感と UI/UX の評価 | IT 管理者 30 名、開発チーム 20 名 |
| ② リスクシナリオテスト | 高リスクアクセスに対する MFA 強化の有効性確認 | 金融系アプリ利用者 15 名 |
| ③ 全社展開準備 | ポリシー微調整、教育資料作成、サポート体制構築 | 全社員(対象外は一時的に除外) |
パイロットで取得すべきメトリクス
- 認証成功率(プッシュ 98% 以上が目安)
- 平均承認時間(2 秒以内)
- ユーザーからのフィードバック件数(NPS スコア ≥ 8)
2. SCIM による自動プロビジョニングフロー
- IdP 側で SCIM エンドポイントを登録
- Azure AD → Enterprise Applications → Provisioning →
https://api.authy.com/scim/v2を設定。 - 属性マッピング(例)
| IdP 属性 | Authy SCIM フィールド |
|---|---|
| userPrincipalName (UPN) | userName |
| givenName / surname | name.givenName / name.familyName |
emails[0].value |
|
| department | customAttributes.department |
- 同期スケジュール:デフォルトは 15 分ごと。重要な変更は即時反映させるため、Webhook を併用することを推奨。
3. デバイス登録自動化
| 手段 | 実装例 |
|---|---|
| iOS/Android Authy アプリ | ユーザーが初回ログイン時に「デバイス登録リンク」をメールで送付し、クリックで自動的にデバイスが SCIM に追加。 |
| FIDO2 キーベース認証器 | Azure AD の Passwordless 設定と連携させ、Authy のカスタムクレーム authy_fido2_registered を付与。 |
運用・監査チェックリスト
| カテゴリ | 項目 | 推奨頻度 |
|---|---|---|
| 利用率 | MFA が全ユーザーに適用されているか(未登録ユーザー 0%) | 毎週 |
| バックアップコード | 90 日ごとの再発行・メール通知 | 四半期 |
| ログ保存 | 認証イベントを SIEM に転送し、最低 1 年保持 | 継続 |
| 異常検知 | 同一ユーザーの失敗が 5 回以上 / 10 分でアラート | リアルタイム |
| ポリシーレビュー | リスクスコアや事業要件に合わせた MFA ポリシー更新 | 四半期 |
| SCIM 同期 | エラー率 < 0.5%(失敗レコードは自動再送) | 毎日 |
運用ヒント
- Authy の Audit Log API (/protected/json/audit) を定期的に取得し、Power BI や Grafana で可視化すると経営層への報告がスムーズです。
- Azure Sentinel の「Authy MFA Failure」テンプレートをインポートすれば、即座に検知ルールが有効になります。
コスト見積もりと ROI 計算例
1. 前提条件
| 項目 | 想定値 |
|---|---|
| 従業員数(MAU) | 250 名(うち 200 名が毎月アクティブ) |
| プッシュ認証利用率 | 80%(200 × 0.8 = 160 ユーザー) |
| SMS/音声コード利用率 | 20%(40 ユーザー) |
| Authy Enterprise MAU 単価 | $0.10 / ユーザー/月 |
| SMS 送信単価(国内) | $0.04 / 通 |
| 年間インシデント件数(過去実績) | 5 件 |
| 1 件あたりの平均損失額 | $150,000 |
2. 年間コスト算出
| 項目 | 計算式 | 金額 (USD) |
|---|---|---|
| MAU ライセンス | 200 × $0.10 × 12 | $240 |
| プッシュ配信インフラ(実質無料) | - | $0 |
| SMS 認証コスト | 40 ユーザー × 12 回/年 × $0.04 | $19.20 |
| サポート・サービス (24/7) | 年間固定費 | $5,000 |
| 合計(年間) | - | $5,259.20 |
※上記は 最低構成 の概算です。FIDO2 デバイス導入や追加 API コールが必要な場合は別途費用が発生します。
3. ROI シミュレーション
- インシデント削減率:業界ベンチマーク(MFA 導入により 70% 削減)
- 削減できる金額:5 件 × $150,000 × 0.70 = $525,000
|
1 2 3 4 |
ROI = (削減効果 - 年間コスト) / 年間コスト × 100% = ($525,000 – $5,259) / $5,259 × 100% ≈ 9,900 % |
結論:投資対効果は数千パーセントに達し、経営層への提案材料として十分な説得力があります。なお、ROI は「インシデント削減率」や「平均損失額」の見積もりによって変動しますので、社内のリスク評価結果を反映させて再算出してください。
4. コスト最適化ポイント
| 手段 | 効果 |
|---|---|
| ボリュームディスカウント交渉 | 250 ユーザー以上で $0.08/MAU に減額可能 |
| SMS の代替としてプッシュへ移行 | SMS コストを 90% 削減 |
| デバイス統合(FIDO2 + Authy) | API 呼び出し回数削減に伴う $0.02/リクエスト 節約 |
まとめと次のアクション
- 機能把握
- Authy は TOTP、プッシュ、SMS/音声、バイオメトリクスを提供し、ハードウェアトークンは別製品で対応。
- ゼロトラスト要件との整合性
- NIST、Microsoft Zero Trust、Okta の最新ガイドラインと合わせて、リスクベースの MFA ポリシーを設計。
- 統合パターン
- OIDC + Authy API が最もシンプルかつスケーラブル。SAML 環境では「認証後に API 呼び出し」方式で実装。
- 段階的導入
- パイロット → ポリシー調整 → SCIM 自動プロビジョニング → 全社展開のロードマップを策定。
- 運用・監査
- 定期的な MFA 適用率チェック、バックアップコードローテーション、SIEM 連携による異常検知を標準化。
- コストと ROI
- 実際の MAU 単価と SMS コストで年間 $5k 前後に抑えられ、インシデント削減効果は数十万ドル規模。
推奨アクション(30 日以内)
| アクション | 担当者 | 期限 |
|---|---|---|
| Authy Enterprise の見積もり取得(MAU と API Add‑on) | IT 調達チーム | 7日 |
| パイロット対象ユーザーの選定と教育資料作成 | セキュリティ推進室 | 14日 |
| Azure AD / Okta に SCIM 設定を試験導入 | インフラ担当 | 21日 |
| ROI シミュレーション用インシデントデータ収集 | 財務部 | 28日 |
最終的なポイント
正確な機能理解と信頼できる公的ガイドラインをベースに、Authy の API を中心にした MFA アーキテクチャを構築すれば、ゼロトラスト環境でも「常に検証」ポリシーを実現できます。継続的な監査とコスト最適化を組み合わせることで、セキュリティ投資の効果を最大化しましょう。