認証と認可の違いとは?混同しやすい2つの概念を具体例でわかりやすく解説

Security Basics

「認証(Authentication)」と「認可(Authorization)」は、セキュリティの現場で最も混同されやすい2つの概念です。英語表記の頭文字が同じ「Auth」で略されることも多く、ベンダーのドキュメントやツール名でも曖昧に使われがちです。
しかし、この2つを正しく区別できないまま設計や運用を進めると、「ログインできているのに操作権限がない」「権限設定が意図と違う」といったトラブルに直結します。実務では、認証の設計ミスと認可の設計ミスでは、対策も責任範囲もまったく異なります。

この記事では、認証と認可の違いを、具体例とLinuxやWebアプリの実装レベルで解説します。さらに、情シス1人でも明日から使えるチェックリストと、RBAC・最小権限の原則といった関連概念も併せて整理します。

認証と認可の違いとは?混同しやすい2つの概念を具体例でわかりやすく解説

認証と認可とは?一言で言うと「誰なのか」と「何ができるか」

認証(Authentication)とは「あなたは誰ですか?」を確認するプロセスです。一方、認可(Authorization)は「あなたはこの操作をしてよい人ですか?」を判断するプロセスです。
順序としては必ず「認証 → 認可」の流れになります。認証されていない相手に対して認可の判断はできません。逆に、認証が通っても、その人が全ての操作権限を持つとは限らないのが認可の世界です。

認証(AuthN): 本人確認のプロセス。IDとパスワード、生体情報、証明書などで「誰か」を特定する
認可(AuthZ): 権限判定のプロセス。認証された利用者が「何をしてよいか」を判断する
略記: 英語圏では認証=AuthN、認可=AuthZと区別して書くのが一般的

身近な例で言えば、オフィスビルの入館がわかりやすい比喩です。受付で社員証を見せて本人確認を受けるのが認証、そのあと「3階の営業フロアには入れるが、6階のサーバー室には入れない」という区別が認可にあたります。
同じ社員証(認証情報)を持っていても、役職や部署によってアクセスできる場所が違う——この区別こそが、システムでも同じように設計されるべきポイントです。

認証と認可を混同するとなぜ危険なのか

「ログインできた=何でもできる」と勘違いした設計は、典型的な認可の欠陥につながります。代表的なのが、ログイン後のURLを直打ちすれば他人の情報が見えてしまう「強制ブラウジング」や「IDOR(Insecure Direct Object Reference)」と呼ばれる脆弱性です。
実際の現場では、ログイン画面は厳重に作っているのに、ログイン後の画面遷移で「URLのパラメータを変えれば別ユーザーのデータにアクセスできた」というトラブルは珍しくありません。これは認証は強いのに認可の実装が抜けている典型例です。

混同が生む代表的な事故パターン

IDORによる情報漏えい: /user/123 を /user/124 に書き換えると他人の情報が見える
権限昇格: 一般ユーザーが管理者向けAPIエンドポイントを直接叩けてしまう
退職者アカウントの放置: 認証無効化はできたが、発行済みAPIトークンの認可取り消しを忘れる
過剰権限の付与: 便利だからと全員にsudo権限を付与し、誤操作でシステム停止

特に中小企業の情シスで起きやすいのが、4つ目の「便利さ優先で権限を広げすぎる」パターンです。運用が楽になる反面、1人の誤操作やアカウント乗っ取りで影響範囲が一気に広がります。ここは「最小権限の原則」で後述します。

認証の具体的な仕組み:3要素と多要素認証

認証は、本人確認のために「何かしらの要素」を提示してもらう仕組みです。代表的な要素は次の3つに分類されます。これを理解しておくと、多要素認証(MFA)の設計も自然に組み立てられます。

要素の種類 内容 代表例
知識要素(Something you know) 本人だけが知っている情報 パスワード、PINコード、秘密の質問
所有要素(Something you have) 本人だけが持っているモノ スマホのアプリ、ICカード、セキュリティキー
生体要素(Something you are) 本人固有の身体情報 指紋、顔、虹彩

