サイバーセキュリティは、今日の企業にとって最大の関心事の一つです。脆弱性は高額な損害賠償に発展するとニュースになり、今日のデジタル風景にクラウドが浸透しているため、APIセキュリティに多くの注目が寄せられています。APIを狙ったネットワーク攻撃は、2021年に681%という驚異的な増加を記録しました。それまでの数年間も右肩上がりで推移していたので、その懸念は杞憂に過ぎませんが、企業はこの危機に迅速に対応し、APIセキュリティの強化や、徹底したテスト手法の導入で対応しています。   

SOAP(Simple Object Access Protocol)API の継続的な普及を考慮すると、世界的な IT リーダーにとって、SOAP のベスト・セキュリティ・プラクティスを学ぶことは、今や最重要事項となっています。  SOAP APIには、REST APIと比べて、独自のセキュリティ上の懸念がありますが、企業はどのようにそのギャップを埋め、SOAPのAPIセキュリティを上げているのでしょうか。どのようにすれば、ビジネスと顧客を守り、APIを脅威から保護できるのでしょうか。   

ここでは、SOAPセキュリティについて知っておくべき重要なことを説明する:

  • SOAP(Simple Object Access Protocol)は、ウェブサービス間で構造化された情報を交換するために使用されるメッセージング・プロトコルです。
  • SOAP(Simple Object Access Protocol)は、ウェブサービス間で構造化された情報を交換するために使用されるメッセージングプロトコルです。SOAPベースのアプリケーションでは、機密データを保護し、メッセージの完全性を確保し、ユーザーを認証・認可し、不正アクセスを防止するために、セキュリティが非常に重要です。
  • SOAP ベースのアプリケーションにおける一般的なセキュリティ脅威には、コードインジェクション、アクセス/認証の突破や漏洩、サービス拒否(DoS)攻撃、クロスサイトスクリプティング(XSS)、セッションハイジャックなどがあります。
  • SOAP セキュリティには、アクセス制御、権限の制限、メッセージの長さと量の制限、WS-Security プロトコルの順守などの対策を実装することが含まれます。
  • 安全なSOAPウェブサービスの構築には、SOAPヘッダによるセキュリティ層の追加、ユーザー名とパスワードによる認証、X.509証明書による暗号化、定期的なテスト、IDとアクセス管理、リクエスト監視、入力検証、冗長なセキュリティ標準といったSOAPセキュリティのベストプラクティスの実装が含まれる。

目次

SOAPのセキュリティとは

SOAPは、WebサービスAPIで広く使われるメッセージングプロトコルであり、クロスプラットフォームなXML(extensible markup language)形式のメッセージを使って、互換性のないシステムやサーバー間のギャップを埋めることができます。元々はマイクロソフト社が開発したものですが、現在はWebサービスのオープンスタンダードとなっています。JSONなどのプログラミング言語や様々なプロトコルを利用できるREST(representational state transfer)とは異なり、SOAPはHTTPやSMTPでXMLを送信することに限定されます。  

インターネット上でのデータ交換の最も古い方法の1つとして、SOAPは長年にわたって強力なセキュリティ標準のセットを開発しました。SOAPのセキュリティは、主にメッセージとその中に含まれる情報への不正アクセスを防ぐことに関係しており、これを実現するための標準プロトコルがWS-Security(Web Standards Security)仕様になります。

WS-Security (Web Services Security または WSS) は、SOAPのメッセージングの機密性と認証手続きを強制するための一連の原則です。WS-Securityに準拠したプラクティスには、パスワード、X.509証明書、デジタル署名、XML暗号化などの利用が含まれ、XMLの暗号化によって、権限のないユーザーにはデータが読めなくなります。   

WS-Security、および SOAPのプロトコル自体は、強固なセキュリティを備えた成熟した製品ですが、システムインフラにおけるその役割を念頭に置いておく必要があります。SOAP API は、あるシステムからその宛先のエンドポイントにメッセージを運びますが、メッセージが安全に送受信されても、そのペイロードを受信した後に続くアクションがセキュリティ侵害を引き起こす可能性があります。なので、SOAPセキュリティのリスクを理解するということは、組織が安全性の維持にできることをすべて行うための鍵になるということです。 

SOAPのセキュリティが重要な理由

