すべてのプロダクト
Search
ドキュメントセンター

Object Storage Service:悪意のあるアクセストラフィックによって引き起こされる予期せぬ高額な料金のリスクを軽減

最終更新日:Dec 20, 2023

Object Storage Service (OSS) バケットが攻撃されたり、不正なトラフィックが発生したりすると、帯域幅またはトラフィックスパイクが発生します。 これにより、ストレージ料金が通常よりも予想外に高くなります。 セキュリティリスクと予期しない請求を防ぐために、このトピックで提供されているセキュリティのベストプラクティスを使用してバケットを保護することを推奨します。

重要

以下のベストプラクティスは、完全なセキュリティソリューションではなく、一般的なセキュリティ対策です。 これらのベストプラクティスは参照用にのみ提供されており、ビジネスシナリオには適していない場合があります。 データセキュリティの脅威を認識し、必要な予防措置と予防措置を講じることをお勧めします。

予想外に高い料金

バケットに対する攻撃と不正なトラフィックは、次の経済的影響を引き起こす可能性があります。

  • 高い請求額: 余分なOSS帯域幅とトラフィックが消費され、消費されたトラフィックリソースの料金を支払う必要があります。

  • マイナスのアカウント残高: 課金サイクルや課金処理の遅延などの要因により、従量課金制でOSSを使用している場合、アカウントの残高がゼロになってもサービスはすぐに中断されません。 これにより、マイナスのアカウント残高が発生します。 バケットが攻撃されたり、不正なトラフィックが発生したりすると、帯域幅またはトラフィックスパイクが発生します。 Alibaba Cloudアカウントの残高よりも多く課金されます。

バケットまたはオブジェクトのACLをprivateに設定する

匿名ユーザーを含むすべてのユーザーがOSSリソースからデータを読み書きする必要がない限り、バケットまたはオブジェクトのアクセス制御リスト (ACL) をpublic-readまたはpublic-read-writeに設定しないでください。 たとえば、バケットのACLをpublic-readまたはpublic-read-writeに設定した場合、次の変更が有効になります。

  • Public-read-write: 匿名ユーザーを含むすべてのユーザーが、バケット内のオブジェクトからデータを読み書きできます。

    警告

    すべてのインターネットユーザーは、バケット内のオブジェクトにアクセスし、バケットにデータを書き込むことができます。 これにより、データリークや予想外に高い料金が発生する可能性があります。 ユーザーが禁止されているデータや情報をバケット内のオブジェクトに書き込むと、正当な利益や権利が侵害される可能性があります。 必要な場合を除き、バケットACLをpublic-read-writeに設定しないことをお勧めします。

  • 公開読み取り: バケット内のオブジェクトにデータを書き込むことができるのはバケット所有者だけです。 匿名ユーザーを含む他のユーザーは、バケット内のオブジェクトからデータを読み取ることができます。

    警告

    すべてのインターネットユーザーがバケット内のオブジェクトにアクセスできます。 これにより、データリークや予想外に高い料金が発生する可能性があります。 バケットACLをpublic-readに設定する場合は注意してください。

パブリック読み取りアクセスまたはパブリック読み取り /書き込みアクセスを許可するバケットまたはオブジェクトは、データ侵害につながる可能性があります。 そのため、オブジェクトACLまたはバケットACLをprivateに設定することを推奨します。 バケットACLをprivateに設定した場合、バケット所有者のみがバケット内のオブジェクトからデータを読み書きできます。 したがって、オブジェクトACLまたはバケットACLをprivateに変更する前に、ビジネスに影響がないことを確認してください。

複数のメソッドを使用して、オブジェクトACLまたはバケットACLをprivateに設定できます。 詳細については、「バケットACL」および「オブジェクトのACLの設定」をご参照ください。

CloudMonitorアラートルールの設定

アラートルールを作成して、OSSリソースの使用状況とステータスを監視できます。 アラートルールがトリガーされると、CloudMonitorはアラート通知を送信し、例外をできるだけ早くチェックして処理できるようにします。

