Skip to main content
본 한국어 번역은 사용자 편의를 위해 제공되는 기계 번역입니다. 영어 버전과 한국어 버전이 서로 어긋나는 경우에는 언제나 영어 버전이 우선합니다.

버킷 및 그룹 액세스 정책 사용

StorageGRID Amazon Web Services(AWS) 정책 언어를 사용하여 S3 테넌트가 버킷과 해당 버킷 내의 객체에 대한 액세스를 제어할 수 있도록 합니다. StorageGRID 시스템은 S3 REST API 정책 언어의 하위 집합을 구현합니다. S3 API에 대한 액세스 정책은 JSON으로 작성됩니다.

액세스 정책 개요

StorageGRID 는 두 가지 종류의 액세스 정책을 지원합니다.

  • *버킷 정책*은 GetBucketPolicy, PutBucketPolicy 및 DeleteBucketPolicy S3 API 작업이나 테넌트 관리자 또는 테넌트 관리 API를 사용하여 관리됩니다. 버킷 정책은 버킷에 연결되므로 버킷 소유자 계정이나 다른 계정의 사용자가 버킷과 버킷에 있는 객체에 액세스하는 것을 제어하도록 구성됩니다. 버킷 정책은 하나의 버킷에만 적용되며 여러 그룹에 적용될 수도 있습니다.

  • *그룹 정책*은 테넌트 관리자 또는 테넌트 관리 API를 사용하여 구성됩니다. 그룹 정책은 계정 내의 그룹에 첨부되므로 해당 계정이 소유한 특정 리소스에 해당 그룹이 액세스할 수 있도록 구성됩니다. 그룹 정책은 하나의 그룹에만 적용되며 여러 버킷에 적용될 수도 있습니다.

참고 그룹 정책과 버킷 정책 사이에 우선순위 차이는 없습니다.

StorageGRID 버킷 및 그룹 정책은 Amazon에서 정의한 특정 문법을 따릅니다. 각 정책 내부에는 정책 명령문 배열이 있으며, 각 명령문에는 다음 요소가 포함되어 있습니다.

  • 문장 ID(Sid) (선택 사항)

  • 효과

  • 교장/비교장

  • 리소스/비리소스

  • 행동/행동하지 않음

  • 조건(선택사항)

정책 문은 다음 구조를 사용하여 권한을 지정하기 위해 작성됩니다. <조건>이 적용될 때 <주체>가 <리소스>에 대해 <작업>을 수행하도록 허용/거부하려면 <효과>를 부여합니다.

각 정책 요소는 특정 기능에 사용됩니다.

요소 설명

시드

Sid 요소는 선택 사항입니다. Sid는 사용자를 위한 설명으로만 사용됩니다. 이는 StorageGRID 시스템에 의해 저장되지만 해석되지는 않습니다.

효과

Effect 요소를 사용하여 지정된 작업이 허용되는지 또는 거부되는지 여부를 설정합니다. 지원되는 Action 요소 키워드를 사용하여 버킷이나 객체에 허용(또는 거부)할 작업을 식별해야 합니다.

교장/비교장

사용자, 그룹 및 계정이 특정 리소스에 액세스하고 특정 작업을 수행하도록 허용할 수 있습니다. 요청에 S3 서명이 포함되어 있지 않으면 주체로 와일드카드 문자(*)를 지정하여 익명 액세스가 허용됩니다. 기본적으로 계정 루트만이 해당 계정이 소유한 리소스에 접근할 수 있습니다.

버킷 정책에서는 Principal 요소만 지정하면 됩니다. 그룹 정책의 경우 정책이 첨부된 그룹은 암묵적인 Principal 요소입니다.

리소스/비리소스

리소스 요소는 버킷과 객체를 식별합니다. Amazon 리소스 이름(ARN)을 사용하여 리소스를 식별하여 버킷과 객체에 대한 권한을 허용하거나 거부할 수 있습니다.

행동/행동하지 않음

동작 및 효과 요소는 권한의 두 가지 구성 요소입니다. 그룹이 리소스를 요청하면 해당 리소스에 대한 액세스가 허용되거나 거부됩니다. 특별히 권한을 할당하지 않는 한 액세스는 거부되지만, 명시적으로 거부를 사용하면 다른 정책에서 부여한 권한을 재정의할 수 있습니다.