サイバーセキュリティは、現代の企業にとって最大の関心事の一つです。ある情報源によると、企業に対するマルウェア攻撃の平均的な金銭的損失は240万ドルだそうです。また、同報告書によると、最大21%のファイルがセキュリティ対策や保護を全く行っていないとのことです。そのため、このような企業のデータは攻撃されやすい状態にあり、また、従業員が使うデバイスもマルウェア攻撃のリスクにさらされています。  

 SOAPのメッセージには、よく機密データが含まれており、メッセージには、財務データや従業員の記録、その他安全な保管が必要な情報が含まれている可能性があります。それを悪い人の手に渡らないようにすることに、高い優先度が当てられます。WS-SecurityとSOAPセキュリティのベストプラクティスは、APIのインフラストラクチャにセキュリティの層を追加し、顧客、従業員、知的財産を保護するものです。

SOAPのセキュリティのよくあるリスク

サイバーセキュリティの脆弱性や攻撃には様々な種類がありますが、その中にはAPIを狙った特有のものもあります。例えば、インジェクション攻撃、DoS(サービス拒否)攻撃、アクセス権・認証権の侵害・流出、XSS(クロスサイトスクリプティング)、セッション乗っ取りなどがあり、メッセージレベルの攻撃もあれば、トランスポート層を悪用しようとするものもあります。ここでは、このような悪用がSOAPのリクエストにどのように適用されるかを見てみましょう。

インジェクション攻撃

インジェクション攻撃は、悪意のあるコードをデータベースやアプリケーション自体に導入するものです。例えばSQLインジェクションは、データベースのクエリに悪意のあるコマンドを含める方法であり、同様に、SOAPのメッセージで配信されるXMLコンテンツに悪意のあるコードを挿入することもできます。インジェクション攻撃を防ぐ唯一の方法は、アクセスのコントロール慎重にを行うことです。SOAP XMLデータを受信し解釈するプロセスには、昇格した特権を与えないようにしましょう。通常、これらのプロセスは、データベースにデータを挿入することのみが可能で、管理コマンドを実行することはできません。

アクセス・権限の侵害・漏えい

インジェクション攻撃を含むほとんどの攻撃は、違反または漏えいしたアクセスから始まることから、SOAPのメッセージが確実に正しいユーザーにのみ公開されることは、SOAPのセキュリティの重要な部分になります。インジェクション攻撃を防ぐのと同様に、受信したSOAPのメッセージで何ができるかを制限するのは重要なのです。

サービス拒否(DoSまたはDDoS)攻撃

サービス拒否や分散型サービス拒否(DDoS)攻撃は、多すぎるメッセージや長すぎるメッセージでWebサービスを圧倒し、混乱させますが、SOAPのセキュリティには、メッセージの長さと量を制限することで、DoS攻撃を不可能にする手段が含まれています。 

XXS(クロスサイトスクリプティング)

クロスサイトスクリプティングもインジェクション攻撃の一種ですが、より具体的には、誰かが悪意のあるブラウザ側のスクリプトを、Webアプリケーションを通してウェブサイトに注入したときに発生します。SOAPのメッセージはセキュリティチェックを通過するかもしれませんが、メッセージの受信によって引き起こされるアクションが確実に安全であるようにしなければいけません。

セッション乗っ取り

セッション乗っ取りは、アクセスコントロールのもう一つの失敗例です。権限のないユーザーが他のユーザーからセッションIDを取得したときに発生し、不正なユーザがアプリケーションにアクセスして、本来持っていないはずの基礎データを取得することができます。セッション乗っ取りに対する最善の防御は、WS-Securityのプロトコルの厳密な遵守です。

安全なWebサービスを構築する方法

不正なアクセスを防ぐために、SOAP に追加できる基本的な手順と実践があります。安全な SOAPのWeb サービスの作成には、SOAPのヘッダーを通じたセキュリティ層の追加が必要であり、その方法については、こちらで詳しく説明されています。   

ユーザー名とパスワードを変数として追加することで、SOAP のメッセージを生成するたびに、ヘッダーにこれらのクレデンシャルが含まれるようになります。これで、ユーザーがウェブサービスを呼び出すときはいつでも、ユーザー名とパスワードが要求されるようになります。 

