API の認証・認可が適切に実装されているか?¶
Type: DeepDive
Category: API・権限・セキュリティ
Audience: 設計リーダー / SRE / インフラ設計者 / レビュー担当者
背景・概要¶
APIは外部・内部とのインターフェースとなるため、誰が・どの範囲で・何をできるかを正確に制御する必要がある
特にB2BのSaaSでは、テナントスコープの認証・認可が極めて重要になる
トークン(JWTやOIDC)方式が一般的で、ユーザー属性・スコープの検証が要点
例¶
- OAuth2.0 + OpenID Connect によるユーザー認証
- JWTにsub(ユーザーID)やtenant_idを含め、各APIでアクセススコープを検証
- 管理者向けと一般ユーザー向けでアクセスポリシーを明確に分離
よくある失敗例¶
- トークンの期限が無限になっており、使い回しで乗っ取りリスク
- トークンはチェックするが、スコープ(リソースの対象)が未チェック
- 認証エラーと権限エラーのステータスコードが混在していて脆弱性診断に引っかかる
FAQ¶
Q. 認証と認可って何が違うの?
A. 認証=誰かを確かめる、認可=何ができるか制御する。両方必要
Q. API GatewayやIDaaSで全部済む?
A. 一部は可能だが、ビジネスロジックに近い認可(例:他テナント越境チェック)はアプリ側で担保すべきかな