버킷 정책은 설정된 버킷 및 버킷의 객체에 작용합니다. 버킷 정책을 통해 CAM 서브 계정, 다른 루트 계정 및 익명 사용자에 대한 버킷 및 버킷의 객체 작업 권한을 부여할 수 있습니다.
개요
주의:
Tencent Cloud 루트 계정은 그에 속한 리소스(버킷 포함)에 대해 가장 큰 권한을 가집니다. 버킷 정책이 거의 모든 작업을 제한하더라도, 루트 계정은 PUT Bucket Policy 작업 권한을 계속 가지고 있으므로, 해당 작업을 호출하여 버킷 정책을 점검하지 않도록 할 수 있습니다.
버킷 정책(Bucket Policy)은 JSON 언어를 사용하며 익명 자격이나 Tencent Cloud의 CAM 계정에 버킷, 버킷 작업, 객체 및 객체 작업에 대한 권한을 부여할 수 있습니다. Tencent Cloud COS의 버킷 정책은 버킷의 거의 모든 작업을 관리할 수 있습니다. 버킷 정책을 사용해 ACL로 나타낼 수 없는 액세스 정책을 관리하십시오. 적용 시나리오
주의:
버킷 생성과 버킷 리스트 획득의 두 가지 서비스 레벨의 작업 권한은 CAM 콘솔을 통해 설정해야 합니다. 이 COS 버킷에 액세스할 수 있는 사용자에게 주의를 기울이는 경우 버킷 정책을 사용하는 것이 좋습니다. 버킷을 조회하고 버킷 정책을 확인하여 액세스할 수 있는 사용자를 확인할 수 있습니다. 권장 시나리오는 다음과 같습니다.
특정 버킷에만 권한을 부여하는 경우
ACL에 비해 버킷 정책의 유연성이 더 높습니다.
사용자 정책 대비, 버킷 정책은 교차 계정 인증 및 익명 사용자 인증 지원
버킷 정책 구성
버킷 정책은 JSON 언어로 설명되어 있으며, 구문은 위탁자(principal), 효력(effect), 작업(action), 리소스(resource), 조건(condition) 등의 기본 요소를 포함하여 정책 언어 액세스의 통일된 규범을 따릅니다. 자세한 내용은 액세스 정책 언어 개요를 참고하십시오.
이 중 버킷 정책의 리소스 범위는 버킷 이내로 제한되며, 전체 버킷, 지정된 디렉터리, 지정된 객체에 대해 권한을 부여할 수 있습니다. 주의:
버킷 정책을 추가할 때, 반드시 업무상 필요에 따라 최소 권한 원칙에 근거하여 인증해야 합니다. 다른 사용자에게 모든 리소스 (resource:*)
, 또는 작업 (action:*)
에 대한 모든 권한을 부여하면 권한 범위가 너무 광범위해 데이터 보안에 리스크가 발생할 수 있습니다.
콘솔 설정 예시
설명:
COS 콘솔을 이용해 버킷 정책을 설정할 때, 사용자에게 버킷 소유와 관련된 권한(예: 버킷 태그 얻기, 버킷 권한 나열)을 부여해야 합니다.
버킷 정책의 크기는 20KB로 제한됩니다.
예시: 서브 계정에 버킷의 특정 디렉터리에 대한 모든 권한을 부여합니다. 설정 정보는 다음과 같습니다.
|
| |
| 서브 계정의 UIN이며, 해당 서브 계정은 반드시 현재 루트 계정의 서브 계정이어야 합니다(예: 100000000011) |
| 특정 디렉터리의 접두사(예: folder/sub-folder/* ) |
| |
| |
콘솔은 [그래픽 설정](#그래픽 설정) 및 [정책 설정](#정책 설정) 두 가지 방식의 버킷 정책 추가, 관리를 지원합니다.
그래픽 설정
타깃 버킷의 권한 관리로 이동하여 Policy 권한 설정 > 그래픽 설정을 선택하고 정책 추가를 클릭하여 팝업 창에서 정책을 설정합니다.
1단계: 템플릿 선택(옵션)
권한이 부여된 사용자와 리소스 범위의 다양한 조합을 선택함으로써 COS는 버킷 정책의 빠른 구성에 도움이 되는 다양한 정책 템플릿을 제공합니다. 템플릿이 요구 사항을 충족하지 않는 경우 이 단계를 건너뛰거나 2단계: 정책 설정에서 권한 부여 작업을 추가 또는 삭제할 수 있습니다. 인증된 사용자
모든 사용자(익명 액세스 가능): 익명 사용자에 대한 작업 권한을 개방하려면 이 항목을 선택합니다. 다음 단계에서 정책을 설정할 때 모든 사용자가 자동으로 추가되며 *
로 표시됩니다.
지정된 사용자: 지정된 서브 계정, 루트 계정 또는 클라우드 서비스에 운영 권한을 개방하려면 이 항목을 선택합니다. 다음 단계에서 정책 설정 시 특정 계정 UIN을 추가로 지정해야 합니다.
리소스 범위
전체 버킷: 버킷 설정 항목과 관련된 권한을 부여하거나 리소스 범위를 전체 버킷으로 지정하려면 이 항목을 선택하면 2단계 정책 설정 시 전체 버킷이 자동으로 리소스로 추가됩니다.
디렉터리 지정: 리소스 범위를 지정된 폴더로 제한하려는 경우 이 항목을 선택합니다. 2단계 정책 설정 시 특정 디렉터리를 추가로 지정해야 합니다.
템플릿
권한을 부여할 작업 그룹입니다. 선택한 권한 부여 사용자 및 리소스 범위에 따라 COS는 권장 정책 템플릿을 제공합니다. 템플릿이 요구 사항을 충족하지 않는 경우 이 단계를 건너뛰거나 다음 단계 ‘정책 설정’에서 권한 부여 작업을 추가 또는 삭제할 수 있습니다.
사용자 정의 정책(사전 설정 미제공): 템플릿을 사용할 필요가 없는 경우 이 옵션을 선택하고 2단계 ‘정책 설정’에서 필요에 따라 정책을 추가할 수 있습니다.
기타 템플릿: 인증된 사용자 및 리소스 범위의 다양한 조합 선택에 따라 COS는 다양한 정책 템플릿을 제공합니다. 해당 템플릿을 선택한 후, 2단계 정책 설정에서 COS가 자동으로 해당 작업을 추가합니다.
템플릿 설명은 아래 표를 참고하십시오.
|
모든 조합 |
| 사용자 정의 정책 | 인증된 사용자 및 리소스 범위의 조합에 대해 이 템플릿을 선택하면 사전 설정된 정책이 제공되지 않습니다. 2단계 정책 설정에서 정책을 직접 추가할 수 있습니다. |
모든 사용자(익명 액세스 가능) | 전체 버킷 | 읽기 전용 객체(객체 리스트 제외) | COS는 익명 사용자에 대해 파일 읽기(예: 다운로드) 및 파일 쓰기(예: 업로드 및 수정) 권장 템플릿을 제공합니다. COS 권장 템플릿에는 데이터 보안을 위해 버킷의 모든 객체 나열, 읽기/쓰기 권한, 버킷 설정 등 민감한 권한이 포함되어 있지 않습니다.필요한 경우 후속 단계에서 작업 권한을 추가 또는 삭제할 수 있습니다. |
|
|
| 객체 읽기 및 쓰기(객체 리스트 나열 제외) |
|
| 지정된 디렉터리 | 읽기 전용 객체(객체 리스트 제외) |
|
|
| 객체 읽기 및 쓰기(객체 리스트 나열 제외) |
지정된 사용자 | 전체 버킷 | 읽기 전용 객체(객체 리스트 제외) | COS는 지정된 사용자와 전체 버킷의 조합에 대해 가장 많은 권장 템플릿을 제공합니다. 파일 읽기 및 쓰기, 파일 나열 외에도 COS에는 신뢰할 수 있는 사용자에게 적합한 다음과 같은 민감 권한 템플릿이 포함되어 있습니다. 버킷 및 객체 ACL 읽기 및 쓰기: 버킷 ACL 및 객체 ACL 가져오기, 수정. GetObjectACL, PutObjectACL, GetBucketACL, PutBucketACL 포함. 버킷 일반 설정 항목: 버킷 태그, 교차 출처, Origin-pull 및 기타 민감하지 않은 권한. 버킷 민감 설정 항목: 버킷 정책, 버킷 ACL, 버킷 삭제와 같은 민감한 권한이 포함되므로 신중히 사용해야 합니다. |
|
|
| 읽기 전용 객체(객체 리스트 나열 포함) |
|
|
| 객체 읽기 및 쓰기(객체 리스트 나열 제외) |
|
|
| 객체 읽기 및 쓰기(객체 리스트 나열 포함) |
|
|
| 버킷 및 객체 ACL 읽기 및 쓰기 |
|
|
| 버킷에 대한 일반 설정 항목 |
|
|
| 버킷에 대한 민감 설정 항목 |
| 지정된 디렉터리 | 읽기 전용 객체(객체 리스트 제외) | COS는 지정된 사용자와 지정된 디렉터리의 조합에 대해 파일 읽기(예: 다운로드) 및 파일 쓰기(예: 업로드, 수정) 외에도 , 객체 리스트 나열 권한을 포함하는 권장 템플릿을 제공합니다.지정된 사용자에 대해 지정된 폴더의 읽기, 쓰기 및 파일 나열 권한을 개방하려면 이 조합을 권장합니다.필요에 따라 후속 단계에서 작업 권한을 추가하거나 삭제할 수 있습니다. |
|
|
| 읽기 전용 객체(객체 리스트 나열 포함) |
|
|
| 객체 읽기 및 쓰기(객체 리스트 나열 제외) |
|
|
| 객체 읽기 및 쓰기(객체 리스트 나열 포함) |
1단계에서 선택한 인증된 사용자, 지정된 디렉터리 및 템플릿의 조합에 대해, COS는 해당 작업, 인증된 사용자, 리소스 등을 정책 설정에 자동으로 추가합니다. 지정된 사용자 및 지정된 디렉터리를 선택한 경우, 정책 설정 시 특정 사용자 UIN 및 디렉터리를 지정해야 합니다.
설명:
디렉터리 권한 부여를 위해서는 입력 리소스 경로 뒤에 /*
가 와야 합니다. 예를 들어, 디렉터리 test에 권한을 부여하려면 test/*
를 입력합니다.
COS에서 제공한 권장 템플릿이 요구 사항에 맞지 않을 경우 이 단계에서 인증된 사용자, 리소스 및 작업 추가 또는 삭제 등 정책 내용을 수정할 수 있습니다. 다음 이미지와 같습니다.
다음은 설정 항목에 관한 설명입니다.
유효성: 정책 구문의 허용 및 거부에 해당하는 ‘allow’ 또는 ‘deny’ 선택을 지원합니다.
사용자: 모든 사용자(*
), 루트 계정, 서브 계정 및 클라우드 서비스 등 인증된 사용자 추가 및 삭제를 지원합니다.
리소스: 전체 버킷 또는 지정된 디렉터리 리소스 추가를 지원합니다.
작업: 인증해야 하는 작업을 추가 또는 삭제합니다.
조건: 사용자의 IP 액세스 제한 등 권한 부여 시 조건을 지정합니다.
정책 구문
그래픽 설정을 사용하는 것 외에도 버킷 정책에 익숙한 사용자는 JSON 언어를 사용하여 타깃 버킷의 권한 관리 > Policy 권한 설정 > 정책 설정에서 정책을 직접 작성할 수 있습니다.
버킷 정책을 작성 후 API 또는 SDK를 통해 버킷 정책을 추가할 수도 있습니다. 아래 이미지와 같습니다. JSON 정책 예시
다음 정책 예시는 다음과 같이 설명됩니다. 기본 계정 ID 100000000001(APPID는 1250000000) 하위 서브 계정 ID 100000000011에 속한 베이징 리전의 examplebucket-bj 버킷의 'folder/sub-folder' 디렉터리 중의 객체에 대한 모든 작업에 권한을 부여합니다.
{
"Statement": [
{
"Principal": {
"qcs": [
"qcs::cam::uin/100000000001:uin/100000000011"
]
},
"Effect": "Allow",
"Action": [
"name/cos:*"
],
"Resource": [
"qcs::cos:ap-beijing:uid/1250000000:examplebucket-bj-1250000000/folder/sub-folder/*"
]
}
],
"version": "2.0"
}
작업 방식
COS는 콘솔, API, SDK 등을 사용한 버킷 정책 추가를 지원합니다. 콘솔은 그래픽 설정과 일반 권한 부여 템플릿을 지원하므로 정책 언어에 익숙하지 않은 사용자가 정책을 빠르게 추가할 수 있습니다.
|
|
| Web 페이지, 직관적이고 편리함 |
|
| RESTful API, 직접 COS 요청 |
SDK | | 풍부한 SDK demo로, 다양한 개발 언어를 지원합니다. |
|
| |
|
| |
더 많은 버킷 정책 예시
주의:
버킷 정책을 추가할 때, 반드시 업무상 필요에 따라 최소 권한 원칙에 근거하여 권한을 부여해야 합니다. 다른 사용자에게 모든 리소스 (resource:*)
, 또는 작업 (action:*)
에 대한 모든 권한을 부여하면 권한 범위가 너무 광범위해 데이터 보안에 리스크가 발생할 수 있습니다.
다음은 서브넷, 위탁자 및 VPC ID를 제한하는 버킷 정책의 예시입니다.
예시1
서브넷 10.1.1.0/24 IP 대역 및 vpcid의 aqp5jrc1에 대한 요청을 제한합니다. 구문 예시는 다음과 같습니다.
{
"Statement": [
{
"Action": [
"name/cos:*"
],
"Condition": {
"ip_equal": {
"qcs:ip": [
"10.1.1.0/24"
]
},
"string_equal": {
"vpc:requester_vpc": [
"vpc-aqp5jrc1"
]
}
},
"Effect": "deny",
"Principal": {
"qcs": [
"qcs::cam::anyone:anyone"
]
},
"Resource": [
"qcs::cos:ap-guangzhou:uid/1250000000:examplebucket-1250000000/*"
]
}
],
"version": "2.0"
}
예시2
vpcid의 aqp5jrc1 및 특정 위탁자와 특정 버킷에 대한 요청을 제한합니다. 구문 예시는 다음과 같습니다.
{
"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"
}
문제 해결에 도움이 되었나요?