これは、SOAPのWebサービスを保護する方法の1つに過ぎません。他の方法としては、X.509 認証による SOAPのメッセージの暗号化や Kerberos のようなサービスによる認証があります。

SOAPセキュリティのベストプラクティス

Web サービスは今日のデジタル環境に不可欠であるため、SOAPのセキュリティのベストプラクティスの早急な実施が必要であり、それには、定期テスト、IAM(アイデンティティとアクセス管理)、リクエスト監視、入力検証、冗長なセキュリティ標準が含まれます。

定期テスト

あなたのAPIがあらゆる脅威に耐えられることを確認し、攻撃者が利用するかもしれない脆弱性を見つけるために、様々なテストを実行できますが、最も一般的なテストは、「ファジング・テスト」と「インジェクション・テスト」の2つです。

ファジング・テストの使用法:ファジング・テストとは、ソフトウェアシステムに無効なデータやランダムなデータを送信し、その反応を見るプロセスであり、その過程で、コーディングのエラーやセキュリティの問題を発見することができます。SOAP の場合、ファジング・テストを使って、予期しない入力に対して API がどのように反応するかを判断することができます。  

そのために使えるツールの一つが、以前はPeach Fuzzerとして知られていたProtocol Fuzzerです。企業や政府機関では、ファジング・テストによってゼロデイ攻撃を回避するためにProtocol Fuzzerが広く使われており、予期せぬ入力をAPIに送って、いつ壊れるかを確認するプロセスを自動化するための、幅広い機能が備わっています。

ハッカーが悪意のあるコードを持ち込む可能性のある脆弱性の検出には、インジェクション・テストを使うといいでしょう。  

インジェクション・テストの使用法:インジェクションテストは、例えば、「SOAP API の XML メッセージに含まれる SQL が、受信側のシステムで処理されるかどうかを確認する」というように、悪意のあるコードをテストセットとして注入し、その結果を見ることで行われます。例えば、含まれるSQL文がテーブルやデータベース全体を削除できるかどうか、サンプルデータベースやテーブルでテストしてみましょう。

IAM(アイデンティティとアクセス管理)

IAM(アイデンティティとアクセス管理)は、サイバーセキュリティの最も基本的かつ不可欠なコンセプトの1つであり、それにはパスワードやユーザー名から高度な認証技術まで、あらゆるものが含まれます。すべての組織は、すべてのシステムで優れたIAMを実践し、ユーザー管理のポリシーと手順の監査の定期的な実施が必要です。  

強力なIAMポリシーは、権限のないユーザーが間違った時間にアプリケーションにアクセスしたり、他のユーザーのセッション・トークンを盗んでセッションを乗っ取ることを防ぎます。

IAMの使用法: プラットフォームによっては、Webサービスが組織のどのメンバーにどのような情報やツールを送信するかを追跡することができます(RBAC又はロールベースのアクセスコントロール)。IAMのもう一つの部分はシングルサインオン(SSO)であり、これはウェブサービスにかなり簡単に追加することができます。  これを実践している一例がAWS(Amazon Web Services)であり、AWSは、Amazon S3でSOAP用のIAMを実装しています。

リクエスト監視

リクエストとSOAPのメッセージに異常がないかを監視することも、セキュリティ上不可欠な活動であり、リクエストの監視によって、脆弱性やデータ漏洩を素早く発見・解決できる可能性が高くなります。  

リクエスト監視の使用法:リクエスト監視には、定期的に異常がないかどうかをチェックできる、 ある種のログシステムが必要です。 一般的なリクエスト監視のオプションは、Apache Software Foundation の SOAPモニター であり、このツールは、特にリクエストとレスポンスの妥当性をチェックすることができます。

入力検証

SOAPの入力検証には、「スキーマ準拠の検証」と「SOAPのレスポンスの検証」の2つの側面があります。  

スキーマ準拠の検証は、メッセージがXMLスキーマとWSDL(Webサービス記述言語)のガイドラインに従っていることを確認し、SOAPのレスポンス検証は、メッセージに対するレスポンスが正しい形式であることを確認します。   

入力検証の使用法:上記の両方の方法を使って、不規則なメッセージングの発見や単純なエラー回避をすることができ、これは基本的にSOAPプロトコル自体に組み込まれています。  

 幅広いAPIテストのツールを提供するSoapUIは、SOAPやWSDLプロトコルに準拠したメッセージの検証サービスを提供しており、そのWebサイトでは、使用法のチュートリアルが提供されています。

