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

StorageGRID S3 REST API 버킷 정책 예

이 섹션의 예제를 사용하여 버킷에 대한 StorageGRID 액세스 정책을 구성하십시오.

버킷 정책은 해당 정책이 적용된 버킷에 대한 액세스 권한을 지정합니다. S3 PutBucketPolicy API를 사용하여 다음 도구 중 하나로 버킷 정책을 구성할 수 있습니다.

예시: 모든 사용자에게 버킷에 대한 읽기 전용 액세스 권한 허용

이 예시에서는 익명 사용자를 포함한 모든 사용자가 버킷의 객체 목록을 조회하고 버킷의 모든 객체에 대해 GetObject 작업을 수행할 수 있습니다. 그 외의 모든 작업은 거부됩니다. 단, 계정 루트 사용자를 제외한 다른 사용자는 버킷에 쓰기 권한이 없으므로 이 정책은 그다지 유용하지 않을 수 있습니다.

{
  "Statement": [
    {
      "Sid": "AllowEveryoneReadOnlyAccess",
      "Effect": "Allow",
      "Principal": "*",
      "Action": [ "s3:GetObject", "s3:ListBucket" ],
      "Resource": ["arn:aws:s3:::examplebucket","arn:aws:s3:::examplebucket/*"]
    }
  ]
}

예시: 한 계정의 모든 사용자에게 버킷에 대한 전체 액세스 권한을 부여하고, 다른 계정의 모든 사용자에게는 읽기 전용 액세스 권한만 부여합니다.

이 예시에서는 지정된 한 계정의 모든 사용자에게 버킷에 대한 전체 액세스 권한이 부여되는 반면, 다른 지정된 계정의 모든 사용자에게는 버킷 목록을 조회하고 shared/ 객체 키 접두사로 시작하는 버킷 내 객체에 대한 GetObject 작업만 수행할 수 있도록 허용됩니다.

참고 StorageGRID에서 소유자가 아닌 계정(익명 계정 포함)이 생성한 객체는 버킷 소유자 계정의 소유가 됩니다. 버킷 정책은 이러한 객체에 적용됩니다.
{
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "95390887230002558202"
      },
      "Action": "s3:*",
      "Resource": [
        "arn:aws:s3:::examplebucket",
        "arn:aws:s3:::examplebucket/*"
      ]
    },
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "31181711887329436680"
      },
      "Action": "s3:GetObject",
      "Resource": "arn:aws:s3:::examplebucket/shared/*"
    },
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "31181711887329436680"
      },
      "Action": "s3:ListBucket",
      "Resource": "arn:aws:s3:::examplebucket",
      "Condition": {
        "StringLike": {
          "s3:prefix": "shared/*"
        }
      }
    }
  ]
}

예시: 모든 사용자에게 버킷에 대한 읽기 전용 액세스 권한을 부여하고 지정된 그룹에게는 전체 액세스 권한을 부여합니다.

이 예시에서는 익명 사용자를 포함한 모든 사용자가 버킷의 목록을 조회하고 GetObject 작업을 버킷 내 모든 객체에 대해 수행할 수 있지만, 지정된 계정의 그룹 `Marketing`에 속한 사용자에게만 전체 액세스 권한이 부여됩니다.

{
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::95390887230002558202:federated-group/Marketing"
      },
      "Action": "s3:*",
      "Resource": [
        "arn:aws:s3:::examplebucket",
        "arn:aws:s3:::examplebucket/*"
      ]
    },
    {
      "Effect": "Allow",
      "Principal": "*",
      "Action": ["s3:ListBucket","s3:GetObject"],
      "Resource": [
        "arn:aws:s3:::examplebucket",
        "arn:aws:s3:::examplebucket/*"
      ]
    }
  ]
}

예시: 클라이언트의 IP 주소 범위 내에 있는 모든 사용자에게 버킷에 대한 읽기 및 쓰기 권한을 부여합니다.

이 예시에서는 익명 사용자를 포함한 모든 사용자가 지정된 IP 범위(54.240.143.0~54.240.143.255, 단 54.240.143.188 제외)에서 요청이 들어온 경우 버킷 목록을 조회하고 버킷 내 모든 객체에 대한 모든 객체 작업을 수행할 수 있습니다. 다른 모든 작업은 거부되며, 지정된 IP 범위를 벗어난 모든 요청은 차단됩니다.

{
  "Statement": [
    {
      "Sid": "AllowEveryoneReadWriteAccessIfInSourceIpRange",
      "Effect": "Allow",
      "Principal": "*",
      "Action": [ "s3:*Object", "s3:ListBucket" ],
      "Resource": ["arn:aws:s3:::examplebucket","arn:aws:s3:::examplebucket/*"],
      "Condition": {
        "IpAddress": {"aws:SourceIp": "54.240.143.0/24"},
        "NotIpAddress": {"aws:SourceIp": "54.240.143.188"}
      }
    }
  ]
}

예시: 지정된 페더레이션 사용자에게만 버킷에 대한 전체 액세스 권한 허용

이 예시에서 연합 사용자 Alex는 `examplebucket`버킷과 그 객체에 대한 모든 접근 권한을 갖습니다. '`root'를 포함한 다른 모든 사용자는 모든 작업이 명시적으로 거부됩니다. 단, '`root'는 Put/Get/DeleteBucketPolicy에 대한 권한이 거부되지 않습니다.

{
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::95390887230002558202:federated-user/Alex"
      },
      "Action": [
        "s3:*"
      ],
      "Resource": [
        "arn:aws:s3:::examplebucket",
        "arn:aws:s3:::examplebucket/*"
      ]
    },
    {
      "Effect": "Deny",
      "NotPrincipal": {
        "AWS": "arn:aws:iam::95390887230002558202:federated-user/Alex"
      },
      "Action": [
        "s3:*"
      ],
      "Resource": [
        "arn:aws:s3:::examplebucket",
        "arn:aws:s3:::examplebucket/*"
      ]
    }
  ]
}

예시: PutOverwriteObject 권한

이 예에서 Deny PutOverwriteObject 및 DeleteObject에 대한 Effect는 누구도 객체의 데이터, 사용자 정의 메타데이터 및 S3 객체 태깅을 덮어쓰거나 삭제할 수 없도록 합니다.

{
  "Statement": [
    {
      "Effect": "Deny",
      "Principal": "*",
      "Action": [
        "s3:PutOverwriteObject",
        "s3:DeleteObject",
        "s3:DeleteObjectVersion"
      ],
      "Resource": "arn:aws:s3:::wormbucket/*"
    },
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::95390887230002558202:federated-group/SomeGroup"

},
      "Action": "s3:ListBucket",
      "Resource": "arn:aws:s3:::wormbucket"
    },
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::95390887230002558202:federated-group/SomeGroup"

},
      "Action": "s3:*",
      "Resource": "arn:aws:s3:::wormbucket/*"
    }
  ]
}