상태

조건 요소는 선택 사항입니다. 조건을 사용하면 정책을 적용할 시기를 결정하는 표현식을 작성할 수 있습니다.

Action 요소에서는 와일드카드 문자(*)를 사용하여 모든 작업이나 작업의 하위 집합을 지정할 수 있습니다. 예를 들어, 이 작업은 s3:GetObject, s3:PutObject, s3:DeleteObject와 같은 권한과 일치합니다.

s3:*Object

Resource 요소에서는 와일드카드 문자(*)와 (?)를 사용할 수 있습니다. 별표(*)는 0개 이상의 문자와 일치하지만, 물음표(?)는 단일 문자와 일치합니다.

Principal 요소에서는 모든 사람에게 권한을 부여하는 익명 액세스를 설정하는 경우를 제외하고는 와일드카드 문자가 지원되지 않습니다. 예를 들어, Principal 값으로 와일드카드(*)를 설정합니다.

"Principal":"*"
"Principal":{"AWS":"*"}

다음 예에서는 명령문에서 Effect, Principal, Action, Resource 요소를 사용하고 있습니다. 이 예에서는 "허용" 효과를 사용하여 주체와 관리자 그룹에 권한을 부여하는 완전한 버킷 정책 문을 보여줍니다. federated-group/admin 그리고 금융 그룹 federated-group/finance , 작업을 수행할 수 있는 권한 s3:ListBucket 이름이 붙은 버킷에 mybucket 그리고 액션 s3:GetObject 해당 버킷 안에 있는 모든 객체에 대해.

