パスワードでログイン制御されているWebサービスにおいて、セキュリティの手段として「認証」と「認可」という概念があります。この両者は異なる概念ですが、似た言葉であるために混同されているケースが見受けられます。認証とは何か、認可とは何か、それぞれを切り離して考え、併用することの必要性や意味についてご説明します。
認証とは
「認証」とは、通信の相手が「誰(何)であるのか」を確認・特定することです。英語では「Authentication」または「AuthN」と表記されます。
認証の方法として、大きく3つの要素があります。
知識情報による認証(対象が知っていること)
知識情報による認証の例として、パスワード認証が挙げられます。
Webサービスにログインする際に、IDとパスワードを入力することがほとんどです。これは、利用者しか知りえないパスワードを入力することで、利用者本人であることを証明しています。
生体情報による認証(対象の特徴)
生体情報による認証の例として、顔認証が挙げられます。
現実世界でも、顔認証は多く用いられています。皆さんも人物を見た際に、相手の「顔」を見て、誰であるかを特定しています。また、運転免許証など顔写真がある身分証明書を提示して、証明する場合もこれに該当します。
最近では、パソコンやスマートフォンの生体情報を利用した「生体情報」の技術が普及しており、Webサービスのログイン時に要求されるケースも増加しています。
所持情報による認証(対象が持っているもの)
所持情報による認証の例として、電話番号を使ったSMS認証が挙げられます。
こちらは前述の二つよりも馴染みが少ないかもしれませんが、サービスを利用する際に、所有する電話番号にSMSが送られ、受信した情報を入力することでサービスを利用できる仕組みです。本人しか持ちえないものである携帯電話(電話番号)を利用して、本人を特定します。
もっと単純な例としては、家や車の鍵も所持情報に
よる認証といえるでしょう。所持のみに頼る場合、盗難や紛失のリスクがあるため、情報セキュリティ分野では他の手段と組み合わせて利用されることも多いです。
2つ以上の要素を用いる多要素認証
従来は三つの方法のうち、一つの方法のみで認証してきました。しかし、近年では、より安全に、より確実に認証するため、二つ以上の要素で認証する「多要素認証(MFA:Multi-Factor Authentication)」が増えています。
認可とは
「認可」とは、特定条件下において、対象物(リソース)を利用可能にする(アクセス)権限を与えることです。英語では「Authorization」または「AuthZ」と表記されます。
現実世界では、「コンサートのチケット」を購入することで「ホールに入る権限」が利用者に付与されます。これが認可に該当します。
認証と認可の使い分け
アクセス制御における認証と認可
アクセス制御とは「正規に承認されている人を認証し、それ以外はアクセスさせない機能」です。承認されていない外部からのアクセスを制御するために導入されるものであり、セキュリティを保つための基本的な機能です。
認証を経てログインできたら、次にソフトウェア側でユーザーを識別し、それぞれに適切なアクセス権限を与えるのが認可です。社内ネットワークでは管理職のみがアクセスできる文書を決めたり、部門の管理者が他の部門のユーザーに対して閲覧を制限したりします。このように「認証・認可」の仕組みを総合して、アクセス制御と呼んでいます。認証と認可の組み合わせによって、企業内ネットワークで利用できる端末とユーザーを限定し、それぞれに正しい権限が付与されるよう構築されています。
近年注目されるゼロトラストを実現するためには、認証・認可が非常に重要になっています。
SNSで認証と認可を区別する理由
今度はFacebookのようなSNSで考えてみましょう。例えば、ログイン(認証)して写真を投稿する場合はどうなるでしょうか。もし、認証と認可が分かれていないと、「ログイン(認証)=すべての権限(すべての写真の編集・削除・加工)を利用できる」ことになります。もちろん、実際にはそうなっていません。写真を編集・削除するには、あなたがその写真の編集権限を認可した場合だけです。
このように、Webサービスにおいて、正しい権限をユーザーに与えるには「認可」が必要になるのです。
つまり、
(1)本人を確認してログインを許可(認証)
↓
(2)投稿や閲覧に関する適切な権限を付与(認可)
という構造になっています。
利用者情報の変更も同様です。認証されてサービスにアクセスしても、他人の利用者情報を閲覧したり、編集したりできたら大問題です。認可によって、権限を細かく設定することはサービス提供に欠かせないのです。
認証と認可は欠かせない
もし、Webサービスの認証と認可が分かれていないとどうなるでしょうか。認証によって全ての権限をまとめて認可することになるので、必要な権限だけを認可することができません。つまり、ユーザーに合わせた適切なサービスを提供することができません。さらに、情報漏洩やハッキングの被害が生じる可能性もあります。
また、一度ユーザーを登録した後、運用の中で権限を分ける必要が出てきたとします。このとき、サービスの設計段階で認証と認可を別で実装していないと、ユーザーに新たな権限を与えたり、あるいは必要な権限のみに制限したりといった、柔軟で発展的な運用が行えなくなります。
TwitterやFacebookなどで、知らない間にスパムアプリにアカウントを乗っ取られて、大量のスパムを送ってしまうことがあります。これは、ユーザー自身がスパムに発信権限を「認可」してしまった例です。
「認可」するアプリがどのような機能であるかを理解しているか、信頼できるアプリまたは運営者であるかどうかを、事前に適切に見極めなければ、このような事故が起こります。SNS側では代理認証はしていますが、連携するアプリの安全性までは保証していません。認証と認可の違いを正しく理解することは、こうした事故を防ぐためにも重要になっていきます。
まとめ
「認証」と「認可」は日本語でも英語でも似た言葉ですが、違いをしっかり認識することが非常に重要です。認証はユーザーの本人確認、認可は正しいアクセス権限を付与するために必要になります。どちらか一方を強化するだけでは、セキュリティ対策にはなりません。認証と認可は異なるものであるため、どちらも強化する必要があります。
かもめエンジニアリングでは、認証・認可を強化する実績豊富なソリューションとして、
SSOソリューション「KAMOME SSO」
ゼロトラスト接続サービス「KeygatewayC1」
などを提供しています。
お問い合わせは、こちらからどうぞ。