최신 업데이트:2025-08-18 15:58:39
권한 정책(IAM Policy)은 Identity and Access Management의 핵심 요소로, 사용자, 그룹 또는 역할의 리소스 접근 권한을 정의하는 데 사용됩니다. 그 기능은 일련의 권한 규칙을 통해 누가(사용자 또는 개체) 어떤 리소스에 접근하고 어떤 특정 작업을 수행할 수 있는지를 세밀하게 제어하는 것입니다. IAM 정책의 핵심 목적은 리소스 보안을 보장하고, 무단 접근을 방지하며, 다양한 비즈니스 요구를 충족시키는 유연한 권한 관리를 제공하는 것입니다. 이를 통해 기업은 사용자 권한을 효과적으로 관리하고 최소 권한 원칙을 준수하며 잠재적 보안 위험을 줄일 수 있습니다. 일반적으로 JSON 형식으로 작성되며, 허용되거나 거부되는 특정 작업을 상세히 명시합니다. 예를 들어, IAM 정책은 사용자 그룹이 특정 버킷에 접근하도록 허용하거나 읽기 전용 작업으로 제한할 수 있습니다.
권한 정책의 형식은 다음과 같습니다:
{
"version": "1",
"statement": [
{
"action": [
"wos:GetBucket"
],
"resource": [
"wsc:wos:*:*:testbucket"
],
"effect": "allow"
},
{
"action": [
"wos:PutObject",
"wos:GetObject",
"wos:DeleteObject"
],
"resource": [
"wsc:wos:*:*:testbucket/*"
],
"effect": "allow"
}
]
}
주 계정은 이러한 정책을 사용하여 IAM 시스템 내 하위 계정에 권한을 부여할 수 있습니다. 정책 내에 한 개의 statement가 존재합니다(하나의 정책에 여러 statement 포함 가능). statement 내에는 해당 action, resource, effect가 지정되어 있습니다.
이 정책 설정의 권한: testbucket 스페이스 내 모든 파일 정보 나열; testbucket 스페이스에 파일 업로드; testbucket 스페이스 내 파일 다운로드; testbucket 스페이스 내 파일 삭제.
version은 권한 정책의 버전을 정의하며, 현재 지원되는 버전은 "1"입니다.
승인 의미는 statement를 통해 기술됩니다. 비즈니스 시나리오에 따라 여러 개의 의미를 포함할 수 있으며, 각각 action, effect, resource에 대한 설명을 포함합니다. 요청이 발생할 때마다 시스템은 순차적으로 매칭을 확인합니다. 성공적으로 매칭된 모든 statement는 effect 설정에 따라 allow와 deny로 분류되며, deny가 우선순위를 가집니다. 모든 매칭이 통과되면 요청이 인증됩니다. 매칭이 성공했을 때 차단(deny)이 존재하거나, 매칭 성공 항목이 없을 경우 요청은 접근이 금지됩니다.
Action은 wos가 제공하는 S3 API 또는 콘솔 작업을 의미합니다. 액션 규칙은 wos:{action_name}이며, * 와일드카드를 지원하고 * 는 0개 이상의 임의 영문자를 나타냅니다. 예를 들어 wos:List*는 action_name이 List로 시작하는 wos가 제공하는 모든 S3 API 또는 콘솔 작업을 의미합니다.
Action은 목록 형태로, 하나 이상의 액션을 선택할 수 있으며 모든 action_name에는 “wos:” 접두사가 필수입니다. 여러 액션이 존재할 수 있습니다.
액션은 세 가지 범주로 구분됩니다:
1.Service-level operations: wos:GetService와 유사한 작업에 대응.
특정 action과 S3 API의 대응 관계:
| S3 API | action |
|---|---|
| GetService | wos:GetService |
콘솔 작업과의 대응 관계:
| Console operation | action |
|---|---|
| Buckets | |
| View | wos:GetService |
| Bucket-Manage-Basic statistics / Detection statistics / Overview | |
| View | wos: GetBucketAnalysis |
Note:
- GetService 권한이 하위 계정에 할당되면, 하위 계정은 상위 계정이 소유한 모든 스페이스를 획득할 수 있습니다(하위 계정이 생성한 스페이스의 소유자는 상위 계정임).
- 콘솔을 사용하는 모든 하위 계정은 GetService 권한이 있어야 합니다. 그렇지 않으면 콘솔의 다른 작업이 정상적으로 사용되지 않을 수 있습니다.
- 하위 계정에 GetBucketAnalysis 권한이 할당된 경우, 통계 분석 메뉴의 모든 항목을 볼 수 있습니다.
2. Bucket level operations: wos:PutBucketLifecycle, wos:GetBucket 등과 같은 작업에 대응. 작업 대상은 Bucket.
특정 action과 S3 API의 대응 관계:
| S3 API | action |
|---|---|
| GetBucket(ListObjects) | wos: GetBucket |
| GetBucketLifecycle | wos: GetBucketLifecycle |
| PutBucketLifecycle | wos: PutBucketLifecycle |
| DeleteBucketLifecycle | wos:DeleteBucketLifecycle |
| ListMultipartUploads | wos: ListMultipartUploads极> |
콘솔 작업과의 대응 관계:
| Console operation | action |
|---|---|
| Buckets | |
| Create Bucket | wos: PutBucket |
| Buckets-Manage-File management | |
| Query (view) | wos: GetBucket |
| Buckets-Manage-Basic settings | |
| View-Back-To-Origin | wos: GetBucketMirror |
| Edit-Back-To-Origin | wos: PutBucketMirror |
| Delete-Back-To-Origin | wos:DeleteBucketMirror |
| View-life cycle settings | wos: GetBucketLifecycle |
| Create rule-life cycle settings | wos: PutBucketLifecycle |
| Edit-life cycle settings极 | wos: PutBucketLifecycle |
| Clear all rules-life cycle settings | wos:DeleteBucketLifecycle |
| Delete-life cycle settings | wos:DeleteBucketLifecycle |
| Create rules-CORS settings | wos: PutBucketCors |
| Edit-CORS settings | wos: PutBucketCors |
| View-CORS settings | wos: GetBucketCors |
| Delete-CORS settings | wos:DeleteBucketCors |
| Clear all rules-CORS settings | wos:DeleteBucketCors |
| Delete Bucket | wos:DeleteBucket |
| Buckets-manage-Domain Management | |
| View-domain name | wos: GetBucketDomain |
| Bind custom domain name | wos: PutBucketDomain |
| Modify protocol | wos: PutBucketDomain |
| Delete-domain name | wos:DeleteBucketDomain |
3. Object level operation: wos:GetObject, wos:PutObject, wos:DeleteObject, wos:AbortMultipartUpload 등과 같은 작업에 대응. 작업 대상은 Object.
특정 action과 S3 API의 대응 관계:
| S3 API | action |
|---|---|
| GetObject | wos:GetObject |
| HeadObject | wos: HeadObject |
| PutObject | wos: PutObject |
| PostObject | wos: PutObject |
| InitiateMultipartUpload | wos: PutObject |
| UploadPart | wos: PutObject |
| CompleteMultipartUpload | wos: PutObject |
| DeleteObject | wos:DeleteObject |
| MultiDelete | wos:DeleteObject |
| AbortMultipartUpload | wos: AbortMultipartUpload |
| ListParts | wos: ListParts |
| CopyObject | wos:GetObject,wos:PutObject |
| RestoreObject | wos:RestoreObject |
콘솔 작업과의 대응 관계:
| Console operation | action |
|---|---|
| Buckets-Manage-File management | |
| New folder | wos: PutFolder |
| Upload file | wos: PutObject |
| Delete | wos:DeleteObject |
| Rename | wos: PutObject |
| Restore | wos:RestoreObject |
| Configure Expiration Data | wos:DeleteObject |
Resource는 wos에 저장된 리소스를 의미합니다. 리소스 규칙은 wsc:wos:{region}:{bucket_owner}:{bucket_name}/{object_name}이며, * 와일드카드를 지원합니다. region 필드는 현재 지원되지 않으며 "*"로 설정됩니다.
resource는 목록 형태로, 하나 이상의 리소스를 포함할 수 있습니다.
Effect는 statement의 승인 결과(allow/deny)를 나타내며, 각각 허용/거부를 의미합니다. 여러 statement가 동시에 매칭될 경우 deny가 우선순위 를 가집니다.
예: 특정 디렉토리 삭제 금지 & 다른 파일에 대한 전체 권한 부여: