認可 にんか
簡単に言うとこんな感じ!
「あなたが誰かはわかった。じゃあ、何をしていいか?」を決める仕組みだよ!ホテルのカードキーみたいなイメージ。チェックインして身元確認(認証)が終わったあと、どの部屋に入れるか・レストランが使えるかを決めるのが認可なんだ!
認可とは
認可(Authorization) とは、システムやサービスにアクセスしようとしているユーザー・アプリケーションに対して、「何を・どこまで操作してよいか」を判断・制御する仕組みのことです。よく似た言葉に認証(Authentication)がありますが、認証が「あなたは誰か?」を確認するプロセスであるのに対し、認可は「あなたには何が許可されているか?」を決めるプロセスです。
たとえば会社の業務システムでは、ログインできる(=認証)だけでは不十分で、「この人は売上データを閲覧できるが、削除はできない」「この人は経費申請のみ可能」といったように、役割や立場ごとに操作できる範囲を細かく制御する必要があります。これが認可の役割です。
認可はセキュリティの観点から非常に重要で、設計が甘いと「ログインさえできれば何でもできる」状態になってしまい、情報漏洩や不正操作のリスクが高まります。最小権限の原則(必要最低限の権限だけを与える)が認可設計の基本思想です。
認証 vs 認可:何が違うの?
この2つは混同されがちですが、役割がまったく異なります。
| 項目 | 認証(Authentication) | 認可(Authorization) |
|---|---|---|
| 英語略称 | AuthN | AuthZ |
| 問いかけ | 「あなたは誰?」 | 「何をしていいの?」 |
| タイミング | 先に行う | 認証の後に行う |
| 例 | IDとパスワードでログイン | 管理者だけが設定変更できる |
| 失敗時のエラー | 401 Unauthorized | 403 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とOIDCの違い
| 規格 | 目的 | 主な用途 |
|---|---|---|
| OAuth 2.0 | 認可のための委任フレームワーク | 「アプリAがGoogleカレンダーを操作する」など |
| OIDC(OpenID Connect) | OAuth 2.0の上に認証を追加 | 「Googleアカウントでログイン」など |
関連する規格・RFC
| 規格・RFC番号 | 内容 |
|---|---|
| RFC 6749 | OAuth 2.0 の基本仕様 |
| RFC 6750 | OAuth 2.0 ベアラートークンの使用方法 |
| RFC 7519 | JWT(JSON Web Token)の仕様 |
| RFC 8693 | OAuth 2.0 トークン交換 |
| NIST SP 800-162 | ABACの定義とガイドライン |