認可・アクセス制御

認可 にんか

アクセス制御権限認証OAuthロールベースアクセス制御パーミッション
認可について教えて

簡単に言うとこんな感じ!

「あなたが誰かはわかった。じゃあ、何をしていいか?」を決める仕組みだよ!ホテルのカードキーみたいなイメージ。チェックインして身元確認(認証)が終わったあと、どの部屋に入れるか・レストランが使えるかを決めるのが認可なんだ!


認可とは

認可(Authorization) とは、システムやサービスにアクセスしようとしているユーザー・アプリケーションに対して、「何を・どこまで操作してよいか」を判断・制御する仕組みのことです。よく似た言葉に認証(Authentication)がありますが、認証が「あなたは誰か?」を確認するプロセスであるのに対し、認可は「あなたには何が許可されているか?」を決めるプロセスです。

たとえば会社の業務システムでは、ログインできる(=認証)だけでは不十分で、「この人は売上データを閲覧できるが、削除はできない」「この人は経費申請のみ可能」といったように、役割や立場ごとに操作できる範囲を細かく制御する必要があります。これが認可の役割です。

認可はセキュリティの観点から非常に重要で、設計が甘いと「ログインさえできれば何でもできる」状態になってしまい、情報漏洩や不正操作のリスクが高まります。最小権限の原則(必要最低限の権限だけを与える)が認可設計の基本思想です。


認証 vs 認可:何が違うの?

この2つは混同されがちですが、役割がまったく異なります。

項目認証(Authentication)認可(Authorization)
英語略称AuthNAuthZ
問いかけ「あなたは誰?」「何をしていいの?」
タイミング先に行う認証の後に行う
IDとパスワードでログイン管理者だけが設定変更できる
失敗時のエラー401 Unauthorized403 Forbidden

覚え方:AuthN と AuthZ

英語では認証を AuthN(AuthenticatioN)、認可を AuthZ(AuthoriZation)と略します。「N」と「Z」はそれぞれ単語の最後の文字から来ています。「NとZのどっちが先?」→ アルファベット順にNが先→認証が先!と覚えましょう。

ホテルで例えると

フロントで本人確認(パスポード提示)
        ↓ 認証:あなたが山田さんだとわかった
カードキーを渡す(305号室に入れる、プールOK、金庫室はNG)
        ↓ 認可:あなたはこれだけできる

認可の主なモデル・方式

認可の実装方法にはいくつかの代表的なモデルがあります。

モデル名略称概要向いているケース
ロールベースアクセス制御RBAC「役割(ロール)」ごとに権限を設定社内システム・ERP
属性ベースアクセス制御ABACユーザー属性・環境条件で細かく制御クラウド・ゼロトラスト
強制アクセス制御MACシステムがラベルで制御(ユーザーが変更不可)政府・軍事系
任意アクセス制御DACリソースの所有者が権限を設定ファイルサーバー

RBACの仕組み(最もよく使われる)

ユーザー ──────▶ ロール ──────▶ 権限
  山田さん  →  経理スタッフ  →  請求書:閲覧○ 削除✕
  鈴木さん  →  経理マネージャー→  請求書:閲覧○ 削除○
  田中さん  →  一般社員    →  請求書:閲覧✕

ロールを変えるだけでまとめて権限が変わるため、管理が楽なのが特徴です。


歴史と背景

  • 1970年代:メインフレーム時代に「誰がどのファイルにアクセスできるか」を管理するACL(アクセス制御リスト)が登場
  • 1992年:米国国立標準技術研究所(NIST)がRBAC(ロールベースアクセス制御)モデルを提唱。大規模組織での権限管理を大幅に効率化
  • 2006年:OASISがRBAC標準を正式に策定
  • 2012年OAuth 2.0 がRFC 6749として標準化。「アプリがユーザーの代わりに別サービスへアクセスする」という外部連携型の認可が普及
  • 2014年以降:クラウドやマイクロサービスの普及でABAC・OPA(Open Policy Agent)など柔軟な認可モデルへの需要が高まる
  • 2020年代ゼロトラストセキュリティの浸透に伴い、「常に検証、最小権限」という認可設計が標準的な考え方に

認可の仕組みと関連技術

現代のWebサービスやクラウドでは、認可は単純なログインチェックを超え、複数のシステム間で動的に機能します。

認可の処理フロー(OAuth 2.0 の例) ユーザー (リソースオーナー) クライアント (アプリ) 認可サーバー (Google等) リソースサーバー (APIサーバー) ①アクセス要求 ②認可要求 ③ユーザーが許可(同意画面) ④アクセストークン発行 ⑤トークン付きでAPIアクセス ⑥データ返却 ユーザー クライアント 認可サーバー リソースサーバー

OAuthとOIDCの違い

規格目的主な用途
OAuth 2.0認可のための委任フレームワーク「アプリAがGoogleカレンダーを操作する」など
OIDCOpenID ConnectOAuth 2.0の上に認証を追加「Googleアカウントでログイン」など

関連する規格・RFC

規格・RFC番号内容
RFC 6749OAuth 2.0 の基本仕様
RFC 6750OAuth 2.0 ベアラートークンの使用方法
RFC 7519JWT(JSON Web Token)の仕様
RFC 8693OAuth 2.0 トークン交換
NIST SP 800-162ABACの定義とガイドライン

関連用語

  • 認証 — 「あなたは誰か」を確認するプロセス。認可の前提となる
  • OAuth — サードパーティアプリへのアクセス権を委任するための認可フレームワーク
  • JWT — 認可情報をコンパクトに表現するトークン形式
  • RBAC — 役割(ロール)単位で権限を管理するアクセス制御モデル
  • ゼロトラスト — 「常に検証、最小権限」を原則とするセキュリティモデル。認可が中核
  • アクセス制御リスト