tencent cloud

Cloud Object Storage

동향 및 공지
릴리스 노트
제품 공지
제품 소개
제품 개요
기능 개요
적용 시나리오
제품 장점
기본 개념
리전 및 액세스 도메인
규격 및 제한
제품 요금
과금 개요
과금 방식
과금 항목
프리 티어
과금 예시
청구서 보기 및 다운로드
연체 안내
FAQ
빠른 시작
콘솔 시작하기
COSBrowser 시작하기
사용자 가이드
요청 생성
버킷
객체
데이터 관리
일괄 프로세스
글로벌 가속
모니터링 및 알람
운영 센터
데이터 처리
스마트 툴 박스 사용 가이드
데이터 워크플로
애플리케이션 통합
툴 가이드
툴 개요
환경 설치 및 설정
COSBrowser 툴
COSCLI 툴
COSCMD 툴
COS Migration 툴
FTP Server 툴
Hadoop 툴
COSDistCp 툴
HDFS TO COS 툴
온라인 도구 (Onrain Dogu)
자가 진단 도구
실습 튜토리얼
개요
액세스 제어 및 권한 관리
성능 최적화
AWS S3 SDK를 사용하여 COS에 액세스하기
데이터 재해 복구 백업
도메인 관리 사례
이미지 처리 사례
COS 오디오/비디오 플레이어 사례
데이터 다이렉트 업로드
데이터 보안
데이터 검증
빅 데이터 사례
COS 비용 최적화 솔루션
3rd party 애플리케이션에서 COS 사용
마이그레이션 가이드
로컬 데이터 COS로 마이그레이션
타사 클라우드 스토리지 데이터를 COS로 마이그레이션
URL이 소스 주소인 데이터를 COS로 마이그레이션
COS 간 데이터 마이그레이션
Hadoop 파일 시스템과 COS 간 데이터 마이그레이션
데이터 레이크 스토리지
클라우드 네이티브 데이터 레이크
메타데이터 가속
데이터 레이크 가속기 GooseFS
데이터 처리
데이터 처리 개요
이미지 처리
미디어 처리
콘텐츠 조정
파일 처리
문서 미리보기
장애 처리
RequestId 가져오기
공용 네트워크로 COS에 파일 업로드 시 속도가 느린 문제
COS 액세스 시 403 에러 코드 반환
리소스 액세스 오류
POST Object 자주 발생하는 오류
보안 및 컴플라이언스
데이터 재해 복구
데이터 보안
액세스 관리
자주 묻는 질문
인기 질문
일반 문제
과금
도메인 규정 준수 문제
버킷 설정 문제
도메인 및 CDN 문제
파일 작업 문제
로그 모니터링 문제
권한 관리
데이터 처리 문제
데이터 보안 문제
사전 서명 URL 관련 문제
SDK FAQ
툴 관련 문제
API 관련 문제
Agreements
Service Level Agreement
개인 정보 보호 정책
데이터 처리 및 보안 계약
연락처
용어집

조건

PDF
포커스 모드
폰트 크기
마지막 업데이트 시간: 2025-07-14 10:14:54

소개

조건은 액세스 정책 언어의 일부입니다. 완전한 조건에는 다음 요소가 포함됩니다.
조건 키: 조건의 유형을 지정합니다(예: 사용자 액세스 소스 IP 및 권한 부여 시간).
조건 연산자: 조건 결정 방법을 지정합니다.
조건 값: 조건 키의 값을 지정합니다.
자세한 내용은 Conditions를 참고하십시오.
설명:
버킷 정책을 작성 시 조건 키를 사용할 때 최소 권한 원칙을 준수하고, 해당 조건 키를 해당 요청(action)에만 추가하며, 작업 지정(action) 시 “*” 와일드 카드를 사용하지 마십시오. 와일드카드를 사용하면 요청이 실패합니다.
액세스 관리(CAM) 콘솔을 사용하여 정책을 생성할 때, version, principal, statement, effect, action, resource, condition 구문 요소는 모두 소문자로 작성해야 합니다.

조건 예시

