Web API セキュリティには、 Web API を呼び出すプログラムまたはユーザーの認証が含まれます。
API 統合の容易さとともに、適切な認証(AuthN) と承認(AuthZ) を確保することが難しくなります。マルチテナント環境では、適切な AuthN と AuthZ に基づくセキュリティ制御により、API アクセスが必要な (および権限のある) ユーザーのみに制限されるようにすることができます。適切な AuthN スキームにより、プロデューサー (API またはサービス) はコンシューマー (クライアントまたは呼び出しプログラム) を適切に識別し、そのアクセス レベル (AuthZ) を評価できます。言い換えると、コンシューマーは提示された資格情報に基づいて特定のメソッド (ビジネス ロジック) を呼び出すことができるかどうかということです。
「インターフェース設計上の欠陥は、暗号 プロセッサの世界からさまざまな 組み込みシステム、さらにはウイルス対策ソフトウェアやオペレーティングシステム自体にまで広がっています。」 [1]
認証と承認の方法
認証と承認の最も一般的な方法は次のとおりです。
- 静的文字列: これらは、API によって消費者に提供されるパスワードのようなものです。
- 動的トークン: 呼び出し元が認証サービスから取得する時間ベースのトークンです。
- ユーザー委任トークン:ユーザー認証に基づいて付与されるOAuth [2]などのトークンです。
- ポリシーと属性ベースのアクセス制御: ポリシーは属性を使用して、 ALFAやXACMLなどの標準を使用して API を呼び出す方法を定義します。
上記の方法は、セキュリティのレベルと統合の容易さが異なります。多くの場合、最も簡単な統合方法は、最も弱いセキュリティ モデルも提供します。
静的文字列

静的文字列方式では、API 呼び出し元またはクライアントがリクエストにトークンとして文字列を埋め込みます。この方法は、基本認証と呼ばれることがよくあります。「セキュリティの観点から見ると、基本認証はあまり満足できるものではありません。これは、アクセスされたすべてのページに対して、ユーザーのパスワードをネットワーク経由で平文で送信することを意味します ( SSLなどの安全な低レベル プロトコルを使用してすべてのトランザクションを暗号化しない限り)。したがって、ユーザーは、ネット上のあらゆるパケット スニファーに対して非常に脆弱です。」 [3]
動的トークン
APIが動的トークンによって保護されている場合、トークンには時間ベースのnonceが挿入されます。トークンには有効期限 (TTL) があり、その期限が過ぎるとクライアントは新しいトークンを取得する必要があります。API メソッドには時間チェックアルゴリズムがあり、トークンの有効期限が切れると、リクエストは禁止されます。「このようなトークンの例としては、JSON Web Tokenがあります。"exp" (有効期限) クレームは、JWT が処理のために受け入れられてはならない有効期限を識別します。」[4]
ユーザー委任トークン
このタイプのトークンは、アプリケーションがユーザーに代わって API にアクセスする必要がある 3 レッグ システムで使用されます。ユーザーは、ユーザー ID とパスワードをアプリケーションに公開する代わりに、アプリケーションが API を呼び出すためのユーザー権限をカプセル化するトークンを付与します。
OAuth 2.0認可フレームワークにより、サードパーティアプリケーションは、リソース所有者とHTTPサービス間の承認のやり取りを調整することによってリソース所有者に代わって、またはサードパーティアプリケーションが自らに代わってアクセスできるようにすることで、HTTPサービスへの限定的なアクセスを取得できるようになります。[5]
API のきめ細かな承認
属性ベースのアクセス制御
このアプローチでは、API 自体、API フレームワーク (インターセプターまたはメッセージ ハンドラーとして)、または API ゲートウェイ ( WSO2、Kong など)のいずれかにポリシー適用ポイントがあり、API への呼び出しや API からの応答をインターセプトします。ポリシー適用ポイントは、それを承認リクエスト (通常は XACML) に変換し、ポリシー決定ポイント (PDP) に送信します。ポリシー決定ポイントは、任意の数のユーザー、リソース、アクション、およびコンテキスト属性を使用して、どのアクセスが許可または拒否されるかを定義できる動的アクセス制御を実装するポリシーで構成されます。ポリシーは次のようなものになります。
- リソース(例:銀行口座)
- ユーザー(例:顧客)
- 状況(例えば、時間帯)
- 関係(例:アカウントが属する顧客)。
ポリシーは ALFA または XACML で表現されます。
参考文献
- ^ 「API 攻撃」(PDF)。
- ^ 「OAuth 2.0 — OAuth」。oauth.net 。 2015年10月10日閲覧。
- ^ 「Web 認証の代替ガイド: パート 2」。unixpapa.com。2015年 10 月 10 日閲覧。
- ^ John, Bradley; Nat, Sakimura; Michael, Jones. 「JSON Web Token (JWT)」。tools.ietf.org 。 2015年10月10日閲覧。
- ^ Hardt, Dick. 「OAuth 2.0 認証フレームワーク」。tools.ietf.org 。2015年 10 月 11 日閲覧。
外部リンク
- OWASP API セキュリティ プロジェクト