多要素認証(MFA)は、このうち異なる種類の要素を2つ以上組み合わせることが重要です。パスワードと秘密の質問は両方とも「知識要素」なので、厳密にはMFAとはいえません。パスワード+スマホ認証アプリの組み合わせが、最小構成のMFAとして広く採用されています。

Linuxサーバーにおける認証の実例

Linuxの世界では、SSH接続が典型的な認証の舞台です。デフォルトではパスワード認証ですが、現場では公開鍵認証に切り替えるのが鉄則です。

# /etc/ssh/sshd_config の推奨設定(抜粋) # デフォルトから変更する項目をコメントで明記 # パスワード認証を無効化(公開鍵認証のみ許可) PasswordAuthentication no # rootでの直接ログインを禁止 PermitRootLogin no # 公開鍵認証を有効化(デフォルトyesだが明示) PubkeyAuthentication yes # 設定反映 # sudo systemctl restart sshd

公開鍵認証は「秘密鍵を持っているか」という所有要素の一種です。パスワードと比べて総当たり攻撃(ブルートフォース)に極めて強く、鍵ファイルを適切に管理すれば安全性が大きく向上します。
Linuxのユーザー認証・権限管理のより詳しい設定については、姉妹サイトLinuxMaster.JPでも実践的な解説を公開しています。

認可の具体的な仕組み:RBAC・ABAC・最小権限の原則

認可の設計には、いくつかの代表的なモデルがあります。中小企業の情シスがまず押さえるべきなのは、RBAC(ロールベースアクセス制御)と最小権限の原則の2つです。

1. RBAC(Role-Based Access Control)

RBACは「利用者ごとに権限を付ける」のではなく「役割(ロール)ごとに権限を定義し、利用者にロールを割り当てる」モデルです。人事異動や退職のたびに権限を付け替える運用コストが劇的に下がります。
たとえば「経理ロール」には経理システムの閲覧・編集権限、「営業ロール」には顧客DBの閲覧権限だけ、というように役割で括ります。部署異動があっても、ロールを差し替えるだけで権限が整う仕組みです。

2. ABAC(Attribute-Based Access Control)

ABACは、利用者・リソース・環境の属性を組み合わせて動的に判定する、より柔軟なモデルです。「営業部かつ平日9〜18時かつ社内ネットワーク内からのアクセスのみ許可」といった条件を作れます。
ゼロトラスト環境との相性が良い一方、設計と運用の難易度は高くなります。まずはRBACで土台を作り、必要に応じてABACの要素を足すのが現実的です。

3. 最小権限の原則(Principle of Least Privilege)

これは認可設計の最重要原則です。「業務に必要な最小限の権限だけを与える」という考え方で、事故が起きた時の被害範囲(ブラストラジアス)を小さく抑える効果があります。
Linuxで言えば、安易に全員へsudo権限を配らず、必要なコマンドだけをsudoersで個別許可する設計が該当します。

# /etc/sudoers.d/operators の例 # デフォルトのALL=(ALL)を避け、コマンドを絞る # オペレーターはサービス再起動だけ許可 %operators ALL=(root) NOPASSWD: /bin/systemctl restart nginx, /bin/systemctl restart php-fpm # パスワードなしsudoは慎重に。監査ログ取得と併用すること # visudo -f /etc/sudoers.d/operators で編集する

認証と認可を実現する代表的なプロトコル

Webアプリやクラウドでよく登場するプロトコルは、認証寄りか認可寄りかを理解しておくと混乱しません。

OAuth 2.0: 主に「認可」のためのプロトコル。「このアプリに、あなたの代わりにAPIを呼ぶ権限を与えますか?」を扱う
OpenID Connect(OIDC): OAuth 2.0の上に「認証」を乗せた仕様。ログイン機能として使える
SAML: 企業向けのSSO(シングルサインオン)で広く使われる認証・認可の連携プロトコル
Kerberos: Active Directory環境の中核をなす認証プロトコル