다음 버킷 정책 예시에서 조건(condition)은 cos:PutObject 권한 부여 작업이 10.217.182.3/24 또는 111.21.33.72/24 IP 범위에서만 완료될 수 있음을 지정합니다.
조건 키qcs:ip이며 조건 유형이 IP임을 나타냅니다.
조건 연산자ip_equal로, 조건 판단 방법이 IP 주소 일치 여부를 판단하는 것임을 나타냅니다.
조건 값은 조건 결정을 위해 지정된 값을 나열하는 ["10.217.182.3/24","111.21.33.72/24"] 배열입니다. 사용자의 IP가 어레이의 지정된 IP 범위에 있는 경우 조건은 true로 결정됩니다.
{
"version":"2.0",
"statement":[
{
"principal":{
"qcs":[
"qcs::cam::uin/1250000000:uin/1250000001"
]
},
"effect":"allow",
"action":[
"name/cos:PutObject"
],
"resource":[
"qcs::cos:ap-guangzhou:uid/1250000000:examplebucket-1250000000/*"
],
"condition":{
"ip_equal":{
"qcs:ip":[
"10.217.182.3/24",
"111.21.33.72/24"
]
}
}
}
]
}

COS에서 지원하는 조건 키

COS는 IP, VPC 및 HTTPS를 포함한 모든 요청에 적용 가능한 조건 키와 요청 헤더 및 요청 매개변수의 조건 키, 일반적으로 요청 헤더 또는 요청 매개변수를 전달해야 하는 요청에만 적용할 수 있는 두 가지 유형의 조건 키를 지원합니다. 이러한 조건 키에 대한 설명 및 사용 사례는 Descriptions and Use Cases of Condition Keys를 참고하십시오.
설명:
조건 및 조건 키는 사용자 요청의 액세스 관리에만 적용됩니다. 수명 주기 및 버킷 복제 규칙이 유효한 경우 삭제 및 복제와 같은 작업은 사용자가 아닌 COS에서 시작하므로 조건 키의 해당 범위에 포함되지 않습니다.

대부분의 요청에 적용 가능한 조건 키

첫 번째 유형은 대부분의 요청에 적용되는 조건 키로, 아래 표와 같습니다.
조건 키
적용 요청
의미
유형
모든 요청
요청의 HTTPS 사용 여부
Boolean
모든 요청
요청의 소스 IP 범위
IP
모든 https 요청
https 요청에 사용되는 TLS 버전
Numeric
cos:host
모든 요청
요청의 Host 헤더
String

요청 헤더 및 요청 매개변수의 조건 키

