설명
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
}