冗長なセキュリティ標準

WSDL、XML文書標準、SOAP標準は多くの場所で重複しており、これらの冗長なセキュリティ標準は、他のいくつかのシステムによって得られるレベルの保険を提供します。冗長なセキュリティ標準とは、データを公開する機会を減らし、ハッカーに悪用される前に脆弱性を発見する機会を増やすということです。  

冗長なセキュリティ標準の使用法:複数のセキュリティ標準を実装し、上記のベストプラクティスをすべて適用する API 管理のオプションを調べます。

Integrate.io の API 管理サービスでは、SOAP のセキュリティに関するあらゆるニーズに対して、さまざまなセキュリティ対策や標準の実装が可能です。

Integrate.ioによるSOAPのセキュリティ

理想的な SOAP のセキュリティには、専門家のサポートと定期的な監視が必要ですが、それは、企業が Integrate.io を利用する多くの理由の 1 つに過ぎません。当社のデベロッパーとエンジニアのチームは、API を送受信する際のリスクを理解しており、私達はマイクロサービス、ウェブサービス、クラウドコンピューティングの時代において、定期的な API テストはサイバーセキュリティの不可欠な要素であると思っています。  

Integrate.io は、APIとSOAPメッセージングの安全性と管理のサポートのために、広範なSOAPサービスを提供しています。Integrate.io を使って SOAP のセキュリティを上げる方法については、ぜひ今すぐお問い合わせください。14 日間の無料トライアルで、当社が最も包括的な API 管理プラットフォームを提供している理由をぜひご確認ください。

よくある質問 SOAP セキュリティ

SOAPとは何ですか?

SOAP(Simple Object Access Protocol)は、ウェブサービス間で構造化された情報を交換するために使用されるメッセージング・プロトコルです。メッセージのカプセル化にXMLを使用するなど、通信のための標準化されたフォーマットを提供します。

なぜSOAPベースのアプリケーションではセキュリティが重要なのですか?

SOAPベースのアプリケーションでは、機密データの保護、メッセージの完全性の確保、ユーザーの認証と承認、不正アクセスの防止、Webサービス間の安全な通信チャネルの確立のために、セキュリティが極めて重要です。

SOAPベースのアプリケーションでよくあるセキュリティの脅威は何ですか?

SOAP ベースのアプリケーションにおける一般的なセキュリティ脅威には、不正アクセス、情報漏洩、メッセージの改ざん、リプレイ攻撃、XML インジェクション、サービス拒否(DoS)攻撃などがあります。これらの脅威は、アプリケーションとそのデータの機密性、完全性、可用性を損なう可能性があります。

SOAPが提供する主なセキュリティ機能は何ですか?

SOAPは、データの機密性と完全性のための暗号化とデジタル署名、ユーザ名/パスワードやX.509証明書のような認証メカニズム、WS-Securityによるメッセージレベルのセキュリティ、SSL/TLSのようなプロトコルによるトランスポートレベルのセキュリティなど、いくつかのセキュリティ機能を提供します。

SOAPにおけるトランスポートレベルのセキュリティはどのように機能するのか?

SOAPにおけるトランスポートレベルのセキュリティは、SSL/TLSプロトコルの使用など、基礎となる通信チャネルの安全確保を伴います。これにより、クライアントとサーバー間で送信されるデータの機密性が保たれ、傍受や盗聴から保護されます。

SOAPセキュリティとは何ですか?

SOAP セキュリティとは、SOAP ベースのアプリケーションにセキュリティ対策や仕組みを実装することを指します。データを保護し、ユーザーを認証し、メッセージの完全性を確保し、セキュリティの脅威から保護することを目的とした様々なテクニックやプロトコルを含みます。

なぜSOAPセキュリティが重要なのか?

SOAPセキュリティが重要なのは、SOAPベースのアプリケーション間で送信されるデータの機密性、完全性、可用性を維持するのに役立つからです。機密情報を保護し、不正アクセスを防ぎ、メッセージの真正性を確保し、潜在的なセキュリティの脆弱性や攻撃から守ります。

関連記事
https://blog.dreamfactory.com/how-do-you-test-a-soap-and-rest-service/