요청마다 요청 헤더(Header) 및 요청 매개변수(Param)가 다르기 때문에 요청 헤더 및 요청 매개변수의 조건 키는 이러한 요청 헤더 또는 요청 매개변수를 포함하는 요청에만 적용할 수 있습니다.
예를 들어 조건 키 cos:content-type은 요청 헤더 Content-Type을 사용해야 하는 업로드 요청(예: PutObject)에 적용할 수 있는 반면 조건 키 cos:response-content-type은 GetObject 요청에만 적용할 수 있습니다. GetObject 요청만 요청 매개변수 response-content-type을 지원합니다.
아래 표에는 요청 헤더 및 요청 매개변수의 조건 키와 해당하는 해당 요청이 나열되어 있습니다.
조건 키
적용 요청
요청 헤더 또는 요청 매개변수 확인
유형
PutObject
PostObject
InitiateMultipartUpload
요청 헤더: x-cos-storage-class
String
GetObject DeleteObject PostObjectRestore PutObjectTagging GetObjectTagging DeleteObjectTagging HeadObject
요청 매개변수: versionid
String
GetBucket
GetBucketObjectversions
ListMultipartUploads
ListLiveChannels
요청 매개변수: prefix
String
PutObject
PutObject-Copy
PostObject
PutObjectACL
PutBucket
PutBucketACL
InitiateMultipartUpload
요청 헤더: x-cos-acl
String
이 요청 헤더는 적용 가능한 범위가 넓으며 일반적으로 요청 본문이 있는 요청
요청 헤더: Content-Length
Numeric
이 요청 헤더는 적용 가능한 범위가 넓으며 일반적으로 요청 본문이 있는 요청
요청 헤더: Content-Type
String
GetObject
요청 매개변수: response-content-type
String
PutBucket
PutBucketTagging
요청 헤더: x-cos-tagging
요청 매개변수: tagging
String
PutObject
PutObject-Copy
InitiateMultipartUpload
CompleteMultipartUpload
요청 헤더:x-cos-forbid-overwrite
String
PutObject
PutObject-Copy
InitiateMultipartUpload
PutObjectRetention
요청 헤더::x-cos-object-lock-mode
요청 본문 필드:PutObjectRetention 요청 본문의 Retention.Mode
String
PutObject
PutObject-Copy
InitiateMultipartUpload
PutObjectRetention
요청 헤더::x-cos-object-lock-remaining-retention-days
요청 본문 필드:PutObjectRetention 요청 본문의 Retention.RetainUntilDate
Timestamp
PutObject
PutObject-Copy
InitiateMultipartUpload
PutObjectRetention
요청 헤더::x-cos-object-lock-remaining-retention-days
요청 본문 필드:PutObjectRetention 요청 본문의 Retention.RetainUntilDate
Timestamp
PutObject
PutObject-Copy
PostObject
PutObjectACL
PutBucket
PutBucketACL
InitiateMultipartUpload
요청 헤더:x-cos-grant-read
String
PutObject
PutObject-Copy
PostObject
PutObjectACL
PutBucket
PutBucketACL
InitiateMultipartUpload
요청 헤더:x-cos-grant-read-acp
String
PutObject
PutObject-Copy
PostObject
PutObjectACL
PutBucket
PutBucketACL
InitiateMultipartUpload
요청 헤더:x-cos-grant-write
String
PutObject
PutObject-Copy
PostObject
PutObjectACL
PutBucket
PutBucketACL
InitiateMultipartUpload
요청 헤더:x-cos-grant-write-acp
String
PutObject
PutObject-Copy
PostObject
PutObjectACL
PutBucket
PutBucketACL
InitiateMultipartUpload
요청 헤더:x-cos-grant-full-control
String

조건 연산자

