説明
OSS の静的ウェブサイト機能は、HTML やスクリプトなどの静的ファイルを提供します。機能自体が脆弱なわけではなく、website 設定やインターネットのエンドポイントがあるだけでは匿名読み取りは許可されません。実際の公開範囲は、ACL、ポリシー、パブリックアクセスのブロック設定によって異なります。
公開するウェブコンテンツと内部ログ、バックアップ、設定ファイルを分け、公開の目的と範囲を明確に管理してください。
想定される影響
- 公開読み取りが許可されると、意図しないファイルや設定情報が漏れる可能性があります。
- OSS に保存されたコンテンツの変更には別の書き込み権限が必要なので、アップロード経路の権限も制限する必要があります。
対処方法
- 静的ホスティングが必要なバケットだけで
websiteを使用し、内部ストレージから不要な構成を削除してください。 - 公開対象のオブジェクトだけを読めるように権限を確認し、書き込みと削除を承認済みのデプロイ主体に限定してください。
- オブジェクト ACL とポリシーを併せて確認し、実際のウェブ経路で公開対象と非公開対象のアクセスを試験してください。
例
ウェブサイト設定の有無を比較する抜粋です。既存のバケットを変更する際は、名前と Terraform リソースアドレスを維持してください。
ウェブサイトの設定
hcl
resource "alicloud_oss_bucket" "website_bucket" {
bucket = "bucket-1-website"
website {
index_document = "index.html"
error_document = "error.html"
}
}
インデックス文書とエラー文書を指定しています。この設定だけでは、ファイルが公開されているとは判断できません。
非公開用途の構成
hcl
resource "alicloud_oss_bucket" "private_bucket" {
bucket = "bucket-1-acl"
acl = "private"
}
ウェブサイト設定を使わず、非公開の ACL を指定しています。別のポリシーとオブジェクト ACL も内部用途に合わせて制限してください。