説明
OSS の public-read ACL は公開読み取り、public-read-write は公開読み取りと書き込みを許可する設定です。実際のアクセスにはオブジェクト ACL、ポリシー、パブリックアクセスのブロックも影響するため、併せて確認してください。
インターネットから接続できるエンドポイントと、匿名アクセスの権限は異なります。通常の内部バケットは private にし、公開するデータがある場合は目的と範囲を明確に限定してください。
想定される影響
- 公開読み取りが適用されるオブジェクトの内容が外部に漏れる可能性があります。
- 公開書き込みが許可されると、不正なアップロード、変更、削除によってサービスやストレージ費用に影響する可能性があります。
対処方法
- バケット ACL を
privateにし、オブジェクト ACL とバケットポリシーの不要な公開権限も削除してください。 - 公開が不要なストレージではパブリックアクセスのブロックを使用し、実際の要求結果を確認してください。
- 公開コンテンツと内部データを分離してください。公開読み取りが必要でも、書き込みと管理は承認済みのプリンシパルに限定してください。
例
ACL 設定を比較する例です。既存バケットを変更する際は、同じ名前と Terraform リソースアドレスを維持してください。
変更前
hcl
resource "alicloud_oss_bucket" "public_bucket" {
bucket = "bucket-170309-acl"
acl = "public-read"
}
公開読み取りの ACL を要求しています。ほかのアクセス制御で拒否されなければ、オブジェクトの内容が公開される可能性があります。
変更後
hcl
resource "alicloud_oss_bucket" "private_bucket" {
bucket = "bucket-170309-acl"
acl = "private"
}
バケット ACL を非公開にしています。別に設定されたポリシーとオブジェクト ACL の公開権限も確認する必要があります。