COS는 문자열(String), 숫자(Numeric), 부울(Boolean) 및 IP 유형의 조건 키에 적용할 수 있는 다음 조건 연산자를 지원합니다.
조건 연산자
설명
유형
string_equal
같은 문자열(대소문자 구분)
String
string_not_equal
같지 않은 문자열(대소문자 구분)
String
string_like
유사한 문자열(대소문자 구분), 현재 와일드카드(*)를 문자열에 접두사 또는 접미사로 사용 가능, 예시 image/*
String
ip_equal
IP 같음
IP
ip_not_equal
IP가 같지 않음
IP
numeric_equal
같은 숫자
Numeric
numeric_not_equal
같지 않은 숫자
Numeric
numeric_greater_than
큰 숫자
Numeric
numeric_greater_than_equal
크거나 같은 숫자
Numeric
numeric_less_than
작은 숫자
Numeric
numeric_less_than_equal
작거나 같은 숫자
Numeric

_if_exist의 의미

이전 조건 연산자의 끝에 _if_exist를 추가하여 string_equal_if_exist와 같은 새 조건 연산자를 구성할 수 있습니다. _if_exist가 있는 조건 연산자와 없는 조건 연산자의 차이점은 다음과 같습니다.
string_equal과 같이 _if_exist가 없는 조건 연산자의 경우 요청에 지정된 요청 헤더 또는 매개변수가 포함되어 있지 않으면 조건이 충족되지 않는(False) 것으로 간주됩니다.
string_equal_if_exist와 같이 _if_exist가 있는 조건 연산자의 경우 요청에 지정된 요청 헤더 또는 매개변수가 포함되어 있지 않으면 기본적으로 조건이 충족된(True) 것으로 간주됩니다.

License 요청 예시

예시1: 지정된 버전의 객체 다운로드 허용

이 예시의 버킷 정책에서 Effect는 allow이며 요청 매개변수 versionid가 ‘MTg0NDUxNTc1NjIzMTQ1MDAwODg’인 GetObject 요청을 허용합니다. 권한 부여 allow 정책에 따라 조건이 충족되면(True) 요청이 허용됩니다. 조건이 충족되지 않으면(False) 요청이 허용되지 않고 실패합니다.
{
"version":"2.0",
"statement":[
{
"principal":{
"qcs":[
"qcs::cam::uin/1250000000:uin/1250000001"
]
},
"effect":"allow",
"action":[
"name/cos:GetObject"
],
"condition":{
"string_equal":{
"cos:versionid":"MTg0NDUxNTc1NjIzMTQ1MDAwODg"
}
},
"resource":[
"qcs::cos:ap-guangzhou:uid/1250000000:examplebucket-1250000000/*"
]
}
]
}
아래 표는 조건 연산자 string_equalstring_equal_if_exist의 condition 충족 및 요청 허용 세부 정보를 나열합니다.
조건 연산자
요청
condition 충족
요청 허용 여부
string_equal
versionid 가 없는 경우
FALSE
No
string_equal_if_exist
versionid 가 없는 경우
TRUE
Yes
string_equal
값이 지정된 versionid 사용
TRUE
Yes
string_equal_if_exist
값이 지정된 versionid 사용
TRUE
Yes
string_equal
값이 지정되지 않은 versionid 사용
FALSE
No
string_equal_if_exist
값이 지정되지 않은 versionid 사용
FALSE
No

예시2: 지정된 버전의 객체 다운로드 금지

이 예시의 버킷 정책에서 Effect는 deny이며 요청 매개변수 versionid가 ‘MTg0NDUxNTc1NjIzMTQ1MDAwODg’인 GetObject 요청을 허용하지 않습니다. deny 권한 부여 정책에 따라 조건이 충족되면(True) 요청이 실패합니다. 조건이 충족되지 않으면(False) 요청이 거부되지 않습니다.
{
"version":"2.0",
"statement":[
{
"principal":{
"qcs":[
"qcs::cam::uin/1250000000:uin/1250000001"
]
},
"effect":"deny",
"action":[
"name/cos:GetObject"
],
"condition":{
"string_equal":{
"cos:versionid":"MTg0NDUxNTc1NjIzMTQ1MDAwODg"
}
},
"resource":[
"qcs::cos:ap-guangzhou:uid/1250000000:examplebucket-1250000000/*"
]
}
]
}
아래 표는 조건 연산자 string_equalstring_equal_if_exist의 condition 충족 및 요청 거부 세부 정보를 나열합니다.
조건 연산자
요청
condition 충족
요청 거부 여부
string_equal
versionid 가 없는 경우
FALSE
No
string_equal_if_exist
versionid 가 없는 경우
TRUE
Yes
string_equal
값이 지정된 versionid 사용
TRUE
Yes
string_equal_if_exist
값이 지정된 versionid 사용
TRUE
Yes
string_equal
값이 지정되지 않은 versionid 사용
FALSE
No
string_equal_if_exist
값이 지정되지 않은 versionid 사용
FALSE
No

관련 설명

특수 문자에는 urlencode 필요

요청 매개변수의 특수 문자에는 모두 urlencode가 필요하므로 요청 매개변수의 조건 키를 사용하는 버킷 정책에도 urlencode가 필요합니다. 예를 들어 버킷 정책에서 cos:response-content-type 조건 키를 사용하려는 경우 버킷 정책에 입력하기 전에 조건 값 "image/jpeg"를 "image%2Fjpeg"로 urlencode해야 합니다.

최소 권한 원칙 및 * 와일드카드 없음

조건 키를 사용할 때 최소 권한 원칙을 준수하고 권한을 설정하려는 action만 추가하고 ‘*’ 와일드카드를 사용하지 마십시오. ‘*’ 와일드카드를 잘못 사용하면 일부 요청이 실패할 수 있습니다. 아래 예에서 GetObject 이외의 요청은 요청 매개변수 response-content-type 사용을 지원하지 않습니다.
deny + string_equal_if_exist의 경우 조건 키가 요청에 없으면 기본적으로 true로 간주됩니다. 따라서 PutObject 및 PutBucket과 같은 요청을 시작하면 deny statement가 충족되고 요청이 거부됩니다.
allow + string_equal의 경우 조건 키가 요청에 없으면 기본적으로 false로 간주됩니다. 따라서 PutObject 및 PutBucket과 같은 요청을 시작할 때 allow statement가 충족되지 않고 요청이 허용되지 않습니다.
{
"version":"2.0",
"statement":[
{
"principal":{
"qcs":[
"qcs::cam::uin/1250000000:uin/1250000001"
]
},
"effect":"allow",
"action":[
"*"
],
"resource":[
"qcs::cos:ap-guangzhou:uid/1250000000:examplebucket-1250000000/*"
],
"condition":{
"string_equal":{
"cos:response-content-type":"image%2Fjpeg"
}
}
},
{
"principal":{
"qcs":[
"qcs::cam::uin/1250000000:uin/1250000001"
]
},
"effect":"deny",
"action":[
"*"
],
"resource":[
"qcs::cos:ap-guangzhou:uid/1250000000:examplebucket-1250000000/*"
],
"condition":{
"string_not_equal_if_exist":{
"cos:response-content-type":"image%2Fjpeg"
}
}
}
]
}
또는 allow+string_equal_if_exist 및 deny + string_not_equal을 사용하여 response-content-type 요청 매개변수 없이 요청을 허용할 수 있습니다.
deny + string_equal의 경우 조건 키가 요청에 없으면 기본적으로 false로 간주됩니다. 따라서 PutObject 및 PutBucket과 같은 요청을 시작할 때 deny statement가 충족되지 않고 요청이 거부되지 않습니다.
allow + string_equal_if_exist의 경우 조건 키가 요청에 없으면 기본적으로 true로 간주됩니다. 따라서 PutObject 및 PutBucket과 같은 요청을 시작할 때 allow statement가 충족되고 요청이 허용됩니다.
그러나 이러한 방식으로 조건 연산자를 사용하면 GetObject 요청의 response-content-type 요청 매개변수 전달 여부를 제한할 수 없습니다. response-content-type 요청 매개변수가 없는 GetObject 요청은 다른 요청과 마찬가지로 기본적으로 허용됩니다. GetObject 요청이 response-content-type 요청 매개변수를 전달하는 경우에만 지정된 조건을 사용하여 요청 매개변수의 내용이 조건부 승인을 구현할 것으로 예상하는 내용과 동일한지 확인할 수 있습니다.
{
"version":"2.0",
"statement":[
{
"principal":{
"qcs":[
"qcs::cam::uin/1250000000:uin/1250000001"
]
},
"effect":"allow",
"action":[
"*"
],
"resource":[
"qcs::cos:ap-guangzhou:uid/1250000000:examplebucket-1250000000/*"
],
"condition":{
"string_equal_if_exist":{
"cos:response-content-type":"image%2Fjpeg"
}
}
},
{
"principal":{
"qcs":[
"qcs::cam::uin/1250000000:uin/1250000001"
]
},
"effect":"deny",
"action":[
"*"
],
"resource":[
"qcs::cos:ap-guangzhou:uid/1250000000:examplebucket-1250000000/*"
],
"condition":{
"string_not_equal":{
"cos:response-content-type":"image%2Fjpeg"
}
}
}
]
}
따라서 보다 안전한 방법은 최소 권한 원칙을 준수하고 ‘*‘ 와일드카드를 사용하지 않고 GetObject 요청에 대한 action을 제한하는 것입니다.
아래 예시 정책에서 볼 수 있듯이 정책 조건은 값이 "image%2Fjpeg"인 response-content-type 요청 매개변수를 전달하는 GetObject 요청에 대해서만 권한 부여가 수행되도록 엄격하게 지정합니다.
다른 요청은 이 예시에서 정책의 영향을 받지 않으며 최소 권한 원칙에 따라 별도로 권한을 부여할 수 있습니다.
{
"version":"2.0",
"statement":[
{
"principal":{
"qcs":[
"qcs::cam::uin/1250000000:uin/1250000001"
]
},
"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/1250000000:uin/1250000001"
]
},
"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"
}
}
}
]
}


도움말 및 지원

문제 해결에 도움이 되었나요?

피드백