「OAuthでログイン」という表現はよく見かけますが、厳密には認可プロトコルであるOAuthを使って認証的に利用しているだけで、ログイン目的ならOIDCを選ぶのが正解です。ここを理解しておくと、ID基盤の設計や製品選定で迷わなくなります。

中小企業の情シスが今日からできる認証・認可の強化策

大規模なID管理基盤を入れなくても、運用の工夫で認証・認可は確実に強化できます。情シス1人体制でも取り組める現実的な打ち手を整理します。

1. アカウント棚卸しを四半期に1回

退職者・異動者のアカウントが残っていないか、共有アカウントが増えていないかを定期的に点検します。最低でも四半期に1回、理想は毎月です。棚卸しの記録を残しておくと、監査対応や事故後の原因追跡でも大きな資産になります。

2. 管理者アカウントと一般アカウントの分離

日常業務用のアカウントと管理者権限を持つアカウントを分けます。普段は一般アカウントで作業し、管理作業のときだけ管理者アカウントでログインする運用に切り替えるだけで、マルウェア感染時の被害が格段に小さくなります。

3. クラウドサービスのMFA必須化

Microsoft 365、Google Workspace、AWSなどの重要サービスは、全ユーザーでMFAを必須化します。設定自体はいずれも無料で、数時間あれば完了します。やらない理由が見つからない基本対策です。

4. 退職者フローの明文化

退職通知を受け取ってから何時間以内に、どのシステムで権限を無効化するかを手順書にします。属人的な対応になっている企業ほど、退職者アカウントの放置リスクが高まります。

よくある誤解と注意点

誤解1: パスワードを複雑にすれば認証は完璧

複雑なパスワードは重要ですが、それだけでは不十分です。現在の攻撃は、他サービスから漏えいしたパスワードを使い回す「パスワードリスト攻撃」や、入力画面を偽装するフィッシングが主流です。複雑性より「使い回さない」「MFAを併用する」が本質的な対策になります。

誤解2: ログイン画面が強固なら認可は気にしなくていい

冒頭でも触れたとおり、認証が強くても認可が甘ければ情報は漏れます。ログイン後の全ての画面・APIで「この利用者がこのデータを見てよいか」をサーバー側で毎回判定することが欠かせません。クライアント側(JavaScript)のチェックだけでは、簡単にバイパスされます。

誤解3: 認証基盤を入れれば自動で認可もできる

市販のID基盤(IDaaS)は認証機能が中心で、認可ロジックはアプリ側で実装するのが一般的です。「SSOを入れたから大丈夫」と思い込まず、アプリ内の権限チェック実装を必ずレビューしましょう。

本記事のまとめ

観点 認証(Authentication) 認可(Authorization)
目的 「誰なのか」を確認 「何をしてよいか」を判断
タイミング 最初の1回(またはセッション確立時) リクエストごとに毎回
代表技術 パスワード、MFA、生体認証、OIDC RBAC、ABAC、OAuth 2.0、ACL
現場でよくある弱点 弱いパスワード、MFA未導入 IDOR、過剰権限、退職者権限の残存

認証と認可は、セキュリティ設計の「2本の柱」です。片方だけ強くしても全体の強度は上がりません。自社のシステムを棚卸しする時も、「ログインの強さ」と「ログイン後の権限設計」を別々に評価する視点を持っておくことが大切です。
なお、認可設計や権限管理はシステムの規模が大きくなるほど複雑になります。設計や運用で迷う場面が出てきたら、独学だけで抱え込まず、最新の実務ノウハウを継続的に学ぶ習慣を作ることをおすすめします。

認証・認可の実務設計を、もう一段深く学びませんか?

現場で使える認証基盤の選び方や、最小権限の原則を踏まえた権限設計の実例を、週1回のペースでお届けしています。
正しいセキュリティ知識を体系的に身につけたい方へ、メルマガで実践的なセキュリティ対策ノウハウをお届けしています。

関連記事

コメント

タイトルとURLをコピーしました