API セキュリティとは?をわかりやすく解説
API セキュリティとは、API をサイバー攻撃などのリスクから保護するための対策を指し、ユーザー独自の API と使用する API の両方の整合性を保護する機能などが必要です。具体的には、どのような機能でしょうか。
IoT (モノのインターネット) では、コンピューティング能力が日常生活で使用するモノに埋め込まれています。ディナーパーティーを開くことが突如決まっても、IoT によってスマートフォンから冷蔵庫に接続し、帰宅途中に食料品店に立ち寄って買う必要があるものを調べることができます。あるいは、DevOps チームの一員として、マイクロサービスとコンテナを使用して、高速で反復可能な方法で、レガシーアプリケーションとクラウドネイティブ・アプリケーションを構築し、デプロイしている人もいるでしょう。API は、マイクロサービスとコンテナが通信する最も一般的な方法であり、これはシステムとアプリケーションの関係に似ています。統合と相互接続性の重要性が増すとともに、API も重要になってきます。
API セキュリティが重要である理由
企業は API を使用してサービスを接続し、データを転送します。API が破損、公開、ハッキングされると、大規模なデータ侵害が発生します。機密性の高い医療記録、金融データ、個人情報が公に流出し、利用されてしまいます。とはいえ、あらゆるデータの重要性が等しいわけではなく、すべてを一括して同じ方法で保護すべきではありません。API セキュリティへのアプローチは、どのような種類のデータを転送するかによって決まります。
API がサードパーティ・アプリケーションに接続する場合、そのアプリケーションがインターネットに情報をどのように通過させるかを把握してください。上記の例でいうなら、誰かに自分の冷蔵庫の中身を知られても気にしないかもしれませんが、同じ API を使用して居場所を追跡されるとしたら、放っておけないでしょう。
Web API セキュリティとは
Web API とはインターネットを通じて利用できる API です。Web API セキュリティは、インターネットに接続した API を通じたデータの転送を対象とするセキュリティ対策を指します。OAuth (Open Authorization) はアクセス委任のオープンスタンダードです。パスワードを共有しなくても、Web リソースへのサードパーティのアクセス権が付与されます。「共有」ボタンをクリックするだけで動画 (例:コーギーが腹打ちして水に飛び込む様子を編集した動画) を複数のソーシャルネットワークで共有できるのは、OAuth という技術規格のおかげです。
ほとんどの API は Representational State Transfer (REST) または Simple Object Access Protocol (SOAP) で実装されています。
REST API は HTTP を使用し、Transport Layer Security (TLS) 暗号化をサポートします。TLS はインターネット接続を非公開に維持し、2 つのシステム (サーバーとサーバー、またはサーバーとクライアント) の間で送信されるデータを暗号化し、変更されないようにする規格です。つまり、ハッカーがショッピング Web サイトからクレジットカード情報を盗み取ろうとしても、データを読み取ることも変更することもできません。Web サイトが TLS で保護されているかどうかは、URL が「HTTPS」(Hyper Text Transfer Protocol Secure) で始まっているかどうかでわかります。
REST API は JavaScript Object Notation (JSON) も使用します。これは Web ブラウザー上でのデータ転送を容易にするファイルフォーマットです。REST API は HTTP と JSON を使用しているため、データを保存または再パッケージする必要がなく、SOAP API よりもはるかに高速です。
SOAP API は Web Services Security (WS Security) という組み込みプロトコルを使用します。これらのプロトコルは、確実性と認証を基にしたルールセットを定義します。SOAP API は、Organization for the Advancement of Structured Information Standards (OASIS) と World Wide Web Consortium (W3C) という 2 つの主要な国際規格団体による規格セットに対応しており、XML 暗号化、XML 署名、SAML トークンを組み合わせて使用して、認証および認可を検証します。一般に、SOAP API には総合的なセキュリティ対策が備わっているという利点がありますが、必要となる管理も増えます。このような理由から、SOAP API は機密データを取り扱う組織に推奨されます。
API セキュリティのベストプラクティス
API セキュリティには、承認と認証のポリシーを有する信頼できる環境が必要です。ほとんどの人は貯金を布団の下に隠しておくのではなく、銀行に預けますが、そのためには信頼できる環境 (銀行) が必要です。API セキュリティに必要な信頼できる環境を確保する方法をご覧ください。
API セキュリティを強化できる一般的な方法をいくつか紹介します。
- トークンを使用する。信頼できる ID を確立してから、この ID に割り当てられたトークンを使用して、サービスおよびリソースへのアクセスを制御します。
- 暗号化と署名を使用する。TLS (上記を参照) などの手段を使用してデータを暗号化します。署名を要求して、適切なユーザーがデータを復号化および変更し、その他のユーザーは実行できなくします。
- 脆弱性を特定する。オペレーティングシステム、ネットワーク、ドライバー、API コンポーネントを最新の状態にします。すべてのものがどのように連携しているか把握し、API の侵入に使用される可能性がある弱点を突き止めます。スニッファーを使用して、セキュリティの問題を検知し、データ漏洩を追跡します。
- クォータとスロットリングを使用する。API を呼び出す頻度についてクォータを設定し、使用履歴を追跡します。API の呼び出しが多い場合、悪用されている可能性があります。API を無限ループで呼び出しているなど、プログラミングのエラーの可能性もあります。スパイクやサービス拒否攻撃から API を保護するため、スロットリングのルールを作成します。
- API ゲートウェイを使用する。API ゲートウェイは API トラフィックの主な適用ポイントとして機能します。ゲートウェイを適切に使用すると、トラフィックを認証し、API の使用方法を制御して分析できます。
API 管理とセキュリティ
API セキュリティにおいて、優れた API の管理が成功の鍵になります。多くの API 管理プラットフォームは、以下の 3 種類のセキュリティ機構をサポートします。
- API キー:シングルトークン文字列 (一意の認証情報を提供する、小型のハードウェアデバイス)。
- 基本認証 (APP ID/APP キー):2 つのトークン文字列のソリューション (ユーザー名とパスワード)。
- OpenID Connect (OIDC):一般的な OAuth フレームワーク上のシンプルな ID レイヤー (基本プロファイル情報を取得して認証サーバーを使用し、ユーザーを検証する)。
API の管理機能を選択する際には、これらのセキュリティ機能を処理できるかどうか、また上記の API セキュリティ手法をどのように取り入れるかなどを計画しておくことができます。
(動画) セキュリティとコンプライアンスに対する Red Hat のアプローチ (再生時間:2:22)
Red Hat を選ぶ理由
データ侵害は恐ろしい出来事ですが、セキュリティを向上させる手段を講じることはできます。API は取り組む価値があります。大切なのは、正しい方法を知ることです。Red Hat は、毎年、Red Hat 製品のセキュリティリスクに関するレポート (例: 『Kubernetes のセキュリティの現状に関するレポート 2023 年版』) を発行しており、世界中のエンタープライズ・ソフトウェアに影響を与えるセキュリティの脆弱性と、当社製品に対する Red Hat のソリューションについて説明しています。API セキュリティにおいて必要なこととは、継続的なセキュリティ対策、つまり適切な質問を投げかけ、注意が必要な領域を把握していることや、信頼できる API 管理機能を使用しているかどうかにかかっていると言えます。Red Hat がこの作業をお手伝いします。
Red Hat では、以下の要素からなる、受賞歴のある Red Hat 3scale API Management をお勧めします。
- API、アプリケーション、開発者の役割を管理する API マネージャー
- API マネージャーからポリシーを適用するトラフィックマネージャー (API ゲートウェイ)
- さまざまな認証プロトコルをサポートする ID プロバイダー (IDP) ハブ
API ゲートウェイでは、Red Hat 3scale API Management が期限切れのタイムスタンプ付きトークンをデコードし、クライアント ID が有効であるかチェックし、公開鍵を使用して署名を確認します。