{
  "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분이 더 걸릴 수 있습니다. 기본적으로 버킷 정책을 업데이트하면 일관성이 유지됩니다.

필요에 따라 버킷 정책 업데이트에 대한 일관성 보장을 변경할 수 있습니다. 예를 들어, 사이트 중단 중에도 버킷 정책을 변경할 수 있도록 하려는 경우가 있습니다.

이 경우에는 다음을 설정할 수 있습니다. Consistency-Control PutBucketPolicy 요청의 헤더를 사용하거나 PUT Bucket 일관성 요청을 사용할 수 있습니다. 버킷 정책이 일관성을 갖게 되면 정책 캐싱으로 인해 변경 사항이 적용되는 데 추가로 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 제외를 위해.

  • S3 리소스 ARN을 사용하여 리소스를 지정합니다. 예를 들어:

    "Resource": "arn:aws:s3:::mybucket/*"
  • 객체 키 내부에서 정책 변수를 사용할 수도 있습니다. 예를 들어:

    "Resource": "arn:aws:s3:::mybucket/home/${aws:username}/*"
  • 리소스 값은 그룹 정책이 생성될 때 아직 존재하지 않는 버킷을 지정할 수 있습니다.

정책에서 원칙 지정

Principal 요소를 사용하여 정책 문에 따라 리소스에 대한 액세스가 허용되거나 거부되는 사용자, 그룹 또는 테넌트 계정을 식별합니다.

  • 버킷 정책의 각 정책 문에는 Principal 요소가 포함되어야 합니다. 그룹 정책의 정책 문에는 그룹이 주체로 이해되므로 주체 요소가 필요하지 않습니다.

  • 정책에서 주체는 "Principal" 요소로 표시되고, 제외의 경우 "NotPrincipal"로 표시됩니다.

  • 계정 기반 ID는 ID 또는 ARN을 사용하여 지정해야 합니다.

    "Principal": { "AWS": "account_id"}
    "Principal": { "AWS": "identity_arn" }
  • 이 예에서는 계정 root와 계정의 모든 사용자를 포함하는 테넌트 계정 ID 27233906934684427525를 사용합니다.

     "Principal": { "AWS": "27233906934684427525" }
  • root 계정만 지정할 수 있습니다.

    "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 요소는 리소스에 대한 권한을 허용/거부하는 데 사용됩니다. 정책에서 지정할 수 있는 권한 집합이 있는데, 이는 "Action" 요소로 표시되고, 제외를 위해서는 "NotAction"으로 표시됩니다. 이러한 각 요소는 특정 S3 REST API 작업에 매핑됩니다.

표에는 버킷에 적용되는 권한과 개체에 적용되는 권한이 나열되어 있습니다.

참고 Amazon S3에서는 이제 PutBucketReplication 및 DeleteBucketReplication 작업 모두에 s3:PutReplicationConfiguration 권한을 사용합니다. StorageGRID 각 작업에 대해 별도의 권한을 사용하는데, 이는 원래 Amazon S3 사양과 일치합니다.
참고 put을 사용하여 기존 값을 덮어쓰면 삭제가 수행됩니다.

버킷에 적용되는 권한

권한 S3 REST API 작업 StorageGRID 용 사용자 정의

s3:버킷 만들기

버킷 만들기

네.

참고: 그룹 정책에서만 사용하세요.

s3:버킷 삭제

버킷 삭제

s3:버킷메타데이터삭제알림

버킷 메타데이터 알림 구성 삭제

s3:버킷 삭제 정책

버킷 정책 삭제

s3:복제 구성 삭제

버킷 복제 삭제

예, PUT 및 DELETE에 대한 별도의 권한이 있습니다.

s3:GetBucketAcl

GetBucketAcl

s3:GetBucketCompliance

GET 버킷 규정 준수(더 이상 사용되지 않음)

s3:버킷 일관성 가져오기

버킷 일관성 가져오기

s3:GetBucketCORS

겟버킷코스

s3:암호화 구성 가져오기

버킷 암호화 받기

s3:GetBucket마지막 접근 시간

GET 버킷 마지막 액세스 시간

s3:버킷 위치 가져오기

버킷 위치 가져오기

s3:GetBucketMetadataNotification

GET 버킷 메타데이터 알림 구성

s3:버킷 알림 받기

버킷 알림 구성 가져오기

s3:GetBucketObjectLockConfiguration

GetObjectLockConfiguration

s3:버킷 정책 가져오기

버킷 정책 가져오기

s3:버킷태깅 가져오기

버킷태깅 받기

s3:버킷 버전 가져오기

GetBucketVersioning

s3:수명주기구성 가져오기

GetBucketLifecycleConfiguration

s3:복제 구성 가져오기

GetBucketReplication

s3:내 버킷 모두 나열

  • 리스트버킷

  • GET 스토리지 사용량

네, GET 저장소 사용량에 대해서입니다.

참고: 그룹 정책에서만 사용하세요.

s3:리스트버킷

  • 목록 객체

  • 헤드버킷

  • 복원 개체

s3:ListBucketMultipartUploads

  • ListMultipartUploads

  • 복원 개체

s3:리스트버킷버전

GET 버킷 버전

s3:PutBucketCompliance

PUT 버킷 규정 준수(더 이상 사용되지 않음)

s3:PutBucketConsistency

PUT 버킷 일관성

s3:PutBucketCORS

  • DeleteBucketCors†

  • 풋버킷코스

s3:PutEncryptionConfiguration

  • 버킷 암호화 삭제

  • PutBucket 암호화

s3:PutBucket마지막 접근 시간

PUT 버킷 마지막 액세스 시간

s3:PutBucketMetadataNotification

PUT 버킷 메타데이터 알림 구성

s3:PutBucketNotification

PutBucketNotificationConfiguration

s3:PutBucketObjectLock구성

  • CreateBucket을 사용하여 x-amz-bucket-object-lock-enabled: true 요청 헤더(s3:CreateBucket 권한도 필요함)

  • PutObjectLockConfiguration

s3:PutBucketPolicy

PutBucketPolicy

s3:PutBucket태깅

  • 버킷태깅 삭제†

  • PutBucketTagging

s3:PutBucketVersioning

PutBucketVersioning

s3:PutLifecycleConfiguration

  • 버킷 수명 주기 삭제†

  • PutBucketLifecycleConfiguration

s3:PutReplicationConfiguration

PutBucketReplication

예, PUT 및 DELETE에 대한 별도의 권한이 있습니다.

객체에 적용되는 권한

권한 S3 REST API 작업 StorageGRID 용 사용자 정의

s3:멀티파트업로드 중단

  • AbortMultipartUpload

  • 복원 개체

s3:바이패스거버넌스보존

  • 개체 삭제

  • 개체 삭제

  • PutObjectRetention

s3:객체 삭제

  • 개체 삭제

  • 개체 삭제

  • 복원 개체

s3:객체태깅 삭제

DeleteObjectTagging

s3:DeleteObjectVersionTagging

DeleteObjectTagging(객체의 특정 버전)

s3:객체 버전 삭제

DeleteObject(객체의 특정 버전)

s3:객체 가져오기

  • 객체 가져오기

  • 헤드오브젝트

  • 복원 개체

  • SelectObjectContent

s3:GetObjectAcl

GetObjectAcl

s3:GetObjectLegalHold

GetObjectLegalHold

s3:객체 보존 가져오기

객체 보존 가져오기

s3:객체태깅 가져오기

GetObjectTagging

s3:GetObjectVersionTagging

GetObjectTagging(객체의 특정 버전)

s3:객체 버전 가져오기

GetObject(객체의 특정 버전)

s3:ListMultipartUploadParts

ListParts, RestoreObject

s3:객체 넣기

  • PutObject

  • 복사객체

  • 복원 개체

  • CreateMultipartUpload

  • CompleteMultipartUpload

  • 업로드파트

  • 업로드파트복사

s3:PutObjectLegalHold

PutObjectLegalHold

s3:객체 보존 넣기

PutObjectRetention

s3:PutObjectTagging

PutObjectTagging

s3:PutObjectVersionTagging

PutObjectTagging(객체의 특정 버전)

s3:PutOverwriteObject

  • PutObject

  • 복사객체

  • PutObjectTagging

  • DeleteObjectTagging

  • CompleteMultipartUpload

s3:객체 복원

복원 개체

PutOverwriteObject 권한 사용

s3:PutOverwriteObject 권한은 객체를 생성하거나 업데이트하는 작업에 적용되는 사용자 지정 StorageGRID 권한입니다. 이 권한 설정은 클라이언트가 개체의 데이터, 사용자 정의 메타데이터 또는 S3 개체 태그를 덮어쓸 수 있는지 여부를 결정합니다.

이 권한에 대한 가능한 설정은 다음과 같습니다.

  • 허용: 클라이언트가 객체를 덮어쓸 수 있습니다. 이것이 기본 설정입니다.

  • 거부: 클라이언트가 객체를 덮어쓸 수 없습니다. Deny로 설정된 경우 PutOverwriteObject 권한은 다음과 같이 작동합니다.

    • 동일한 경로에 기존 객체가 발견된 경우:

      • 객체의 데이터, 사용자 정의 메타데이터 또는 S3 객체 태그는 덮어쓸 수 없습니다.

      • 진행 중인 모든 수집 작업은 취소되고 오류가 반환됩니다.

      • S3 버전 관리가 활성화된 경우 Deny 설정은 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 체크

조건 연산자 설명

문자열 같음

대소문자를 구분하여 정확한 일치 여부를 기준으로 키를 문자열 값과 비교합니다.

문자열이 같지 않음

부정 일치(대소문자 구분)를 기반으로 키를 문자열 값과 비교합니다.

문자열은 대소문자를 무시합니다

정확한 일치 여부(대소문자 구분 없음)를 기준으로 키를 문자열 값과 비교합니다.

StringNotEqualsIgnoreCase

대소문자를 구분하지 않고 부정된 일치 항목을 기준으로 키를 문자열 값과 비교합니다.

문자열과 유사

대소문자를 구분하여 정확한 일치 여부를 기준으로 키를 문자열 값과 비교합니다. * 및 ? 와일드카드 문자를 포함할 수 있습니다.

문자열이 좋아요가 아닙니다

부정 일치(대소문자 구분)를 기반으로 키를 문자열 값과 비교합니다. * 및 ? 와일드카드 문자를 포함할 수 있습니다.

숫자와 같음

정확한 일치 여부를 기준으로 키를 숫자 값과 비교합니다.

숫자가 같지 않음

부정 일치를 기반으로 키를 숫자 값과 비교합니다.

숫자보다 큼

"보다 큼" 일치 여부를 기준으로 키를 숫자 값과 비교합니다.

숫자보다 큼

"크거나 같음" 일치를 기준으로 키를 숫자 값과 비교합니다.

숫자보다 작음

"보다 작음" 일치 여부를 기준으로 키를 숫자 값과 비교합니다.

숫자보다 작음

"작거나 같음" 일치를 기준으로 키를 숫자 값과 비교합니다.

"참 또는 거짓" 일치를 기준으로 키를 부울 값과 비교합니다.

IP 주소

키를 IP 주소 또는 IP 주소 범위와 비교합니다.

IP주소가 아님

부정된 일치를 기반으로 키를 IP 주소 또는 IP 주소 범위와 비교합니다.

현재 요청 컨텍스트에 조건 키가 있는지 확인합니다.

지원되는 조건 키

조건 키 행위 설명

aws:소스Ip

IP 운영자

요청이 전송된 IP 주소와 비교됩니다. 버킷이나 객체 작업에 사용할 수 있습니다.

참고: S3 요청이 관리 노드 및 게이트웨이 노드의 로드 밸런서 서비스를 통해 전송된 경우 이는 로드 밸런서 서비스 상류의 IP 주소와 비교됩니다.

참고: 타사의 투명하지 않은 로드 밸런서를 사용하는 경우 이는 해당 로드 밸런서의 IP 주소와 비교됩니다. 어느 X-Forwarded-For 헤더는 유효성을 확인할 수 없으므로 무시됩니다.

aws:사용자 이름

리소스/아이덴티티

요청이 전송된 발신자의 사용자 이름과 비교합니다. 버킷이나 객체 작업에 사용할 수 있습니다.

s3:구분 기호

s3:ListBucket 및

s3:ListBucketVersions 권한

ListObjects 또는 ListObjectVersions 요청에 지정된 구분 기호 매개변수와 비교합니다.

s3:기존객체태그/<태그키>

s3:객체태깅 삭제

s3:DeleteObjectVersionTagging

s3:객체 가져오기

s3:GetObjectAcl

3:GetObjectTagging

s3:객체 버전 가져오기

s3:GetObjectVersionAcl

s3:GetObjectVersionTagging

s3:PutObjectAcl

s3:PutObjectTagging

s3:PutObjectVersionAcl

s3:PutObjectVersionTagging

기존 객체에 특정 태그 키와 값이 있어야 합니다.

s3:최대 키

s3:ListBucket 및

s3:ListBucketVersions 권한

ListObjects 또는 ListObjectVersions 요청에 지정된 max-keys 매개변수와 비교합니다.

s3:객체 잠금 남은 보존 일수

s3:객체 넣기

지정된 보유기간과 비교합니다. x-amz-object-lock-retain-until-date 요청 헤더 또는 버킷 기본 보존 기간에서 계산된 값을 사용하여 다음 요청에 대해 이러한 값이 허용 범위 내에 있는지 확인합니다.

  • PutObject

  • 복사객체

  • CreateMultipartUpload

s3:객체 잠금 남은 보존 일수

s3:객체 보존 넣기

PutObjectRetention 요청에 지정된 보유 종료일과 비교하여 허용 범위 내에 있는지 확인합니다.

s3:접두사

s3:ListBucket 및

s3:ListBucketVersions 권한

ListObjects 또는 ListObjectVersions 요청에 지정된 접두사 매개변수와 비교합니다.

s3:RequestObjectTag/<태그 키>

s3:객체 넣기

s3:PutObjectTagging

s3:PutObjectVersionTagging

객체 요청에 태그 지정이 포함된 경우 특정 태그 키와 값이 필요합니다.

정책에서 변수 지정

정책에서 변수를 사용하면 정책 정보를 사용할 수 있을 때 해당 정보를 채울 수 있습니다. 정책 변수는 다음에서 사용할 수 있습니다. Resource 요소 및 문자열 비교 Condition 요소.

이 예에서 변수 ${aws:username} 리소스 요소의 일부입니다.

"Resource": "arn:aws:s3:::bucket-name/home/${aws:username}/*"

이 예에서 변수 ${aws:username} 조건 블록의 조건 값의 일부입니다.

"Condition": {
    "StringLike": {
      "s3:prefix": "${aws:username}/*"
		...
},
		...
변하기 쉬운 설명

${aws:SourceIp}

제공된 변수로 SourceIp 키를 사용합니다.

${aws:username}

제공된 변수로 사용자 이름 키를 사용합니다.

${s3:prefix}

제공된 변수로 서비스별 접두사 키를 사용합니다.

${s3:max-keys}

제공된 변수로 서비스별 max-keys 키를 사용합니다.

${*}

특수문자. 문자를 문자 그대로 * 문자로 사용합니다.

${?}

특수문자. 문자를 문자 그대로 ? 문자로 사용합니다.

${$}

특수문자. 해당 문자를 리터럴 $ 문자로 사용합니다.

특별한 처리가 필요한 정책을 만듭니다.

때로는 정책에 따라 보안이나 지속적인 작업에 위험한 권한이 부여될 수 있습니다. 예를 들어 계정의 루트 사용자를 잠그는 경우가 있습니다. StorageGRID S3 REST API 구현은 Amazon보다 정책 검증 시에는 제한이 적지만, 정책 평가 시에는 동일하게 엄격합니다.

정책 설명 정책 유형 아마존의 행동 StorageGRID 동작

루트 계정에 대한 모든 권한을 거부합니다.

버킷

유효하고 적용 가능하지만 루트 사용자 계정은 모든 S3 버킷 정책 작업에 대한 권한을 유지합니다.

같은

사용자/그룹에 대한 모든 권한을 거부합니다.

그룹

유효하고 시행됨

같은

외국 계정 그룹에 모든 권한 허용

버킷

잘못된 주체

유효하지만 정책에 의해 허용될 경우 모든 S3 버킷 정책 작업에 대한 권한이 405 메서드 허용 안 됨 오류를 반환합니다.

해외 계정 root 또는 사용자에게 모든 권한 허용

버킷

유효하지만 정책에 의해 허용될 경우 모든 S3 버킷 정책 작업에 대한 권한이 405 메서드 허용 안 됨 오류를 반환합니다.

같은

모든 사람에게 모든 작업에 대한 권한을 허용합니다.

버킷

유효하지만 모든 S3 버킷 정책 작업에 대한 권한이 해외 계정 루트 및 사용자에 대해 405 메서드가 허용되지 않음 오류를 반환합니다.

같은

모든 작업에 대한 모든 사람의 권한을 거부합니다.

버킷

유효하고 적용 가능하지만 루트 사용자 계정은 모든 S3 버킷 정책 작업에 대한 권한을 유지합니다.

같은

주체는 존재하지 않는 사용자 또는 그룹입니다.

버킷

잘못된 주체

유효한

리소스는 존재하지 않는 S3 버킷입니다.

그룹

유효한

같은

교장은 지역 그룹입니다

버킷

잘못된 주체

유효한

정책은 소유자가 아닌 계정(익명 계정 포함)에 객체를 넣을 수 있는 권한을 부여합니다.

버킷

유효한. 객체는 생성자 계정의 소유이며, 버킷 정책은 적용되지 않습니다. 생성자 계정은 개체 ACL을 사용하여 개체에 대한 액세스 권한을 부여해야 합니다.

유효한. 객체는 버킷 소유자 계정의 소유입니다. 버킷 정책이 적용됩니다.

WORM(Write-once-Read-Many) 보호

데이터, 사용자 정의 개체 메타데이터 및 S3 개체 태그를 보호하기 위해 WORM(Write-Once-Read-Many) 버킷을 만들 수 있습니다. WORM 버킷을 구성하여 새 객체를 생성하고 기존 콘텐츠를 덮어쓰거나 삭제하지 못하도록 할 수 있습니다. 여기에 설명된 방법 중 하나를 사용하세요.

덮어쓰기가 항상 거부되도록 하려면 다음을 수행하세요.

  • 그리드 관리자에서 구성 > 보안 > 보안 설정 > 네트워크 및 개체*로 이동하여 *클라이언트 수정 방지 확인란을 선택합니다.

  • 다음 규칙과 S3 정책을 적용합니다.

    • S3 정책에 PutOverwriteObject DENY 작업을 추가합니다.

    • S3 정책에 DeleteObject DENY 작업을 추가합니다.

    • S3 정책에 PutObject ALLOW 작업을 추가합니다.

참고 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)