qcs:ip
를 사용하여 사용자 액세스 IP를 제한할 수 있습니다. 조건 키는 모든 요청에 적용할 수 있습니다.192.168.1.0/24
에 속하거나 액세스가 IP가 101.226.100.185
또는 101.226.100.186
대역인 경우 객체 업로드 및 객체 다운로드 권한을 부여하는 정책 예시입니다.{"version": "2.0","principal":{"qcs":["qcs::cam::uin/100000000001:uin/100000000002"]},"statement": [{"effect": "allow","action":["name/cos:PutObject","name/cos:GetObject"],"resource":["qcs::cos:ap-guangzhou:uid/1250000000:examplebucket-gz-1250000000/exampleobject"],"condition":{"ip_equal":{"qcs:ip":["192.168.1.0/24","101.226.100.185","101.226.100.186"]}}}]}
vpc:requester_vpc
를 사용하여 사용자 액세스 vpcid를 제한할 수 있습니다. vpcid에 대한 자세한 내용은 Tencent Cloud 제품 Virtual Private Cloud를 참고하십시오.{"statement": [{"action":["name/cos:*"],"condition":{"string_equal":{"vpc:requester_vpc": ["vpc-aqp5jrc1"]}},"effect": "allow","principal":{"qcs":["qcs::cam::uin/100000000001:uin/100000000002"]},"resource":["qcs::cos:ap-beijing:uid/1250000000:examplebucket-1250000000/*"]}],"version": "2.0"}
versionid
는 객체의 버전 번호를 지정합니다. 버전 관리에 대한 자세한 내용은 버전 제어 개요를 참고하십시오. 객체를 다운로드(GetObject)하거나 객체를 삭제할 때(DeleteObject) 요청 매개변수 versionid
를 사용하여 작업할 객체 버전을 지정할 수 있습니다. versionid에는 세 가지 다른 경우가 있습니다.versionid
가 없음: 요청은 기본적으로 최신 버전의 객체에 적용됩니다.versionid
가 빈 문자열인 경우: versionid
요청 매개변수가 전달되지 않은 경우와 동일합니다.versionid
가 "null"
인 경우: 버킷에 대해 버전 관리가 활성화되기 전에 업로드된 객체의 경우 버전 관리가 활성화된 후 버전 번호가 "null"
문자열이 됩니다.cos:versionid
를 사용하여 요청 매개변수 versionid
를 제한할 수 있습니다.{"version":"2.0","statement":[{"principal":{"qcs":["qcs::cam::uin/100000000001:uin/100000000002"]},"effect":"allow","action":["name/cos:GetObject"],"condition":{"string_equal":{"cos:versionid":"MTg0NDUxNTc1NjIzMTQ1MDAwODg"}},"resource":["qcs::cos:ap-guangzhou:uid/1250000000:examplebucket-1250000000/*"]}]}
{"statement":[{"principal":{"qcs":["qcs::cam::uin/100000000001:uin/100000000002"]},"effect":"allow","action":["name/cos:GetObject"],"condition":{"string_equal":{"cos:versionid":"MTg0NDUxNTc1NjIzMTQ1MDAwODg"}},"resource":["qcs::cos:ap-guangzhou:uid/1250000000:examplebucket-1250000000/*"]},{"principal":{"qcs":["qcs::cam::uin/100000000001:uin/100000000002"]},"effect":"deny","action":["name/cos:GetObject"],"condition":{"string_not_equal_if_exist":{"cos:versionid":"MTg0NDUxNTc1NjIzMTQ1MDAwODg"}},"resource":["qcs::cos:ap-guangzhou:uid/1250000000:examplebucket-1250000000/*"]}],"version":"2.0"}
versionid
가 전달되지 않거나 해당 값이 빈 문자열인 경우 GetObject 요청은 기본적으로 최신 버전의 객체를 다운로드합니다. 따라서 다음 조건에서 string_equal_if_exsit를 사용할 수 있습니다.“”
)인 경우 allow 정책도 적용되며 최신 버전의 객체 다운로드 요청만 승인됩니다."condition":{"string_equal_if_exist": {"cos:versionid": ""}}
{"statement":[{"principal":{"qcs":["qcs::cam::uin/100000000001:uin/100000000002"]},"effect":"allow","action":["name/cos:GetObject"],"condition":{"string_equal_if_exist":{"cos:versionid":""}},"resource":["qcs::cos:ap-guangzhou:uid/1250000000:examplebucket-1250000000/*"]},{"principal":{"qcs":["qcs::cam::uin/100000000001:uin/100000000002"]},"effect":"deny","action":["name/cos:GetObject"],"condition":{"string_not_equal":{"cos:versionid":""}},"resource":["qcs::cos:ap-guangzhou:uid/1250000000:examplebucket-1250000000/*"]}],"version":"2.0"}
{"statement":[{"principal":{"qcs":["qcs::cam::uin/100000000001:uin/100000000002"]},"effect":"allow","action":["name/cos:DeleteObject"],"resource":["qcs::cos:ap-guangzhou:uid/1250000000:examplebucket-1250000000/*"]},{"principal":{"qcs":["qcs::cam::uin/100000000001:uin/100000000002"]},"effect":"deny","action":["name/cos:DeleteObject"],"condition":{"string_equal":{"cos:versionid":"null"}},"resource":["qcs::cos:ap-guangzhou:uid/1250000000:examplebucket-1250000000/*"]}],"version":"2.0"}
cos:content-length
를 사용하여 요청 헤더 Content-Length
를 제한하고 업로드할 객체의 파일 크기를 제한할 수 있습니다. 이러한 방식으로 저장 공간을 유연하게 관리하고 너무 크거나 작은 파일을 업로드하여 저장 공간과 네트워크 대역폭을 낭비하지 않도록 할 수 있습니다.cos:content-length
조건 키를 사용하여 서브 계정(uin: 100000000002)에서 업로드한 요청의 Content-Length 헤더 값을 제한할 수 있습니다.{"version":"2.0","statement":[{"principal":{"qcs":["qcs::cam::uin/100000000001:uin/100000000002"]},"effect":"allow","action":["name/cos:PutObject","name/cos:PostObject"],"resource":["qcs::cos:ap-guangzhou:uid/1250000000:examplebucket-1250000000/*"],"condition":{"numeric_less_than_equal":{"cos:content-length":10}}},{"principal":{"qcs":["qcs::cam::uin/100000000001:uin/100000000002"]},"effect":"deny","action":["name/cos:PutObject","name/cos:PostObject"],"resource":["qcs::cos:ap-guangzhou:uid/1250000000:examplebucket-1250000000/*"],"condition":{"numeric_greater_than_if_exist":{"cos:content-length":10}}}]}
{"version":"2.0","statement":[{"principal":{"qcs":["qcs::cam::uin/100000000001:uin/100000000002"]},"effect":"allow","action":["name/cos:PutObject","name/cos:PostObject"],"resource":["qcs::cos:ap-guangzhou:uid/1250000000:examplebucket-1250000000/*"],"condition":{"numeric_greater_than_equal":{"cos:content-length":2}}},{"principal":{"qcs":["qcs::cam::uin/100000000001:uin/100000000002"]},"effect":"deny","action":["name/cos:PutObject","name/cos:PostObject"],"resource":["qcs::cos:ap-guangzhou:uid/1250000000:examplebucket-1250000000/*"],"condition":{"numeric_less_than_if_exist":{"cos:content-length":2}}}]}
application/xml
및 image/jpeg
와 같이 RFC 2616(MIME)에 정의된 HTTP 요청 콘텐츠 유형이어야 합니다. 자세한 내용은 Common Request Headers를 참고하십시오.cos:content-type
을 사용하여 요청 헤더 Content-Type
을 제한할 수 있습니다.cos:content-type
조건 키를 사용하여 uin이 100000000002인 서브 계정이 시작한 업로드 요청에서 Content-Type 헤더의 콘텐츠를 제한한다고 가정합니다.{"version":"2.0","statement":[{"principal":{"qcs":["qcs::cam::uin/100000000001:uin/100000000002"]},"effect":"allow","action":["name/cos:PutObject"],"resource":["qcs::cos:ap-guangzhou:uid/1250000000:examplebucket-1250000000/*"],"condition":{"string_equal":{"cos:content-type":"image/jpeg"}}},{"principal":{"qcs":["qcs::cam::uin/100000000001:uin/100000000002"]},"effect":"deny","action":["name/cos:PutObject"],"resource":["qcs::cos:ap-guangzhou:uid/1250000000:examplebucket-1250000000/*"],"condition":{"string_not_equal_if_exist":{"cos:content-type":"image/jpeg"}}}]}
response-content-type
을 추가하여 응답의 Content-Type 헤더 값을 지정할 수 있습니다.cos:response-content-type
조건 키를 사용하여 요청이 요청 매개변수인 response-content-type
을 전달해야 하는지 여부를 지정할 수 있습니다.response-content-type
매개변수는 요청 매개변수이며 요청이 시작될 때 urlencode가 필요합니다(urlencode된 값: response-content-type=image%2Fjpeg
). 따라서 Policy를 설정할 때 "image/jpeg"도 인코딩(urlencode)해야 하며 "image%2Fjpeg"를 입력해야 합니다.{"version":"2.0","statement":[{"principal":{"qcs":["qcs::cam::uin/100000000001:uin/100000000002"]},"effect":"allow","action":["name/cos:GetObject"],"resource":["qcs::cos:ap-guangzhou:uid/1250000000:examplebucket-1250000000/*"],"condition":{"string_equal":{"cos:response-content-type":"image%2Fjpeg"}}},{"principal":{"qcs":["qcs::cam::uin/100000000001:uin/100000000002"]},"effect":"deny","action":["name/cos:GetObject"],"resource":["qcs::cos:ap-guangzhou:uid/1250000000:examplebucket-1250000000/*"],"condition":{"string_not_equal_if_exist":{"cos:response-content-type":"image%2Fjpeg"}}}]}
cos:secure-transport
를 사용하여 HTTPS 프로토콜 사용 요청 제한{"version":"2.0","statement":[{"principal":{"qcs":["qcs::cam::uin/100000000001:uin/100000000002"]},"effect":"allow","action":["name/cos:GetObject"],"resource":["qcs::cos:ap-guangzhou:uid/1250000000:examplebucket-1250000000/*"],"condition":{"bool_equal":{"cos:secure-transport":"true"}}}]}
{"version":"2.0","statement":[{"principal":{"qcs":["qcs::cam::uin/100000000001:uin/100000000002"]},"effect":"deny","action":["*"],"resource":["qcs::cos:ap-guangzhou:uid/1250000000:examplebucket-1250000000/*"],"condition":{"bool_equal":{"cos:secure-transport":"false"}}}]}
x-cos-storage-class
를 사용하여 객체를 업로드할 때 객체의 스토리지 클래스를 지정하거나 수정할 수 있습니다.cos:x-cos-storage-class
를 사용하여 요청 헤더 x-cos-storage-class
를 제한하여 스토리지 클래스 수정 요청을 제한할 수 있습니다.{"version":"2.0","statement":[{"principal":{"qcs":["qcs::cam::uin/100000000001:uin/100000000002"]},"effect":"allow","action":["name/cos:PutObject"],"resource":["qcs::cos:ap-guangzhou:uid/1250000000:examplebucket-1250000000/*"],"condition":{"string_equal":{"cos:x-cos-storage-class":"STANDARD"}}},{"principal":{"qcs":["qcs::cam::uin/100000000001:uin/100000000002"]},"effect":"deny","action":["name/cos:PutObject"],"resource":["qcs::cos:ap-guangzhou:uid/1250000000:examplebucket-1250000000/*"],"condition":{"string_not_equal_if_exist":{"cos:x-cos-storage-class":"STANDARD"}}}]}
x-cos-acl
을 사용하여 ACL을 지정하거나 객체 또는 버킷 ACL을 수정할 수 있습니다. ACL에 대한 자세한 내용은 ACL을 참고하십시오.private
, public-read
, public-read-write
, authenticated-read
.default
, private
, public-read
, authenticated-read
, bucket-owner-read
, bucket-owner-full-control
.cos:x-cos-acl
을 사용하여 요청 헤더 x-cos-acl
을 제한하고 객체/버킷 ACL 수정 요청을 제한할 수 있습니다.private
값을 가진 x-cos-acl 헤더를 전달하도록 요구합니다.{"version":"2.0","statement":[{"principal":{"qcs":["qcs::cam::uin/100000000001:uin/100000000002"]},"effect":"allow","action":["name/cos:PutObject"],"resource":["qcs::cos:ap-guangzhou:uid/1250000000:examplebucket-1250000000/*"],"condition":{"string_equal":{"cos:x-cos-acl":"private"}}},{"principal":{"qcs":["qcs::cam::uin/100000000001:uin/100000000002"]},"effect":"deny","action":["name/cos:PutObject"],"resource":["qcs::cos:ap-guangzhou:uid/1250000000:examplebucket-1250000000/*"],"condition":{"string_not_equal_if_exist":{"cos:x-cos-acl":"private"}}}]}
cos:prefix
를 사용하여 요청 매개변수 prefix를 제한할 수 있습니다./
와 같은 특수 문자가 포함된 경우 버킷 정책에 쓰기 전에 값을 인코딩(urlencode)해야 합니다.{"statement":[{"principal":{"qcs":["qcs::cam::uin/100000000001:uin/100000000002"]},"effect":"allow","action":["name/cos:GetBucket"],"resource":["qcs::cos:ap-guangzhou:uid/1250000000:examplebucket-1250000000/*"],"condition":{"string_equal":{"cos:prefix":"folder1"}}},{"principal":{"qcs":["qcs::cam::uin/100000000001:uin/100000000002"]},"effect":"deny","action":["name/cos:GetBucket"],"resource":["qcs::cos:ap-guangzhou:uid/1250000000:examplebucket-1250000000/*"],"condition":{"string_equal_if_exist":{"cos:prefix":"folder1"}}}],"version":"2.0"}
cos:tls-version
을 사용하여 HTTPS 요청의 TLS 버전을 제한할 수 있습니다. 해당 값은 Numric 유형이며 1.0, 1.1 또는 1.2와 같은 부동 소수점을 지원합니다.요청 시나리오 | 예상 결과 |
TLS v1.0을 사용한 HTTPS 요청 | 403, 실패 |
TLS v1.2를 사용한 HTTPS 요청 | 200, 성공 |
{"version":"2.0","statement":[{"principal":{"qcs":["qcs::cam::uin/100000000001:uin/100000000002"]},"effect":"allow","action":["*"],"resource":["qcs::cos:ap-guangzhou:uid/1250000000:examplebucket-1250000000/*"],"condition":{"numeric_equal":{"cos:tls-version":1.2}}}]}
요청 시나리오 | 예상 결과 |
TLS v1.0을 사용한 HTTPS 요청 | 403, 실패 |
TLS v1.2를 사용한 HTTPS 요청 | 200, 성공 |
{"version":"2.0","statement":[{"principal":{"qcs":["qcs::cam::uin/100000000001:uin/100000000002"]},"effect":"allow","action":["*"],"resource":["qcs::cos:ap-guangzhou:uid/1250000000:examplebucket-1250000000/*"],"condition":{"numeric_greater_than_equal":{"cos:tls-version":1.2}}},{"principal":{"qcs":["qcs::cam::uin/100000000001:uin/100000000002"]},"effect":"deny","action":["*"],"resource":["qcs::cos:ap-guangzhou:uid/1250000000:examplebucket-1250000000/*"],"condition":{"numeric_less_than_if_exist":{"cos:tls-version":1.2}}}]}
qcs:request_tag
를 사용하여 PutBucket 또는 PutBucketTagging 요청을 시작할 때 사용자가 지정된 버킷 태그를 포함하도록 제한할 수 있습니다.<a,b>
및 <c,d>
를 설정한 후에만 권한을 얻을 수 있음을 나타냅니다.for_any_value:string_equal
은 A와 B가 교차하는 경우 요청이 적용됨을 나타냅니다.for_all_value:string_equal
은 A가 B의 subset인 경우 요청이 적용됨을 나타냅니다.for_any_value:string_equal
을 사용하는 경우 해당 정책 및 요청은 다음과 같습니다.요청 시나리오 | 예상 결과 |
PutBucket, 요청 헤더 x-cos-tagging: a=b&c=d | 200, 성공 |
PutBucket, 요청 헤더 x-cos-tagging: a=b | 200, 성공 |
PutBucket, 요청 헤더 x-cos-tagging: a=b&c=d&e=f | 200, 성공 |
{"version": "2.0","statement": [{"principal":{"qcs":["qcs::cam::uin/100000000001:uin/100000000002"]},"effect": "allow","action":["name/cos:PutBucket"],"resource": "*","condition":{"for_any_value:string_equal":{"qcs:request_tag": ["a&b","c&d"]}}}]}
for_all_value:string_equal
을 사용하는 경우 해당 정책 및 요청은 다음과 같습니다.요청 시나리오 | 예상 결과 |
PutBucket, 요청 헤더 x-cos-tagging: a=b&c=d | 200, 성공 |
PutBucket, 요청 헤더 x-cos-tagging: a=b | 200, 성공 |
PutBucket, 요청 헤더 x-cos-tagging: a=b&c=d&e=f | 403, 실패 |
{"version": "2.0","statement": [{"principal":{"qcs":["qcs::cam::uin/100000000001:uin/100000000002"]},"effect": "allow","action":["name/cos:PutBucket"],"resource": "*","condition":{"for_all_value:string_equal": {"qcs:request_tag": ["a&b","c&d"]}}}]}
문제 해결에 도움이 되었나요?