COS 버킷과 버킷 리소스에 액세스할 경우 권한 부여 절차를 마쳐야만 액세스할 수 있습니다. Tencent Cloud 권한 시스템에서 리소스가 속한 루트 계정은 기본적으로 버킷과 버킷 리소스에 대한 모든 관리 권한을 가집니다. CAM 사용자(기타 루트 계정, 협업 파트너, 서브 계정) 그리고 익명 사용자 등의 기타 유형 사용자는 루트 계정으로부터 권한을 부여 받은 후 액세스 가능합니다.
계정의 액세스 정책은 사용자 그룹, 사용자 정책, 사용자 액세스 제어 리스트(ACL), 버킷 정책(Policy)등 다양한 정책 유형을 포함합니다. 액세스 정책 평가에서 중요한 요소는 다음과 같습니다.
1. 사용자 실명 인증: 사용자가 COS 리소스에 액세스할 때 다음과 같은 두 가지 상황이 있습니다.
서명이 있는 경우 COS는 서명 요청을 하여 사용자의 계정 정보를 리졸브한 후 요청을 CAM에 포워딩하여 실명 인증을 진행합니다.
서명이 없는 경우 익명 사용자로 분류되어 다음 링크의 인증으로 넘어갑니다.
2. 액세스 정책 구별: 액세스 정책은 사용자 그룹, 사용자, 버킷 등 다양한 유형의 정책을 포함하며 액세스 정책은 액세스 정책 순서에 따라 분류됩니다.
3. 정책 컨텍스트 정보: 리소스 액세스 요청을 프로세스 할 때 사용자 그룹 정책, 사용자 정책, 버킷 정책 등 여러 가지 정책 기록 권한의 세부 사항에 따라 종합적으로 판단하여 요청 통과를 결정합니다.
액세스 정책 평가 과정
Tencent Cloud COS가 요청을 받았을 때 먼저 요청자 자격을 확인하고 사용자 정책, 버킷 액세스 정책, 리소스를 기반으로 한 액세스 제어 리스트와 관련한 요청자의 권한 소유 여부를 인증한 후 요청을 확인합니다.
Tencent Cloud COS가 요청을 받으면 먼저 실명 인증을 진행하며 실명 인증 결과에 따라 요청자 자격을 분류하여 자격 별로 다양한 응답을 합니다.
1. 인증을 거친 Tencent Cloud 루트 계정: 루트 계정은 가지고 있는 리소스에 대한 모든 작업 권한을 가집니다. 그러나 권한을 가지고 있지 않은 리소스에 대해서는 리소스 권한 평가를 해야 합니다. 인증이 통과되면 리소스 액세스가 허용됩니다.
2. 인증을 거친 CAM 사용자(서브 계정 혹은 협업 파트너): 사용자 정책 평가, CAM 사용자는 반드시 상위 루트 계정이 권한을 부여해야 관련 액세스 허가를 받을 수 있습니다. CAM 사용자가 기타 루트 계정에 속한 리소스에 액세스 해야 할 경우 CAM 사용자가 속한 루트 계정의 리소스 권한 평가가 필요합니다. 인증이 통과되면 리소스 액세스가 허용됩니다.
3. 자격 특징이 없는 익명 사용자: 리소스 권한 평가 시, 버킷 액세스 정책 또는 버킷 및 객체의 액세스 제어 리스트의 권한을 평가합니다. 인증이 통과되면 리소스 액세스가 허용됩니다.
4. 상기 사용자 이외의 요청자는 액세스가 거부됩니다.
액세스 정책 평가 근거
Tencent Cloud 권한 시스템의 액세스 정책 평가 과정에서 모든 과정은 정책 컨텍스트 정보에 따라 권한 평가가 진행되며 다음 몇 가지 기본 원칙이 있습니다.
1. 모든 요청은 암묵적 거부(deny)가 기본 원칙입니다. 루트 계정은 계정에 속한 모든 리소스에 액세스할 수 있는 권한을 가집니다.
2. 사용자 그룹 정책, 사용자 정책, 버킷 정책 또는 버킷/객체 액세스 제어 리스트에서 명시적인 허용이 있는 경우 기본 값을 덮어씁니다.
3. 임의의 정책에서 명시적으로 거부하는 경우 임의의 허용을 덮어씁니다.
4. 적용 권한 범위는 자격에 따른 정책(사용자 그룹 정책, 사용자 정책)과 리소스에 따른 정책(버킷 정책이나 버킷/객체 액세스 제어 리스트) 결합에 따라 결정됩니다.
설명:
명시적 거부: 사용자 정책, 사용자 그룹 정책, 버킷 정책에서 특정 사용자에게 명확한 Deny 정책을 적용합니다. 예를 들어 루트 계정이 사용자 정책에서 GET Object
작업을 진행하는 서브 계정 UIN 100000000011에게 명시적인 Deny 정책을 적용했다면 그 서브 계정은 루트 계정의 객체 리소스를 다운로드할 수 없습니다.
명시적 허용: 사용자 정책, 사용자 그룹 정책, 버킷 정책, 버킷 ACL의 grant-\\*
에서 특정 사용자에게 허용 정책을 적용합니다.
모든 사용자 거부: 버킷 정책에서 Deny anyone
을 명확히 지정하여 모든 사용자를 거부한 후 서명이 없는 임의의 요청은 거절하고 서명이 있는 요청은 자격 정책에 근거하여 인증을 진행합니다.
모든 사용자 허용: 버킷 정책에서 Allow anyone
을 지정하거나 버킷 ACL에서 public-\\*
을 지정합니다.
적용 권한 범위는 자격 기반 정책과 리소스 기반 정책의 결합입니다. 한번 완전한 인증을 거칠 때 먼저 사용자의 자격을 리졸브하고 그 자격에 따라 액세스 권한을 가진 리소스가 있는지 여부를 가리는 권한 인증이 진행됩니다. 또한 리소스 기반 정책에 따라 익명 사용자로 보이는 사용자에 대해 권한 인증을 진행합니다. 두 번의 인증에서 한 번이라도 인증에 성공하면 액세스가 가능합니다.
액세스 정책 평가 근거는 아래 그림과 같이 보여집니다. 먼저 요청 중에 서명 소유 여부에 따라 익명 사용자인지 아닌지 평가합니다. 익명 사용자에 해당하는 경우 평가 정책을 모든 사용자 거부 또는 모든 사용자 허용 정책을 채택하며 그 판단에 따라 액세스 허용 및 거부가 이루어집니다. 사용자가 합법적인 CAM 사용자 또는 리소스를 가진 루트 계정이라면 평가 정책에서 명시적 거부, 명시적 허용 또는 모든 사용자 허용 정책을 채택하고 그 판단에 따라 액세스 허용 및 거부가 이루어집니다.
정책 컨텍스트 정보
정책 컨텍스트 정보는 정책 기록 권한 세부사항입니다. 최소 권한 원칙에서 사용자가 정책의 아래 정보를 명확히 지정해야 합니다. 위탁자(principal): 어떤 서브 계정(사용자 ID 작성 필요), 협업 파트너(사용자 ID 작성 필요), 익명 사용자 또는 사용자 그룹에게 권한 부여가 필요한지 명확히 지정할 필요가 있습니다. 임시 키로 액세스를 시도한다면 이 항목을 지정할 필요가 없습니다.
명령(statement): 다음 매개변수 중에 적합한 매개변수를 작성합니다.
효력(effect): 해당 정책에 대해 '허용'하는지 '명시적 거부'하는지 명확히 기술해야 합니다. allow와 deny 두 가지 상황이 포함됩니다.
작업(action): 해당 정책에 대해 허용 또는 거부 작업을 명확히 기술해야 합니다. 단일 API 작업이나 여러 API 작업의 결합 작업일 수 있습니다.
리소스(resource): 해당 정책이 권한을 부여한 구체적인 리소스를 명확히 기술해야 합니다. 리소스는 6단식 기술을 사용하며, 리소스 범위를 지정된 파일로 제한할 수 있습니다. 예를 들어 exampleobject.jpg 또는 examplePrefix/*와 같은 지정 디렉터리가 있습니다. 업무상 필요 외에는 모든 리소스에 액세스할 수 있는 권한 즉, 와일드카드*를 임의로 부여하지 마십시오.
조건(condition): 정책의 효력이 발생하는 규제 조건을 기술합니다. 조건에는 오퍼레이터, 작업 키와 작업 값 구성이 포함됩니다. 조건 값은 시간, IP 주소 등의 정보를 포함합니다.
액세스 정책 평가 예시
루트 계정 UIN 100000000001이 서브 계정 UIN 100000000011를 위해 사용자 사전 설정 정책을 연결하면, 서브 계정은 루트 계정의 리소스에 대해 읽기만 허용되며, 상세 내용은 아래와 같습니다. 해당 사용자 정책은 서브 계정이 List
, Get
, Head
, OptionsObject
의 모든 작업을 실행하도록 허용합니다.
{
"version": "2.0",
"statement": [
{
"action": [
"cos:List*",
"cos:Get*",
"cos:Head*",
"cos:OptionsObject"
],
"resource": "*",
"effect": "allow"
}
]
}
또한 루트 계정은 개인 읽기/쓰기 버킷 examplebucket-1250000000
에 다음 버킷 정책을 추가합니다.
{
"Statement": [
{
"Principal": {
"qcs": [
"qcs::cam::anyone:anyone"
]
},
"Effect": "Deny",
"Action": [
"name/cos:GetObject"
],
"Resource": [
"qcs::cos:ap-guangzhou:uid/100000000011:examplebucket-1250000000/*"
]
}
],
"version": "2.0"
}
이 항목의 버킷 정책은 모든 사용자가 실행하는 객체 다운로드(GetObject
) 작업을 명시적으로 거부합니다. 따라서 액세스 정책 평가 과정에서 다음과 같이 실행됩니다.
1. 서브 계정에 서명 매개변수 요청 GetObject
가 있는 경우, 해당 요청에 표시되는 사용자 자격에 부합하는 사용자 정책이 적용되어 액세스 정책 평가 인증이 통과됩니다.
2. 서브 계정에 서명 매개변수 요청 GetObject
가 없는 경우, 시스템에 의해 익명 요청으로 판단되며 버킷 정책에 의해 액세스가 거부됩니다.
문제 해결에 도움이 되었나요?