버킷 및 그룹 액세스 정책을 사용합니다
StorageGRID은 AWS(Amazon Web Services) 정책 언어를 사용하여 S3 테넌트가 해당 버킷 및 오브젝트 내의 버킷에 대한 액세스를 제어할 수 있도록 합니다. StorageGRID 시스템은 S3 REST API 정책 언어의 하위 집합을 구현합니다. S3 API에 대한 액세스 정책은 JSON으로 기록됩니다.
액세스 정책 개요
StorageGRID에서 지원하는 액세스 정책에는 두 가지 유형이 있습니다.
-
* 버킷 정책 * - GetBucketPolicy, PutBucketPolicy 및 DeleteBucketPolicy S3 API 작업 또는 테넌트 관리자 또는 테넌트 관리 API를 사용하여 관리됩니다. 버킷 정책은 버킷에 첨부되므로 버킷 소유자 계정 또는 버킷에 대한 다른 계정 및 버킷에 있는 오브젝트에 대한 사용자의 액세스를 제어하도록 구성됩니다. 버킷 정책은 하나의 버킷과 여러 그룹에만 적용됩니다.
-
테넌트 관리자 또는 테넌트 관리 API를 사용하여 구성된 * 그룹 정책 * 입니다. 그룹 정책은 계정의 그룹에 연결되므로 해당 그룹이 해당 계정이 소유한 특정 리소스에 액세스할 수 있도록 구성됩니다. 그룹 정책은 하나의 그룹에만 적용되고 여러 버킷에 적용될 수 있습니다.
그룹 정책과 버킷 정책 간에는 우선 순위에 차이가 없습니다. |
StorageGRID 버킷 및 그룹 정책은 아마존에서 정의한 특정 문법을 따릅니다. 각 정책 안에는 정책 문의 배열이 들어 있으며 각 문에는 다음 요소가 포함되어 있습니다.
-
정책 ID(SID)(선택 사항)
-
효과
-
Principal/NotPrincipal입니다
-
리소스/NotResource입니다
-
작업/NotAction
-
조건(선택 사항)
정책 문은 이 구조를 사용하여 권한을 지정합니다. pert <effect> <principal>이(가) <condition>이(가) 적용될 때 <Resource>에서 <Action>을(를) 수행하도록 허용/거부합니다.
각 정책 요소는 특정 함수에 사용됩니다.
요소 | 설명 |
---|---|
SID |
SID 요소는 선택 사항입니다. SID는 사용자에 대한 설명으로만 제공됩니다. StorageGRID 시스템에서 저장하지만 해석되지 않습니다. |
효과 |
Effect 요소를 사용하여 지정된 작업의 허용 여부를 설정합니다. 지원되는 작업 요소 키워드를 사용하여 버킷 또는 오브젝트에 대해 허용(또는 거부)하는 작업을 식별해야 합니다. |
Principal/NotPrincipal입니다 |
사용자, 그룹 및 계정이 특정 리소스에 액세스하고 특정 작업을 수행하도록 허용할 수 있습니다. 요청에 S3 서명이 포함되지 않은 경우 와일드카드 문자(*)를 보안 주체에 지정하여 익명 액세스가 허용됩니다. 기본적으로 계정 루트만 해당 계정이 소유한 리소스에 액세스할 수 있습니다. 버킷 정책에서 Principal 요소만 지정하면 됩니다. 그룹 정책의 경우 정책이 연결된 그룹이 암시적 Principal 요소입니다. |
리소스/NotResource입니다 |
Resource 요소는 버킷 및 오브젝트를 식별합니다. ARN(Amazon Resource Name)을 사용하여 리소스를 식별하는 버킷 및 객체에 대한 권한을 허용하거나 거부할 수 있습니다. |
작업/NotAction |
Action 및 Effect 요소는 권한의 두 구성 요소입니다. 그룹이 리소스를 요청하면 리소스에 대한 액세스가 부여되거나 거부됩니다. 명시적으로 권한을 할당하지 않는 한 액세스가 거부되지만 명시적 DENY를 사용하여 다른 정책이 부여한 권한을 재정의할 수 있습니다. |
조건 |
Condition 요소는 선택 요소입니다. 조건을 사용하면 식을 만들어 정책을 적용해야 하는 시기를 결정할 수 있습니다. |
Action 요소에서 와일드카드 문자(*)를 사용하여 모든 작업이나 작업의 하위 집합을 지정할 수 있습니다. 예를 들어 이 작업은 S3:GetObject , S3:PutObject 및 S3:DeleteObject 와 같은 사용 권한을 일치시킵니다.
s3:*Object
Resource 요소에서 와일드카드 문자(\ ) 및 (?)를 사용할 수 있습니다. 별표()가 0개 이상의 문자와 일치하면 물음표(?)가 모든 단일 문자와 일치합니다.
Principal 요소에서 모든 사용자에게 권한을 부여하는 익명 액세스를 설정하는 것 외에는 와일드카드 문자는 지원되지 않습니다. 예를 들어 와일드카드(*)를 Principal 값으로 설정합니다.
"Principal":"*"
"Principal":{"AWS":"*"}
다음 예제에서는 Effect , Principal , Action 및 Resource 요소를 사용합니다. 이 예에서는 "허용"의 효과를 사용하여 Principals, 관리자 그룹 및 재무 그룹 federated-group/finance
, 이름이 지정된 버킷에서 mybucket
작업을 수행할 수 있는 권한 s3:ListBucket
및 해당 버킷 내의 모든 객체에 대한 작업을 s3:GetObject
제공하는 완전한 버킷 정책 문을 보여 federated-group/admin
줍니다.
{ "Statement": [ { "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::27233906934684427525:federated-group/admin", "arn:aws:iam::27233906934684427525:federated-group/finance" ] }, "Action": [ "s3:ListBucket", "s3:GetObject" ], "Resource": [ "arn:aws:s3:::mybucket", "arn:aws:s3:::mybucket/*" ] } ] }
버킷 정책은 크기 제한이 20,480바이트이고 그룹 정책은 크기 제한이 5,120바이트입니다.
정책의 일관성
기본적으로 그룹 정책에 대한 모든 업데이트는 최종적으로 일치합니다. 그룹 정책이 일관되면 정책 캐싱으로 인해 변경 내용이 적용되는 데 15분이 더 걸릴 수 있습니다. 기본적으로 버킷 정책에 대한 모든 업데이트는 매우 일관적입니다.
필요에 따라 버킷 정책 업데이트의 일관성 보장을 변경할 수 있습니다. 예를 들어 사이트 중단 중에 버킷 정책의 변경을 사용할 수 있도록 할 수 있습니다.
이 경우 PutBucketPolicy 요청에서 헤더를 설정하거나 Put Bucket 정합성 요청을 사용할 수 Consistency-Control
있습니다. 버킷 정책의 정합성이 보장되면 정책 캐싱으로 인해 변경 내용이 적용되는 데 8초 더 걸릴 수 있습니다.
일시적 상황을 해결하기 위해 일관성을 다른 값으로 설정한 경우 작업을 마치면 버킷 수준 설정을 원래 값으로 다시 설정해야 합니다. 그렇지 않으면 이후의 모든 버킷 요청에 수정된 설정이 사용됩니다. |
정책 설명에 ARN을 사용합니다
정책 문에서 ARN은 Principal 및 Resource 요소에서 사용됩니다.
-
이 구문을 사용하여 S3 리소스 ARN을 지정합니다.
arn:aws:s3:::bucket-name arn:aws:s3:::bucket-name/object_key
-
이 구문을 사용하여 ID 리소스 ARN(사용자 및 그룹)을 지정합니다.
arn:aws:iam::account_id:root arn:aws:iam::account_id:user/user_name arn:aws:iam::account_id:group/group_name arn:aws:iam::account_id:federated-user/user_name arn:aws:iam::account_id:federated-group/group_name
기타 고려 사항:
-
별표(*)를 와일드카드로 사용하여 개체 키 안에 0개 이상의 문자를 일치시킬 수 있습니다.
-
개체 키에 지정할 수 있는 국제 문자는 JSON UTF-8 또는 JSON\u 이스케이프 시퀀스를 사용하여 인코딩해야 합니다. 퍼센트 인코딩은 지원되지 않습니다.
PutBucketPolicy 작업에 대한 HTTP 요청 본문은 charset=UTF-8로 인코딩되어야 합니다.
정책에서 리소스를 지정합니다
정책 문에서 Resource 요소를 사용하여 사용 권한이 허용되거나 거부되는 버킷 또는 개체를 지정할 수 있습니다.
-
각 정책 문에는 Resource 요소가 필요합니다. 정책에서 리소스는 요소로 표시되거나
NotResource
제외를 위해 요소로Resource
표시됩니다. -
S3 리소스 ARN을 사용하여 리소스를 지정합니다. 예를 들면 다음과 같습니다.
"Resource": "arn:aws:s3:::mybucket/*"
-
개체 키 내에서 정책 변수를 사용할 수도 있습니다. 예를 들면 다음과 같습니다.
"Resource": "arn:aws:s3:::mybucket/home/${aws:username}/*"
-
리소스 값은 그룹 정책이 생성될 때 아직 존재하지 않는 버킷을 지정할 수 있습니다.
정책에 보안 주체를 지정합니다
Principal 요소를 사용하여 policy 문에 의해 리소스에 대한 액세스가 허용/거부된 사용자, 그룹 또는 테넌트 계정을 식별합니다.
-
버킷 정책의 각 정책 선언에는 Principal 요소가 포함되어야 합니다. 그룹 정책의 정책 설명은 그룹이 보안 주체로 인식되기 때문에 Principal 요소가 필요하지 않습니다.
-
정책에서 주체는 "Principal" 또는 "NotPrincipal" 요소로 표시됩니다.
-
계정 기반 ID는 ID 또는 ARN을 사용하여 지정해야 합니다.
"Principal": { "AWS": "account_id"} "Principal": { "AWS": "identity_arn" }
-
이 예에서는 계정 루트 및 계정의 모든 사용자를 포함하는 테넌트 계정 ID 27233906934684427525를 사용합니다.
"Principal": { "AWS": "27233906934684427525" }
-
계정 루트만 지정할 수 있습니다.
"Principal": { "AWS": "arn:aws:iam::27233906934684427525:root" }
-
특정 페더레이션 사용자("Alex")를 지정할 수 있습니다.
"Principal": { "AWS": "arn:aws:iam::27233906934684427525:federated-user/Alex" }
-
특정 통합 그룹("관리자")을 지정할 수 있습니다.
"Principal": { "AWS": "arn:aws:iam::27233906934684427525:federated-group/Managers" }
-
익명 보안 주체를 지정할 수 있습니다.
"Principal": "*"
-
모호함을 방지하려면 사용자 이름 대신 사용자 UUID를 사용할 수 있습니다.
arn:aws:iam::27233906934684427525:user-uuid/de305d54-75b4-431b-adb2-eb6b9e546013
예를 들어 Alex가 조직을 떠나고 사용자 이름이 삭제된다고 가정해
Alex
보겠습니다. 새 Alex가 조직에 합류하여 동일한 사용자 이름이 할당된 경우Alex
새 사용자는 원래 사용자에게 부여된 권한을 의도치 않게 상속할 수 있습니다. -
Principal 값은 버킷 정책이 생성될 때 아직 존재하지 않는 그룹/사용자 이름을 지정할 수 있습니다.
정책에서 사용 권한을 지정합니다
정책에서 Action 요소는 리소스에 대한 권한을 허용/거부하는 데 사용됩니다. 정책에서 지정할 수 있는 사용 권한 집합이 있으며, 이러한 권한은 "작업" 또는 "NotAction" 요소로 표시됩니다. 각 요소는 특정 S3 REST API 작업에 매핑됩니다.
이 표에는 버킷에 적용되는 사용 권한과 객체에 적용되는 사용 권한이 나열되어 있습니다.
이제 Amazon S3는 PutBucketReplication 및 DeleteBucketReplication 작업 모두에 대해 S3:PutReplicationConfiguration 권한을 사용합니다. StorageGRID는 원래 Amazon S3 사양과 일치하는 각 작업에 대해 별도의 권한을 사용합니다. |
기존 값을 덮어쓰는 데 PUT을 사용할 때 삭제가 수행됩니다. |
버킷에 적용되는 권한
권한 | S3 REST API 작업 | StorageGRID 사용자 지정 |
---|---|---|
S3:생성 버킷 |
CreateBucket |
예.
|
S3:삭제 버킷 |
삭제 버킷 |
|
S3:DeleteBucketMetadataNotification |
버킷 메타데이터 알림 구성을 삭제합니다 |
예 |
S3:삭제 BucketPolicy |
DeleteBuckketPolicy를 참조하십시오 |
|
S3:DeleteReplicationConfiguration |
DeleteBuckReplication 을 참조하십시오 |
예, 삽입 및 삭제 권한을 구분합니다 |
S3:GetBuckketAcl |
GetBuckketAcl |
|
S3:GetBucketCompliance |
버킷 규정 준수 가져오기(더 이상 사용되지 않음) |
예 |
S3:GetBuckketConsistency |
버킷 일관성 확보 |
예 |
S3:GetBuckketCORS |
GetBuckketCors 를 참조하십시오 |
|
S3:GetEncryptionConfiguration |
GetBuckketEncryption을 참조하십시오 |
|
S3:GetBucketLastAccessTime |
버킷 최종 액세스 시간 가져오기 |
예 |
S3:GetBucketLocation |
GetBucketLocation 을 참조하십시오 |
|
S3:GetBuckMetadataNotification 을 참조하십시오 |
Bucket 메타데이터 알림 구성 가져오기 |
예 |
S3:GetBucketNotification 을 참조하십시오 |
GetBuckNotificationConfiguration 을 참조하십시오 |
|
S3:GetBuckketObjectLockConfiguration |
GetObjectLockConfiguration 을 참조하십시오 |
|
S3:GetBuckketPolicy를 참조하십시오 |
GetBuckketPolicy를 참조하십시오 |
|
S3:GetBucketTagging |
GetBucketTagging |
|
S3:GetBucketVersioning |
GetBuckketVersioning 을 참조하십시오 |
|
S3:GetLifecycleConfiguration |
GetBuckLifecycleConfiguration 을 참조하십시오 |
|
S3:GetReplicationConfiguration |
GetBucketReplication 을 참조하십시오 |
|
S3:ListAllMyBucket |
|
예, 스토리지 사용량 가져오기.
|
S3:목록 버킷 |
|
|
S3:ListBuckketMultipartUploads |
|
|
S3:목록 BuckketVersions |
버킷 버전 가져오기 |
|
S3: PutBucketCompliance |
버킷 규정 준수(폐기됨) |
예 |
S3: PutBucketConsistency |
버킷 일관성을 유지합니다 |
예 |
S3: PutBucketCORS |
|
|
S3:PutEncryptionConfiguration |
|
|
S3:PutBucketLastAccessTime |
버킷 최종 접근 시간 |
예 |
S3:PutBucketMetadataNotification |
Put Bucket 메타데이터 알림 구성 |
예 |
S3: PutBucketNotification |
PutBucketNotificationConfiguration을 참조하십시오 |
|
S3:PutBucketObjectLockConfiguration |
|
|
S3: PutBucketPolicy |
BucketPolicy를 참조하십시오 |
|
S3: PutBucketTagging |
|
|
S3: PutBucketVersioning |
PutBucketVersioning을 참조하십시오 |
|
S3: PutLifecycleConfiguration |
|
|
S3:PutReplicationConfiguration |
PutBucketReplication을 참조하십시오 |
예, 삽입 및 삭제 권한을 구분합니다 |
객체에 적용되는 권한
권한 | S3 REST API 작업 | StorageGRID 사용자 지정 |
---|---|---|
S3:중단멀티업로드입니다 |
|
|
S3:BypassGovernanceRetention |
|
|
S3:DeleteObject 를 선택합니다 |
|
|
S3:삭제 ObjectTagging |
DeleteObjectTagging 을 선택합니다 |
|
S3:DeleteObjectVersionTagging |
DeleteObjectTagging(개체의 특정 버전) |
|
S3:DeleteObjectVersion |
DeleteObject(개체의 특정 버전) |
|
S3:GetObject |
|
|
S3:GetObjectAcl |
GetObjectAcl |
|
S3:GetObjectLegalHold |
GetObjectLegalHold 를 참조하십시오 |
|
S3:GetObjectRetention |
GetObjectRetention을 참조하십시오 |
|
S3:GetObjectTagging |
GetObjectTagging |
|
S3:GetObjectVersionTagging |
GetObjectTagging(개체의 특정 버전) |
|
S3:GetObjectVersion |
GetObject(개체의 특정 버전) |
|
S3:ListMultipartUploadParts(S3:ListMultimpartUploadParts) 를 |
ListParts, RestoreObject 를 참조하십시오 |
|
S3:PutObject |
|
|
S3:PutObjectLegalHold |
PutObjectLegalHold를 선택합니다 |
|
S3:PutObjectRetention |
PutObjectRetention |
|
S3:PutObjectTagging |
PutObjectTagging |
|
S3:PutObjectVersionTagging |
PutObjectTagging(개체의 특정 버전) |
|
S3:PutOverwriteObject |
|
예 |
S3:RestoreObject |
RestoreObject 를 선택합니다 |
PutOverwriteObject 권한을 사용합니다
S3:PutOverwriteObject 권한은 개체를 만들거나 업데이트하는 작업에 적용되는 사용자 지정 StorageGRID 권한입니다. 이 사용 권한의 설정에 따라 클라이언트가 개체의 데이터, 사용자 정의 메타데이터 또는 S3 오브젝트 태그 지정을 덮어쓸 수 있는지 여부가 결정됩니다.
이 권한에 사용할 수 있는 설정은 다음과 같습니다.
-
* 허용 *: 클라이언트가 개체를 덮어쓸 수 있습니다. 기본 설정입니다.
-
* 거부 *: 클라이언트가 개체를 덮어쓸 수 없습니다. Deny 로 설정된 경우 PutOverwriteObject 권한은 다음과 같이 작동합니다.
-
기존 객체가 같은 경로에 있는 경우:
-
오브젝트의 데이터, 사용자 정의 메타데이터 또는 S3 오브젝트 태깅을 덮어쓸 수 없습니다.
-
진행 중인 모든 수집 작업이 취소되고 오류가 반환됩니다.
-
S3 버전 관리를 사용하는 경우 거부 설정을 사용하면 PutObjectTagging 또는 DeleteObjectTagging 작업에서 개체 및 해당 비최신 버전에 대한 TagSet을 수정할 수 없습니다.
-
-
기존 개체를 찾을 수 없으면 이 권한은 적용되지 않습니다.
-
-
이 권한이 없으면 Allow가 설정된 것과 효과가 같습니다.
현재 S3 정책이 덮어쓰기를 허용하고 PutOverwriteObject 권한이 Deny 로 설정된 경우 클라이언트는 개체의 데이터, 사용자 정의 메타데이터 또는 개체 태그를 덮어쓸 수 없습니다. 또한 * 클라이언트 수정 방지 * 확인란이 선택된 경우(* 구성 * > * 보안 설정 * > * 네트워크 및 개체 *) 해당 설정은 PutOverwriteObject 권한 설정을 재정의합니다. |
정책에서 조건을 지정합니다
조건은 정책이 적용되는 시점을 정의합니다. 조건은 연산자 및 키 값 쌍으로 구성됩니다.
조건은 평가에 키 값 쌍을 사용합니다. 조건 요소에는 여러 조건이 포함될 수 있으며 각 조건에는 여러 키 값 쌍이 포함될 수 있습니다. 조건 블럭은 다음 형식을 사용합니다:
Condition: { condition_type: { condition_key: condition_values
다음 예제에서 IPAddress 조건은 SOURCEIP 조건 키를 사용합니다.
"Condition": { "IpAddress": { "aws:SourceIp": "54.240.143.0/24" ... }, ...
지원되는 조건 연산자
조건 연산자는 다음과 같이 분류됩니다.
-
문자열
-
숫자
-
부울
-
IP 주소입니다
-
Null 확인
조건 연산자 | 설명 |
---|---|
StringEquals |
정확한 일치(대/소문자 구분)를 기반으로 문자열 값과 키를 비교합니다. |
StringNotEquals |
키를 부정 일치(대/소문자 구분)를 기반으로 문자열 값과 비교합니다. |
StringEqualsIgnoreCase 를 참조하십시오 |
정확한 일치를 기준으로 문자열 값과 키를 비교합니다(대/소문자 무시). |
StringNotEqualsIgnoreCase 를 참조하십시오 |
Negated matching (대소문자 무시)을 기준으로 문자열 값과 키를 비교합니다. |
StringLike 를 선택합니다 |
정확한 일치(대/소문자 구분)를 기반으로 문자열 값과 키를 비교합니다. 및? 와일드카드 문자를 포함할 수 있습니다. |
StringNotLike 를 참조하십시오 |
키를 부정 일치(대/소문자 구분)를 기반으로 문자열 값과 비교합니다. 및? 와일드카드 문자를 포함할 수 있습니다. |
NumericEquals |
정확한 일치를 기준으로 키를 숫자 값과 비교합니다. |
NumericNotEquals |
키를 부정 일치를 기준으로 숫자 값과 비교합니다. |
NumericGreaterThan |
"보다 큼" 일치를 기준으로 키를 숫자 값과 비교합니다. |
NumericGreaterThanEquals |
"보다 크거나 같음" 일치를 기준으로 키를 숫자 값과 비교합니다. |
NumericLessThan |
"보다 작음" 일치를 기준으로 키를 숫자 값과 비교합니다. |
NumericLessThanEquals |
"보다 작거나 같음" 일치를 기준으로 키를 숫자 값과 비교합니다. |
불입니다 |
"true 또는 false" 일치를 기준으로 키를 부울 값과 비교합니다. |
IP 주소 |
키를 IP 주소 또는 IP 주소 범위와 비교합니다. |
NotIpAddress 를 참조하십시오 |
부정 일치를 기준으로 IP 주소 또는 IP 주소 범위와 키를 비교합니다. |
null입니다 |
현재 요청 컨텍스트에 조건 키가 있는지 확인합니다. |
지원되는 조건 키
상태 키 | 작업 | 설명 |
---|---|---|
AWS: SOURCEIP |
IP 연산자 |
요청이 전송된 IP 주소와 비교합니다. 버킷 또는 오브젝트 작업에 사용할 수 있습니다.
|
AWS: 사용자 이름 |
리소스/ID입니다 |
요청이 전송된 보낸 사람의 사용자 이름과 비교합니다. 버킷 또는 오브젝트 작업에 사용할 수 있습니다. |
S3: 구분 기호 |
S3:ListBucket 및 S3: ListBuckketVersions 권한 |
는 ListObjects 또는 ListObjectVersions 요청에 지정된 구분 기호 매개 변수와 비교됩니다. |
S3: ExistingObjectTag/<tag-key> |
S3:삭제 ObjectTagging S3:DeleteObjectVersionTagging S3:GetObject S3:GetObjectAcl 3: GetObjectTagging S3:GetObjectVersion S3:GetObjectVersionAcl S3:GetObjectVersionTagging S3: PutObjectAcl S3:PutObjectTagging S3: PutObjectVersionAcl S3:PutObjectVersionTagging |
기존 개체에 특정 태그 키와 값이 있어야 합니다. |
S3: 최대 키 |
S3:ListBucket 및 S3: ListBuckketVersions 권한 |
는 ListObjects 또는 ListObjectVersions 요청에 지정된 max-keys 매개 변수와 비교됩니다. |
S3: 오브젝트 잠금 장치 - 남은 보존 기간(일) |
S3:PutObject |
요청 헤더에 지정되거나 버킷 기본 보존 기간에서 계산된 유지 종료 날짜와 비교하여
|
S3: 오브젝트 잠금 장치 - 남은 보존 기간(일) |
S3:PutObjectRetention |
PutObjectRetention 요청에 지정된 유지 종료 날짜와 비교하여 허용 범위 내에 있는지 확인합니다. |
S3: 접두어 |
S3:ListBucket 및 S3: ListBuckketVersions 권한 |
는 ListObjects 또는 ListObjectVersions 요청에 지정된 접두사 매개 변수와 비교됩니다. |
S3: RequestObjectTag/<tag-key> |
S3:PutObject S3:PutObjectTagging S3:PutObjectVersionTagging |
개체 요청에 태그가 포함된 경우 특정 태그 키와 값이 필요합니다. |
정책에 변수를 지정합니다
정책의 변수를 사용하여 사용 가능한 정책 정보를 채울 수 있습니다. 요소의 문자열 비교와 요소에 Condition
정책 변수를 사용할 수 Resource
있습니다.
이 예제에서 변수는 ${aws:username}
Resource 요소의 일부입니다.
"Resource": "arn:aws:s3:::bucket-name/home/${aws:username}/*"
이 예제에서 변수는 ${aws:username}
조건 블록의 조건 값의 일부입니다.
"Condition": { "StringLike": { "s3:prefix": "${aws:username}/*" ... }, ...
변수 | 설명 |
---|---|
|
SOURCEIP 키를 제공된 변수로 사용합니다. |
|
제공된 변수로 사용자 이름 키를 사용합니다. |
|
서비스별 prefix key를 제공된 variable 로 사용한다. |
|
서비스별 최대 키 키를 제공된 변수로 사용합니다. |
|
특수 문자. 문자를 리터럴 * 문자로 사용합니다. |
|
특수 문자. 문자를 리터럴? 문자로 사용합니다. |
|
특수 문자. 문자를 리터럴 $ 문자로 사용합니다. |
특별한 처리가 필요한 정책을 생성합니다
때로는 정책에 따라 보안이 위험하거나 계정 루트 사용자를 잠그는 등 지속적인 작업에 위험한 사용 권한을 부여할 수 있습니다. StorageGRID S3 REST API 구현은 Amazon보다 정책 검증 중에 덜 제한적이지만 정책 평가 중에도 동일하게 엄격합니다.
정책 설명입니다 | 정책 유형입니다 | 아마존 행동 | StorageGRID 동작 |
---|---|---|---|
루트 계정에 대한 모든 권한을 스스로 거부합니다 |
버킷 |
유효하고 적용되지만 루트 사용자 계정은 모든 S3 버킷 정책 작업에 대한 권한을 보유합니다 |
동일합니다 |
사용자/그룹에 대한 모든 권한을 스스로 거부합니다 |
그룹 |
유효하고 시행되었습니다 |
동일합니다 |
외부 계정 그룹에 모든 권한을 허용합니다 |
버킷 |
주체가 잘못되었습니다 |
유효하지만 모든 S3 버킷 정책 작업에 대한 권한은 정책에서 허용하는 경우 405 메서드 허용되지 않음 오류를 반환합니다 |
외부 계정 루트 또는 사용자에게 모든 권한을 허용합니다 |
버킷 |
유효하지만 모든 S3 버킷 정책 작업에 대한 권한은 정책에서 허용하는 경우 405 메서드 허용되지 않음 오류를 반환합니다 |
동일합니다 |
모든 사용자에게 모든 작업에 대한 사용 권한을 허용합니다 |
버킷 |
유효하지만 모든 S3 버킷 정책 작업에 대한 사용 권한이 외국 계정 루트 및 사용자에 대해 405 메서드 허용 안 됨 오류를 반환합니다 |
동일합니다 |
모든 작업에 대한 모든 사용자의 권한을 거부합니다 |
버킷 |
유효하고 적용되지만 루트 사용자 계정은 모든 S3 버킷 정책 작업에 대한 권한을 보유합니다 |
동일합니다 |
보안 주체는 존재하지 않는 사용자 또는 그룹입니다 |
버킷 |
주체가 잘못되었습니다 |
유효합니다 |
리소스가 존재하지 않는 S3 버킷입니다 |
그룹 |
유효합니다 |
동일합니다 |
보안 주체는 로컬 그룹입니다 |
버킷 |
주체가 잘못되었습니다 |
유효합니다 |
정책은 개체를 넣을 수 있는 비소유자 계정(익명 계정 포함) 권한을 부여합니다. |
버킷 |
유효합니다. 객체는 생성자 계정이 소유하며 버킷 정책은 적용되지 않습니다. 생성자 계정은 개체 ACL을 사용하여 개체에 대한 액세스 권한을 부여해야 합니다. |
유효합니다. 오브젝트는 버킷 소유자 계정이 소유합니다. 버킷 정책이 적용됩니다. |
WORM(Write-Once-Read-Many) 보호
WORM(Write-Once-Read-Many) 버킷을 생성하여 데이터, 사용자 정의 오브젝트 메타데이터 및 S3 오브젝트 태깅을 보호할 수 있습니다. 새 객체를 생성하고 기존 컨텐츠를 덮어쓰거나 삭제하지 못하도록 WORM 버킷을 구성합니다. 여기에 설명된 방법 중 하나를 사용합니다.
덮어쓰기가 항상 거부되도록 하려면 다음을 수행할 수 있습니다.
-
Grid Manager에서 * 구성 * > * 보안 * > * 보안 설정 * > * 네트워크 및 개체 * 로 이동하여 * 클라이언트 수정 방지 * 확인란을 선택합니다.
-
다음 규칙 및 S3 정책을 적용합니다.
-
S3 정책에 PutOverwriteObject 거부 작업을 추가합니다.
-
DeleteObject 거부 작업을 S3 정책에 추가합니다.
-
S3 정책에 PutObject 허용 작업을 추가합니다.
-
S3 정책에서 DeleteObject를 DENY로 설정해도 "30일 후 복사본 제로" 같은 규칙이 있을 때 ILM이 개체를 삭제할 수 없습니다. |
이러한 규칙과 정책이 모두 적용되더라도 동시 쓰기를 방지하지 않습니다(상황 A 참조). 순차적 완료된 덮어쓰기를 방지합니다(상황 B 참조). |
-
상황 A *: 동시 쓰기(보호 안 됨)
/mybucket/important.doc PUT#1 ---> OK PUT#2 -------> OK
-
상황 B *: 순차적 완료된 덮어쓰기(방지됨)
/mybucket/important.doc PUT#1 -------> PUT#2 ---X (denied)