작업과 접근 주체에 와일드카드가 포함된 OSS 버킷 정책

OSS 버킷 정책의 와일드카드 허용을 필요한 주체, 작업과 리소스로 제한하여 의도하지 않은 데이터 접근과 변경을 방지합니다.

설명

OSS 버킷 정책에서 작업과 접근 주체를 와일드카드로 허용하면 필요한 범위를 넘어 권한을 부여할 수 있습니다. oss:*는 광범위한 작업을 포함하지만, oss:Get*처럼 특정 작업군을 나타내는 와일드카드가 쓰기나 삭제까지 허용하는 것은 아닙니다. 작업과 버킷·객체 경로를 함께 확인해야 합니다.

실제 접근 권한은 정책의 조건, 명시적 거부, ACL 및 공개 접근 차단 설정에 따라 달라집니다. acl = "private"만으로 정책에 의한 접근이 모두 차단되지는 않습니다. OSS에서 빈 Principal 배열도 모든 주체를 뜻하므로 접근 제한으로 사용하지 마세요.

잠재적 영향

  • 실제로 공개 읽기가 허용된 객체는 의도한 사용자 외에도 내용이 노출될 수 있습니다. oss:Get*가 포함되었다는 이유로 쓰기나 삭제까지 허용된다고 판단해서는 안 됩니다.
  • 별표가 포함된 작업 범위에 쓰기나 삭제가 있고 해당 리소스에 실제로 적용되면, 그 권한이 필요 없는 주체도 데이터를 변경하거나 삭제할 수 있습니다.
  • 버킷 설정을 바꾸는 작업까지 허용되면 접근 제어 등의 설정이 변경될 수 있습니다. 작업별 제약과 리소스 범위를 함께 확인해야 합니다.

해결 방법

  • 필요한 접근 주체, 작업, 버킷 또는 객체 경로를 명시하고 불필요한 와일드카드 허용을 제거하세요. 일부 읽기 공개가 필요하더라도 쓰기나 관리 작업까지 허용하지 마세요.
  • 정책의 조건과 명시적 거부, ACL, 공개 접근 차단을 함께 검토하세요. 유효한 정책과 실제 요청 조건으로 권한을 확인하세요.
  • 공급자 1.220.0부터 인라인 policy는 사용 중단 대상으로 지정되었습니다. 새 구성은 alicloud_oss_bucket_policy로 관리하고, 기존 구성을 전환할 때는 필요한 권한이 유지되는지 확인하세요.

예시

다음 예시는 공급자 1.293.0에서 지원하는 기존 인라인 정책 형식으로 허용과 명시적 거부를 비교합니다. 버킷 이름은 사용 가능한 고유한 이름으로 바꾸고 정책의 리소스 경로도 함께 맞추세요.

광범위한 작업 허용

hcl
resource "alicloud_oss_bucket" "bucket-policy1" {
  bucket = "bucket-1-policy"
  acl    = "private"

  policy = <<POLICY
  {"Statement": [
    {
        "Action": [
            "oss:*"
        ],
        "Effect": "Allow",
        "Principal": [
            "*"
        ],
        "Resource": [
            "acs:oss:*:*:bucket-1-policy",
            "acs:oss:*:*:bucket-1-policy/*"
        ]
    }
  ],
   "Version":"1"}
  POLICY
}

이 구문은 버킷과 객체에 대해 모든 주체에게 oss:*를 허용하려는 구성입니다. 공개 접근 차단과 작업별 제약을 함께 확인하고, 실제로 필요한 주체와 작업만 허용하세요.

광범위한 명시적 거부

hcl
resource "alicloud_oss_bucket" "bucket-policy1" {
  bucket = "bucket-1-policy"
  acl    = "private"

  policy = <<POLICY
  {"Statement": [
    {
        "Action": [
            "oss:*"
        ],
        "Effect": "Deny",
        "Principal": [
            "*"
        ],
        "Resource": [
            "acs:oss:*:*:bucket-1-policy",
            "acs:oss:*:*:bucket-1-policy/*"
        ]
    }
  ],
   "Version":"1"}
  POLICY
}

이 명시적 거부가 적용되면 필요한 작업까지 막을 수 있습니다. 일괄 거부를 그대로 적용하기보다 필요한 사용자의 접근 권한을 유지하면서 불필요한 허용을 제거하거나 범위를 줄이세요.

참조