릴리스 노트
제품 공지
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-beijing:uid/1250000000:examplebucket-bj-1250000000/*","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"]}}}]}
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_exist를 사용할 수 있습니다.“”)인 경우 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 헤더의 콘텐츠를 제한한다고 가정합니다.string_equal_ignore_case 및 string_not_equal_ignore_case의 사용을 권장합니다. 그 이유는 string_equal 또는 string_not_equal을 사용할 경우, text/html 형식의 파일 업로드를 제한하려 할 때 text/Html, tExt/html 등 대소문자가 혼합된 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_ignore_case":{"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_ignore_case_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)해야 합니다.folder1/여야 함을 규정합니다. prefix 값에 특수 문자 /가 포함되어 있으므로, 정책을 작성하기 전에 해당 값을 urlencode 처리해야 하며, 따라서 정책 구문에서는 folder1%2F로 표현됩니다.{"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%2F"}}},{"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_not_equal_if_exist":{"cos:prefix":"folder1%2F"}}}],"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"]}}}]}
x-cos-forbid-overwrite 헤더를 반드시 포함하고, 그 값이 문자열 true여야 한다는 조건을 설정합니다.{"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-forbid-overwrite": "true"}}},{"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-forbid-overwrite": "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": {"string_equal": {"cos:host": "examplebucket-1250000000.cos.ap-guangzhou.myqcloud.com"}}},{"principal": {"qcs": ["qcs::cam::uin/100000000001:uin/100000000002"]},"effect": "allow","action": ["*"],"resource": ["qcs::cos:ap-guangzhou:uid/1250000000:examplebucket-1250000000/*"],"condition": {"string_not_equal": {"cos:host": "examplebucket-1250000000.cos.ap-guangzhou.myqcloud.com"}}}]}
{"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/folder1/*"],"condition": {"string_equal": {"cos:host": "mydomain1.com"}}},{"principal": {"qcs": ["qcs::cam::uin/100000000001:uin/100000000002"]},"effect": "deny","action": ["name/cos:GetObject"],"resource": ["qcs::cos:ap-guangzhou:uid/1250000000:examplebucket-1250000000/folder1/*"],"condition": {"string_not_equal": {"cos:host": "mydomain1.com"}}}]}
cos:object-lock-mode를 통해 사용자가 객체를 업로드할 때 반드시 객체 잠금을 설정하고, 고정된 모드를 사용하도록 제한할 수 있습니다.{"statement": [{"action": ["name/cos:PutObject","name/cos:InitiateMultipartUpload","name/cos:PutObjectRetention"],"effect": "allow","principal": {"qcs": ["qcs::cam::uin/1250000000:uin/1250000001"]},"resource": ["qcs::cos:ap-beijing:uid/1250000000:bjtest-1250000000/*"],"condition": {"string_equal": {"cos:object-lock-mode": "COMPLIANCE"}}}],"version": "2.0"}
cos:object-lock-remaining-retention-days를 통해 사용자가 객체를 업로드할 때 반드시 객체 잠금을 설정하고, 고정된 일수를 지정하도록 제한할 수 있습니다.보존 일수(B) = 내림[(ts1 - ts2) / (3600*24)]
{"statement": [{"action": ["name/cos:PutObject","name/cos:InitiateMultipartUpload","name/cos:PutObjectRetention"],"effect": "allow","principal": {"qcs": ["qcs::cam::uin/1250000000:uin/1250000001"]},"resource": ["qcs::cos:ap-beijing:uid/1250000000:bjtest-1250000000/*"],"condition": {"numeric_greater_than": {"cos:object-lock-remaining-retention-days": 3}}}],"version": "2.0"}
조건 키 | 의미 | 현재 요청 시간 | 입력값: retain-until-date의 유효한 시간 | 비고 |
"numeric_equal": { "cos: x-cos-object-lock-remaining-retention-days": 3 } | 3일 | 2022-11-01T12:00:00Z | [ 2022-11-04T12:00:00Z, 2022-11-05T11:59:59Z ] | 닫힌 구간 |
"numeric_greater_than": { "cos: x-cos-object-lock-remaining-retention-days": 3 } | 3일 초과(3일 제외) | 2022-11-01T12:00:00Z | [ 2022-11-05T12:00:00Z, 이후 ] | 닫힌 구간 |
"numeric_less_than": { "cos: x-cos-object-lock-remaining-retention-days": 3 } | 3일 미만(3일 제외) | 2022-11-01T12:00:00Z | [ 2022-11-01T12:00:01Z, 2022-11-04T11:59:59Z ] | 닫힌 구간 |
cos:object-lock-retain-until-date를 통해 사용자가 객체를 업로드할 때 객체 잠금을 설정하고, 초 단위까지 설정 가능한 지정 날짜를 반드시 설정하도록 제한할 수 있습니다.2022-11-11T12:00:00Z 이후여야 함을 의미합니다.{"statement": [{"action": ["name/cos:PutObject","name/cos:InitiateMultipartUpload","name/cos:PutObjectRetention"],"effect": "allow","principal": {"qcs": ["qcs::cam::uin/1250000000:uin/1250000001"]},"resource": ["qcs::cos:ap-beijing:uid/1250000000:bjtest-1250000000/*"],"condition": {"date_greater_than": {"cos:object-lock-retain-until-date": "2022-11-11T12:00:00Z"}}}],"version": "2.0"}
조건 키 | 해당 요청 헤더 |
cos:x-cos-grant-full-control | x-cos-grant-full-control |
cos:x-cos-grant-read | x-cos-grant-read |
cos:x-cos-grant-write | x-cos-grant-write |
cos:x-cos-grant-read-acp | x-cos-grant-read-acp |
cos:x-cos-grant-write-acp | x-cos-grant-write-acp |
" 문자가 포함될 수 있으므로, 정책에서 문자열로 사용할 때는 \\"로 이스케이프 처리해야 합니다.{"statement": [{"action": ["name/cos:PutObject","name/cos:PostObject","name/cos:AppendObject","name/cos:InitiateMultipartUpload"],"effect": "allow","principal": {"qcs": ["qcs::cam::uin/1250000000:uin/1250000001"]},"resource": ["qcs::cos:ap-beijing:uid/1250000000:bjtest-1250000000/*"],"condition": {"string_equal": {"cos:x-cos-grant-full-control": "id=\\"100000000001\\""}}},{"action": ["name/cos:PutObject","name/cos:PostObject","name/cos:AppendObject","name/cos:InitiateMultipartUpload"],"effect": "deny","principal": {"qcs": ["qcs::cam::uin/1250000000:uin/1250000001"]},"resource": ["qcs::cos:ap-beijing:uid/1250000000:bjtest-1250000000/*"],"condition": {"string_not_equal_if_exist": {"cos:x-cos-grant-full-control": "id=\\"100000000001\\""}}}],"version": "2.0"}
{"statement": [{"action": ["name/cos:PutObject","name/cos:PostObject","name/cos:AppendObject","name/cos:InitiateMultipartUpload"],"effect": "allow","principal": {"qcs": ["qcs::cam::uin/1250000000:uin/1250000001"]},"resource": ["qcs::cos:ap-beijing:uid/1250000000:bjtest-1250000000/*"],"condition": {"string_equal_if_exist": {"cos:x-cos-grant-full-control": ""}}},{"action": ["name/cos:PutObject","name/cos:PostObject","name/cos:AppendObject","name/cos:InitiateMultipartUpload"],"effect": "deny","principal": {"qcs": ["qcs::cam::uin/1250000000:uin/1250000001"]},"resource": ["qcs::cos:ap-beijing:uid/1250000000:bjtest-1250000000/*"],"condition": {"string_not_equal": {"cos:x-cos-grant-full-control": ""}}}],"version": "2.0"}
피드백