HTTPS를 강제하지 않는 Alicloud OSS 버킷

버킷 정책에서 암호화되지 않은 요청을 거부하세요.

설명

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
}

참조