Alicloud OSSバケットでHTTPSが必須になっていない

バケットポリシーで暗号化されていないリクエストを拒否してください。

説明

OSSはHTTPとHTTPSの両方に対応しています。HTTPSを必須にするポリシーがなければ、他の権限設定によって平文のリクエストが許可される場合があります。

想定される影響

HTTPで送信したオブジェクトのデータやリクエスト情報が、通信中に漏えいしたり改ざんされたりするおそれがあります。

対処方法

バケットとオブジェクトに対して、acs:SecureTransportがfalseのリクエストを明示的に拒否してください。HTTPSだけを許可するAllow文では、他のポリシーによるHTTPの許可を無効化できません。

例

以下は同じ通信条件のAllowをDenyに変更する例です。バケット所有者のUIDと名前を変数に指定し、既存のポリシーに拒否文を追加してください。

変更前

hcl
resource "alicloud_oss_bucket" "bucket" {
  bucket = var.bucket_name
  policy = <<POLICY
{
  "Version": "1",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": ["*"],
      "Action": ["oss:*"],
      "Resource": [
        "acs:oss:*:${var.bucket_owner_uid}:${var.bucket_name}",
        "acs:oss:*:${var.bucket_owner_uid}:${var.bucket_name}/*"
      ],
      "Condition": {
        "Bool": {
          "acs:SecureTransport": ["false"]
        }
      }
    }
  ]
}
POLICY
}

変更後

hcl
resource "alicloud_oss_bucket" "bucket" {
  bucket = var.bucket_name
  policy = <<POLICY
{
  "Version": "1",
  "Statement": [
    {
      "Effect": "Deny",
      "Principal": ["*"],
      "Action": ["oss:*"],
      "Resource": [
        "acs:oss:*:${var.bucket_owner_uid}:${var.bucket_name}",
        "acs:oss:*:${var.bucket_owner_uid}:${var.bucket_name}/*"
      ],
      "Condition": {
        "Bool": {
          "acs:SecureTransport": ["false"]
        }
      }
    }
  ]
}
POLICY
}

参考資料