Web業務システムを開発するとき、
「IDとパスワードだけで十分なのか」
「二要素認証まで入れた方がよいのか」
「全社員に毎回認証させると使いにくくならないか」
と迷うことがあります。
特に、
- 顧客情報
- 社員情報
- 契約情報
- 売上・請求情報
- 管理者機能
- 機密文書
などを扱うシステムでは、不正ログインへの対策が重要です。
そこで検討したいのが、二要素認証をWebシステムへ導入する方法です。
二要素認証では、パスワードだけではなく、
本人しか持っていない端末や認証情報
など、異なる種類の要素を組み合わせて本人確認を行います。
例えば、
メールアドレス・パスワード
↓
認証アプリに表示されたコード入力
↓
ログイン完了
という流れです。
これにより、仮にパスワードが第三者へ知られても、それだけではログインされにくくできます。
ただし、二要素認証は、
セキュリティを高めたいから全ユーザーへとりあえず導入する
という考え方だけで設計すると、運用が複雑になることがあります。
重要なのは、
扱う情報・利用者・利用場所・リスクを整理した上で、認証方法と復旧方法まで設計すること
です。
この記事では、二要素認証を業務Webシステムへ導入する方法、向いているケース、認証方式の違い、設計・運用時の注意点を解説します。
二要素認証とは
二要素認証とは、異なる種類の認証要素を2つ組み合わせて本人確認を行う方法です。
認証要素は、大きく次のように分類できます。
知識情報
本人が知っている情報です。
例えば、
- パスワード
- PIN
などです。
所持情報
本人が持っているものです。
例えば、
- スマートフォン
- セキュリティキー
- 認証アプリ
などです。
生体情報
本人自身の身体的特徴です。
例えば、
- 指紋
- 顔認証
などです。
例えば、
パスワード
+
認証アプリ
で認証する場合は、
知識情報
+
所持情報
を組み合わせています。
異なる種類の認証要素を組み合わせることがポイントです。
二要素認証と二段階認証の違い
似た言葉として「二段階認証」があります。
二段階認証
認証処理を2回行うことを広く指します。
二要素認証
異なる種類の認証要素を2つ使います。
例えば、
パスワード
↓
秘密の質問
の場合、どちらも「本人が知っている情報」であるため、2段階ではありますが、厳密には異なる2要素を使っているとは言いにくくなります。
一方、
パスワード
+
スマートフォンの認証アプリ
なら、異なる種類の認証要素を利用しています。
業務システムでセキュリティを考える場合は、単純に認証画面を2回表示するのではなく、異なる要素を組み合わせることを意識します。
Webシステムに二要素認証を入れるメリット
パスワード漏えい時のリスクを下げられる
IDとパスワードだけの場合、両方が第三者へ知られるとログインされる可能性があります。
二要素認証なら、
ID・パスワード
+
別の認証要素
が必要になります。
そのため、パスワードだけが漏えいした場合のリスクを下げられます。
パスワード使い回しへの対策になる
利用者が複数サービスで同じパスワードを利用している場合、他サービスから漏えいした認証情報が悪用される可能性があります。
二要素認証を追加しておけば、パスワードだけでログインされる可能性を抑えられます。
管理者アカウントを強化できる
業務システムでは特に、
- ユーザー作成
- 権限変更
- データ削除
- CSV一括出力
- システム設定変更
などを行える管理者アカウントの保護が重要です。
一般利用者には必須にしなくても、管理者だけ二要素認証を必須にする方法もあります。
社外から利用するシステムの安全性を高められる
インターネット経由で、
- 自宅
- 出張先
- 顧客先
- スマートフォン
などから利用するシステムでは、社内ネットワーク限定のシステムより認証対策を重視するケースがあります。
二要素認証は、その対策の一つです。
二要素認証を導入した方がよいWebシステム
すべてのシステムで必ず二要素認証が必要とは限りません。
特に検討したいのは次のケースです。
1.個人情報を扱うシステム
例えば、
- 顧客管理
- 会員管理
- 社員管理
- 名簿管理
などです。
氏名・住所・電話番号・メールアドレスなどを大量に扱う場合は、不正アクセス時の影響が大きくなります。
2.重要な業務情報を扱うシステム
例えば、
- 契約管理
- 売上管理
- 請求管理
- 経営管理
- 人事管理
などです。
情報漏えいだけでなく、データを改ざんされた場合の影響も考えます。
3.管理者権限が強いシステム
例えば管理者が、
- 全データ閲覧
- 全データ編集
- ユーザー権限変更
- データ削除
までできる場合です。
管理者アカウントが侵害されると影響範囲が大きいため、二要素認証を優先的に導入する考え方があります。
4.社外からアクセスするシステム
テレワークや外出先からインターネット経由で利用する場合です。
例えば、
営業担当者が顧客先からCRMへアクセスする
といったケースです。
5.複数企業・外部ユーザーが利用するシステム
自社社員だけではなく、
- 顧客
- 取引先
- 外部スタッフ
- 協力会社
なども利用するWebシステムです。
利用環境を自社側だけで管理できないため、認証強化を検討します。
二要素認証が必ずしも必要ではないケース
一方、次のような小規模システムでは、他の対策を優先する場合もあります。
- 利用者が数名
- 機密情報をほとんど扱わない
- 社内ネットワークだけで利用
- 参照できる情報が限定的
- 操作権限が非常に弱い
ただし、
利用者が少ないから安全
という意味ではありません。
システムの利用人数ではなく、
不正ログインされた場合にどの程度の影響があるか
から判断します。
Webシステムで使われる主な二要素認証方式
認証アプリ
Google AuthenticatorやMicrosoft Authenticatorなどの認証アプリを利用する方法があります。
一般的には、
ログインID・パスワード入力
↓
認証アプリを開く
↓
一定時間ごとに変わるコードを入力
↓
ログイン
という流れです。
TOTPと呼ばれる方式が利用されることがあります。
メリット
- SMS通信に依存しない
- 比較的広く利用されている
- スマートフォンがあれば利用しやすい
注意点
- スマートフォン紛失時の復旧が必要
- 機種変更時の移行方法が必要
- 初回登録操作が必要
SMS認証
登録済み電話番号へ認証コードをSMSで送信する方法です。
例えば、
パスワード入力
↓
SMSでコード受信
↓
コード入力
↓
ログイン
という流れです。
メリット
スマートフォン利用者にとって分かりやすい方法です。
注意点
- SMS送信コスト
- 電波状況
- 電話番号変更
- SIMに関係する攻撃への耐性
などを考慮する必要があります。
より強い認証方式が利用できる場合は、SMSだけに依存する必要があるか検討します。
メールによる認証コード
登録メールアドレスへ認証コードを送信する方法です。
メリット
追加アプリが不要で導入しやすい方法です。
注意点
メールアカウント自体が侵害されている場合は、追加認証として十分な効果を得にくい場合があります。
また、メールが届かない・遅延する問題も考慮します。
厳密な二要素認証として扱えるかは、認証構成によって判断する必要があります。
セキュリティキー
USBやNFCなどで利用する物理的なセキュリティキーを使う方法です。
強い認証を求める環境で利用されることがあります。
メリット
フィッシングへの耐性を高めやすい方式です。
注意点
- 物理キーの配布
- 紛失時対応
- 予備キー管理
- 対応端末
などの運用が必要になります。
パスキー
端末の生体認証やPINなどを利用し、公開鍵暗号方式でログインする仕組みも普及しています。
例えば、
ログイン画面
↓
端末の顔認証・指紋認証
↓
ログイン完了
という利用体験にできます。
従来の「パスワード+ワンタイムコード」とは設計思想が異なりますが、Webシステムの認証を検討するときには候補に入ります。
認証方式は「安全性」だけで決めない
最も強い認証方法を選べばよいとは限りません。
例えば現場スタッフ100人が利用するシステムに、複雑な認証手順を必須にすると、
- ログインできない問い合わせが増える
- 認証端末を忘れる
- 作業開始に時間がかかる
といった問題が起こる可能性があります。
そのため、
セキュリティリスクと利用者負担のバランス
を考えます。
二要素認証の導入パターン
全ユーザー必須
すべての利用者に二要素認証を求めます。
向いているケース:
- 機密性が高い
- 個人情報を大量に扱う
- 社外アクセスが多い
管理者のみ必須
一般ユーザーは通常ログイン、管理者だけ二要素認証を必須にします。
例えば、
一般ユーザー
→ ID・パスワード
管理者
→ ID・パスワード+認証アプリ
という設計です。
小規模な業務システムでは、リスクの高い管理者から導入する方法も考えられます。
ユーザーが任意で設定
利用者自身が、
二要素認証を有効化する
方法です。
一般向けWebサービスでは使われることがあります。
ただし業務システムでは、セキュリティ要件として必要なら任意ではなく必須にする方が適切な場合があります。
特定条件で追加認証する
例えば、
普段使っていない端末
↓
二要素認証
重要操作
↓
再認証
といった方法です。
すべての操作で利用者へ負担をかけず、リスクが高い場面だけ認証を強化します。
二要素認証を導入する7ステップ
STEP1|扱う情報を整理する
まずシステムで何を扱うのか確認します。
例えば、
- 顧客情報
- 社員情報
- 契約
- 請求
- 文書
などです。
STEP2|利用者を整理する
例えば、
- 社員
- 管理者
- 顧客
- 外部スタッフ
などです。
利用者によって認証方式を変える場合もあります。
STEP3|不正ログイン時の影響を確認する
アカウントが侵害された場合に、
- 何を閲覧できるか
- 何を編集できるか
- 何を削除できるか
- 何を出力できるか
を確認します。
ここは権限管理とも密接に関係します。
STEP4|二要素認証を必須にする対象を決める
例えば、
全員
なのか、
管理者だけ
なのかを決めます。
最初は管理者・高権限ユーザーだけ必須にする選択肢もあります。
STEP5|認証方式を決める
例えば、
- 認証アプリ
- SMS
- セキュリティキー
- パスキー
などから検討します。
利用端末・利用者層・運用コストまで考慮します。
STEP6|紛失・機種変更時の復旧方法を決める
二要素認証ではここが非常に重要です。
例えば、
スマートフォンを紛失した
↓
認証コードを確認できない
↓
ログインできない
というケースがあります。
そのため、導入前に復旧方法を設計します。
STEP7|運用ルールを決める
例えば、
- 誰が二要素認証を解除できるか
- 管理者が本人確認をどうするか
- 機種変更時の手順
- 退職時のアカウント停止
などです。
認証機能だけではなく、運用まで含めて設計します。
二要素認証で重要な「復旧設計」
二要素認証で起こりやすいトラブルが、
認証できなくなった
というケースです。
例えば、
- スマートフォン紛失
- 機種変更
- 認証アプリ削除
- セキュリティキー紛失
などがあります。
このとき、簡単に管理者が解除できる仕組みにしてしまうと、そこが攻撃対象になります。
例えば攻撃者が、
「スマートフォンをなくしたので二要素認証を解除してください」
と管理者へ依頼する可能性があります。
そのため、
二要素認証そのものと同じくらい、復旧時の本人確認が重要
です。
リカバリーコードを用意する方法
二要素認証登録時に、一度だけ利用できるバックアップコードを発行する方法があります。
例えば、
二要素認証設定
↓
リカバリーコード10個発行
↓
利用者が安全な場所へ保存
とします。
スマートフォンを紛失した場合に、リカバリーコードを利用してログインできます。
ただし、リカバリーコード自体を第三者に取得されないような管理も必要です。
「この端末では次回から省略」をどう考える?
毎回ワンタイムコードを入力すると負担が大きいため、
この端末を信頼する
機能を設ける場合があります。
例えば、
パスワード
+
二要素認証
↓
端末を30日間信頼
という方式です。
次回以降は一定期間、二要素認証を省略できます。
ただし、
- 共用PC
- 不特定多数が使う端末
- インターネットカフェ
などでは利用させないなど、利用環境を考える必要があります。
二要素認証だけでセキュリティ対策は十分?
二要素認証は重要ですが、それだけでWebシステムが安全になるわけではありません。
例えば、
- 適切なパスワード管理
- セッション管理
- 権限管理
- HTTPS
- ログ管理
- 不正アクセス対策
- ソフトウェア更新
- バックアップ
なども必要です。
特に、
二要素認証で管理者としてログイン
↓
一般ユーザーでも本来見られないデータにアクセスできる
という状態では、権限設計に問題があります。
認証と権限管理は別々に考えることが重要です。
二要素認証と権限管理の違い
混同しやすいので整理します。
認証
あなたは誰ですか?
を確認します。
権限管理
あなたは何をしてよいですか?
を判断します。
例えば、
田中さんとして二要素認証に成功
↓
営業担当ロールを確認
↓
自分の顧客だけ閲覧可能
という流れです。
二要素認証を導入しても、全ユーザーへ管理者権限を与えていては適切なセキュリティ設計とは言えません。
二要素認証とSSOを組み合わせる
企業内システムでは、SSO(シングルサインオン)と組み合わせる方法もあります。
例えば、
MicrosoftやGoogleなどの組織アカウントでログイン
↓
組織側で多要素認証
↓
業務システムへアクセス
という構成です。
システムごとに個別の二要素認証を実装するよりも、企業の認証基盤へ集約した方が運用しやすいケースがあります。
特に社内向けシステムでは、
本当に独自ログイン機能を作る必要があるか
から検討することが重要です。
【コピペ用】二要素認証導入チェックシート
システム基本情報
システム名:
利用人数:
社内利用:
社外利用:
扱う情報
顧客情報:
社員情報:
個人情報:
契約:
請求:
機密文書:
その他:
利用者
一般ユーザー:
管理者:
外部ユーザー:
顧客:
現在の認証方法
ID・パスワード:
Googleログイン:
Microsoftログイン:
SSO:
その他:
二要素認証対象
全ユーザー:
管理者のみ:
特定ロール:
任意設定:
認証方式
認証アプリ:
SMS:
メール:
セキュリティキー:
パスキー:
復旧方法
リカバリーコード:
管理者解除:
本人確認方法:
機種変更:
端末紛失:
運用
二要素認証を設定できる人:
解除できる人:
設定変更履歴:
ログイン履歴:
その他のセキュリティ
権限管理:
ログ管理:
アカウントロック:
退職者の無効化:
セッション管理:
二要素認証を独自実装するべき?
Webシステムを開発するとき、
二要素認証をゼロから実装しよう
と考えることがあります。
しかし、認証はセキュリティ上重要な領域です。
可能であれば、
- 認証サービス
- IDプロバイダー
- フレームワークや認証ライブラリ
など、十分に利用実績のある仕組みを活用する方法を検討します。
独自実装する範囲を増やすほど、
- コード生成
- 秘密情報管理
- 復旧
- セッション
- 脆弱性対応
など、考慮する項目も増えます。
「自社独自だから安全」ではありません。
認証では、枯れた仕組みを適切に利用することも重要です。
二要素認証導入でよくある失敗
失敗1|全員へ強制すれば安全だと考える
二要素認証だけでシステム全体のセキュリティが決まるわけではありません。
権限・ログ・セッションなども確認します。
失敗2|復旧方法を後回しにする
スマートフォン紛失時に利用者がログインできなくなります。
導入前に復旧方法を決めます。
失敗3|管理者が簡単に解除できる
サポート担当者へ連絡するだけで二要素認証を解除できると、復旧フロー自体が弱点になる可能性があります。
本人確認方法を整理します。
失敗4|利用者の環境を確認しない
業務用スマートフォンを持っていない社員へ認証アプリを必須にすると、個人端末を使わせる問題が発生することがあります。
実際の利用端末を確認します。
失敗5|共用アカウントを残す
営業部共通アカウント
のような利用方法では、誰が操作したか分からなくなります。
基本的には利用者ごとにアカウントを発行し、権限で管理する方法を検討します。
失敗6|管理者だけ通常パスワードのまま
最も高い権限を持つ管理者ほど、アカウント侵害時の影響が大きくなります。
高権限アカウントから優先的に認証強化を検討します。
失敗7|認証方法を増やしすぎる
SMS・メール・認証アプリなど複数方式をすべて提供すると、運用やサポートも複雑になります。
実際に必要な方式を絞ります。
二要素認証に関するよくある質問
業務システムには必ず二要素認証が必要ですか?
必ずしもすべてのシステムで必要とは限りません。
扱う情報、利用場所、ユーザー権限、不正ログイン時の影響などから判断します。
管理者や高権限ユーザーだけ必須にする方法もあります。
SMSと認証アプリではどちらがよいですか?
利用者環境やセキュリティ要件によります。
認証アプリはSMS通信に依存しないメリットがあります。
一方、ユーザーによってはSMSの方が導入しやすい場合があります。
安全性・運用性・利用者負担を比較して選びます。
メール認証でも二要素認証になりますか?
認証構成によります。
メールアカウントへのアクセス方法などによっては、独立した異なる認証要素として十分に機能しない場合があります。
高いセキュリティが必要なら、認証アプリやセキュリティキー、パスキーなども検討します。
スマートフォンをなくした場合はどうしますか?
リカバリーコードや管理者による復旧フローなどを事前に用意します。
重要なのは、復旧依頼を受けた際に本人確認をどのように行うかです。
毎回二要素認証する必要がありますか?
システム要件によります。
信頼済み端末では一定期間省略し、新しい端末からログインした場合だけ追加認証する設計もあります。
管理者だけ二要素認証にできますか?
可能です。
高権限ユーザーだけ必須にする方法は、段階的なセキュリティ強化としても考えられます。
hiro-dev-labでは認証・権限設計から相談できます
hiro-dev-labでは、Webシステムの開発だけでなく、どの利用者にどの程度の認証強度が必要なのかを整理する段階から相談できます。
例えば、
- システム利用者の整理
- ログイン方式の検討
- 二要素認証の対象整理
- 管理者アカウントの保護
- ロール・権限設計
- 社内・社外アクセスの整理
- SSOの検討
- 認証アプリなどの方式検討
- 復旧フローの整理
- ログイン・操作履歴の設計
- 要求整理
- 業務要件・機能要件整理
- Webシステム設計・開発
などです。
例えば、
顧客情報を扱うWebシステムに二要素認証が必要か判断したい
管理者だけ認証を強化したい
社外から利用する業務システムを作りたい
二要素認証と権限管理をどう組み合わせればよいか分からない
という場合でも、
利用者 → 扱う情報 → 不正アクセス時の影響 → 認証方式 → 権限 → 運用
の順番で整理できます。
まとめ|二要素認証は「追加するか」ではなく「誰に・どの方式で・どう復旧するか」を設計する
二要素認証は、Webシステムの不正ログイン対策として有効な選択肢です。
特に、
- 個人情報を扱う
- 機密情報を扱う
- 管理者権限が強い
- 社外からアクセスする
- 外部ユーザーも利用する
というシステムでは検討する価値があります。
ただし、
「セキュリティを高めたいから二要素認証を付ける」
だけでは不十分です。
まず、
- どのような情報を扱うのか
- 誰が利用するのか
- 不正ログインされた場合の影響は何か
- 誰に二要素認証を必須にするのか
- どの認証方式を利用するのか
- 端末紛失時にどう復旧するのか
- 誰が設定変更・解除できるのか
を整理します。
その上で、
パスワード + 認証アプリ
などの方式や、SSO・セキュリティキー・パスキーなどを比較します。
また、二要素認証を導入しても、
- 不要な管理者権限
- 過剰なCSV出力権限
- 退職者アカウント
- 適切でないセッション管理
などが残っていれば、別のリスクがあります。
そのためWebシステムのセキュリティは、
認証 + 権限管理 + 運用
をセットで考えることが重要です。
「二要素認証を入れるべきか迷っている」
「管理者だけ認証を強くしたい」
「顧客や社員の個人情報を扱うシステムを作りたい」
という場合は、まず不正ログインされた際に、そのアカウントから何ができてしまうのかを整理するところから始めてみてください。