たとえば、バケットのアラートルールを設定してリソースの使用状況を監視し、指定された使用状況のしきい値に達したときにテキストメッセージ、電子メール、DingTalkでアラートを送信し、Simple Log Serviceで指定されたLogstoreにアラート情報を書き込むことができます。

次の図は、インターネットのインバウンドトラフィックが100 MB以上の場合にトリガーされるアラートルールを設定する方法を示しています。

alert.jpg

Alibaba Cloudアカウントに属するバケットまたはすべてのOSSリソースのアラートルールを設定できます。 アラートルールの設定方法の詳細については、「アラートルールの作成」をご参照ください。

ホットリンク保護の設定

バケットのリファラーホワイトリストを設定して、バケット内のリソースへの不正アクセスを防止できます。

OSSは、リクエスト内のRefererの値に基づいて、リクエストの送信元を決定します。 ブラウザがwebサーバーにリクエストを送信すると、リクエストの送信元を指定するためにRefererがリクエストヘッダーに含まれます。 OSSは、リクエスト内のRefererの値に基づいて、バケットへのリクエストを許可するかどうかを決定します。 リクエストのRefererの値がバケットに設定されているRefererホワイトリストにある場合、リクエストは許可されます。 リクエストのRefererの値がRefererホワイトリストにない場合、またはバケットに設定されているRefererブラックリストにある場合、リクエストは拒否されます。

次の図は、リファラーホワイトリストにhttps://www.example.comを含み、空のリファラーヘッダーを持つリクエストを拒否するホットリンク保護構成を示しています。referer

上記のホットリンク保護が設定された後、許可されたユーザーがブラウザからexampleobject.pngイメージをhttps://www.example.comにアップロードするリクエストを送信した場合、https://www.example.comはRefererヘッダーの値として含まれ、OSSはブラウザからのリクエストを許可します。

別のユーザーがexampleobject.pngイメージをhttps://example.orgにホットリンクしようとすると、https://example.orgはイメージのリクエストにリファラーヘッダーの値として含まれます。 値はリファラーホワイトリストと一致するため、OSSはリクエストを拒否します。

詳細については、「ホットリンク保護」をご参照ください。

CORS ルールの設定

クロスオリジンリソース共有 (CORS) は、webアプリケーションサーバーがクロスオリジンアクセスを制御できるようにするためにHTML5によって提供される標準のクロスオリジンソリューションです。 これにより、オリジン間のデータ伝送のセキュリティが確保されます。 ブラウザは、同じオリジンのポリシーメカニズムを使用して、潜在的に悪意のあるデータを分離し、クロスオリジンリクエストをデフォルトで拒否します。 たとえば、あるWebサイトのJavaScriptコードが別のWebサイトでホストされているリソースをリクエストした場合、ブラウザはそのリクエストを拒否します。

OSSでは、ビジネス要件に基づいてクロスオリジンリクエストを許可または拒否するようにCORSルールを設定できます。 たとえば、次の図に示すCORS設定を使用して、www.aliyun.comからバケットへのHTTP GETリクエストを許可できます。

cors

詳細については、「CORS の設定」をご参照ください。

シーケンシャルプレフィックスによるオブジェクトの命名を避ける

多数のオブジェクトをアップロードし、タイムスタンプや文字、日付、参照可能な数値IDなどのシーケンシャルプレフィックスを使用して名前を付けると、攻撃者は名前のルールを把握し、すべてのオブジェクトを取得するためのスクリプトを作成できます。 これは、データ漏洩の原因となる。 この場合、タイムスタンプの数字の順序を逆にして、オブジェクト名またはオブジェクト名に16進数のハッシュプレフィックスを追加することをお勧めします。 これにより、オブジェクト名がトラバースされるリスクを低減することができる。 詳細については、「OSSパフォーマンスとスケーラビリティのベストプラクティス」をご参照ください。