Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【ITニュース解説】How I Secure APIs — Practical Steps I Use Every Day

2025年09月24日に「Dev.to」が公開したITニュース「How I Secure APIs — Practical Steps I Use Every Day」について初心者にもわかりやすく解説しています。

作成日: 更新日:

ITニュース概要

API開発では、機能だけでなくセキュリティを早期から考慮すべきだ。HTTPSで通信を暗号化し、OAuth+OIDCで認証・認可を厳格に管理する。CORSは信頼ドメインのみ許可し、レート制限で不正アクセスを防ぐ。これらはSEが実践すべきAPIセキュリティの基本だ。

ITニュース解説

システムエンジニアを目指す初心者にとって、APIはアプリケーション同士が情報をやり取りするための重要な窓口である。現代の多くのWebサービスやモバイルアプリは、APIを通じてデータの送受信を行っている。しかし、APIをただ機能させるだけでなく、そのセキュリティを確保することが非常に重要だ。セキュリティは後回しにできるものではなく、最初から開発プロセスに組み込むべき必須の要素である。APIのセキュリティは、たった一つの大きな解決策で完結するものではなく、小さくても実践的で重要な対策を積み重ねることで強化される。ここでは、APIのセキュリティを確保するために日々実践されている具体的なステップを紹介する。

まず、最も基本的な対策の一つは「常にHTTPSを利用する」ことだ。私たちがインターネット上で情報をやり取りする際、そのデータがどのように送信されるかは極めて重要だ。一般的なHTTP(Hypertext Transfer Protocol)では、送受信されるデータは暗号化されず、誰でも読める「プレーンテキスト」の状態で送信される。これには、ユーザー名、パスワード、個人情報といった機密性の高いデータも含まれる。もし悪意のある第三者が通信経路を盗聴した場合、これらの情報が簡単に読み取られてしまい、悪用される危険性がある。これを防ぐのがHTTPS(Hypertext Transfer Protocol Secure)である。HTTPSは、データを送信する前に暗号化する技術で、これによりデータが盗聴されても、その内容を読み取られることがなくなる。また、通信の途中で第三者が割り込み、情報を改ざんしたり盗み取ったりする「中間者攻撃」も防ぐ効果がある。機密性の高いデータをHTTPで送信することは絶対に避け、すべてのAPI通信にHTTPSを利用することが、セキュリティの最も基本的なルールとなる。

二つ目の重要なステップは、「OAuth 2.0とOpenID Connect (OIDC) を用いた認証と認可」だ。APIを利用する際には、まず「誰が利用しているのか」を確認する「認証」のプロセスと、その利用者が「何ができるのか」を判断する「認可」のプロセスが必要となる。OAuth 2.0は、主に「認可」を扱うためのフレームワークだ。これは、ユーザーが自分のデータへのアクセスを、特定のアプリケーションに許可する際に利用される。例えば、「このアプリがあなたの写真アルバムにアクセスすることを許可しますか?」といった場面で使われるのがOAuthだ。しかし、OAuth 2.0自体にはユーザーの身元を保証する「認証」の機能は直接含まれていない。そこで登場するのがOpenID Connect (OIDC) である。OIDCはOAuth 2.0の上に構築されており、OAuthの認可機能に加えて、ユーザーの身元を安全に確認し、その認証情報をアプリケーションに提供する「認証」機能を追加する。これにより、APIはユーザーが誰であるかを安全に確認し、そのユーザーがどの情報にアクセスし、どの操作を実行できるかを正確に制御できるようになる。この際、「最小権限の原則」という考え方を厳守することが非常に重要だ。これは、ユーザーやシステムには、その業務を遂行するために必要最低限のアクセス権限のみを与えるべきだという原則である。例えば、あるユーザーは自分のプロフィール情報だけを閲覧できるが、他のユーザーの情報を変更することはできない、といった具合だ。これにより、万が一アカウントが不正アクセスされたとしても、被害を最小限に抑えることができる。アクセス権限を必要最小限に絞ることで、攻撃者が悪用できる範囲を狭め、セキュリティリスクを大幅に低減する。

三つ目の対策は、「CORSを安全に処理する」ことだ。CORS(Cross-Origin Resource Sharing)は、Webブラウザに組み込まれているセキュリティ機能の一つで、あるWebサイト(オリジン)から、異なるWebサイト(別のオリジン)のリソースにアクセスすることを制御する仕組みである。例えば、https://example.comというサイトから、https://api.example.comというAPIにアクセスする場合など、異なるドメイン、ポート番号、プロトコル(HTTP/HTTPS)を持つリソースへのアクセスを許可するかどうかを制御する。APIを開発し始めたばかりの頃によくある間違いとして、Access-Control-Allow-Origin: *と設定してしまうことがある。これは「すべてのオリジンからのアクセスを許可する」という意味であり、非常に危険な設定だ。悪意のあるサイトが、このAPIを利用しているサイトの情報を不正に読み取ったり、操作したりする可能性が生じる。このような事態を防ぐためには、*(ワイルドカード)を使用せず、APIにアクセスを許可する信頼できる特定のドメイン(例:https://myapp.com)を明示的に指定する「ホワイトリスト方式」を採用する必要がある。これにより、許可されていないサイトからの不正なアクセスをブロックし、APIの安全性を高めることができる。

四つ目の実践は、「レートリミットを適用して乱用を防ぐ」ことだ。APIは多くのアプリケーションから利用されるため、悪意のある攻撃や、単なる意図しない過負荷によって利用できなくなるリスクがある。レートリミットとは、一定期間内にAPIが受け付けるリクエストの数を制限する仕組みだ。これは、DDoS攻撃(Distributed Denial of Service attack:大量のリクエストを送りつけてサービスを麻痺させる攻撃)や、Webサイトからデータを自動的に収集するスクレイピング、あるいは単にユーザーが誤って大量のリクエストを送信してしまったりするような状況からAPIを保護するために役立つ。レートリミットは、APIキーごとや、特定のIPアドレス、またはユーザーアカウントごとに設定することが一般的である。例えば、無料ユーザーには1秒あたり5リクエストまで、プレミアムユーザーには1秒あたり15リクエストまで、といったように、利用プランに応じて制限を変えることができる。これにより、APIの安定した稼働を維持し、すべてのユーザーが公平にサービスを利用できるように保護する。

これらすべての対策は、APIのセキュリティを確保するための重要なチェックリストとなる。通信の暗号化にはHTTPSを常に使い、ユーザーの身元確認とアクセス制御にはOAuth 2.0とOIDCを利用し、必要な最小限の権限のみを付与する「最小権限の原則」を徹底する。また、CORS設定で不正なアクセス元をブロックし、レートリミットで過剰な利用からAPIを守る。これらの実践は、API開発において決して軽視できない、必須の要素である。これからシステムエンジニアを目指すのであれば、APIを構築する初期段階からこれらのセキュリティ対策を導入することが強く推奨される。後になってセキュリティホールを見つけて修正するのは、最初から対策を講じるよりもはるかに労力がかかり、時には取り返しのつかない事態を招く可能性もあるからだ。APIのセキュリティは、ユーザーの信頼を守り、サービスを安定稼働させるための土台となるのである。

関連コンテンツ

関連IT用語