Amazon S3 퍼블릭 액세스 차단 설정을 켜거나 끄면 어떻게 되나요?

5분 분량
0

Amazon Simple Storage Service(S3) 퍼블릭 액세스 차단 설정을 켜거나 끄는 것이 Amazon S3 작업에 어떤 영향을 미치는지 알고 싶습니다.

해결 방법

사용 가능한 설정

Amazon S3 퍼블릭 액세스 차단 설정에는 다음과 같은 네 가지 구성 가능한 옵션을 통해 적용할 수 있는 다양한 수준의 제한이 있습니다.

  • 새 액세스 제어 목록(ACL)을 통해 허용된 퍼블릭 액세스 차단: Amazon S3는 새로 추가된 버킷 또는 개체에 적용되는 퍼블릭 액세스 권한을 차단합니다. 또한 S3는 기존 버킷 및 개체에 대한 새로운 퍼블릭 액세스 ACL 생성을 방지합니다. 이 설정은 ACL을 사용하여 S3 리소스에 대한 퍼블릭 액세스를 허용하는 기존 권한을 변경하지는 않습니다.
  • 모든 ACL을 통해 부여된 퍼블릭 액세스 차단: S3는 버킷과 개체에 대한 퍼블릭 액세스 권한을 부여하는 모든 ACL을 무시합니다.
  • 새 퍼블릭 버킷 또는 액세스 포인트 정책을 통해 부여된 퍼블릭 액세스 차단: S3는 버킷과 개체에 대한 퍼블릭 액세스를 허용하는 새 버킷 및 액세스 포인트 정책을 차단합니다. 이 설정은 S3 리소스에 대한 퍼블릭 액세스를 허용하는 기존 정책을 변경하지는 않습니다.
  • 퍼블릭 버킷 또는 액세스 포인트 정책을 통해 부여된 퍼블릭 및 크로스 계정 액세스 차단: S3는 버킷과 개체에 대한 퍼블릭 액세스를 부여하는 정책을 통해 버킷 또는 액세스 포인트에 대한 퍼블릭 및 크로스 계정 액세스를 무시합니다.

첫 번째와 세 번째 옵션은 퍼블릭 액세스를 부여하는 S3 버킷 정책 또는 개체 ACL에 대한 새로운 업데이트를 방지하기 위한 것입니다. 이러한 설정은 현재 퍼블릭 액세스를 부여하는 기존 정책이나 ACL을 변경하지는 않습니다.

두 번째와 네 번째 옵션은 신규 및 기존 버킷 정책 또는 퍼블릭 액세스를 부여하는 개체 ACL을 방지하고 무시하기 위한 것입니다.

자세한 내용은 퍼블릭 액세스 차단 설정을 참조하세요.

S3 퍼블릭 액세스 차단 설정 켜기 또는 끄기

참고: 2023년 4월부터 새로 생성된 모든 S3 버킷에는 기본적으로 S3 퍼블릭 액세스 차단이 켜져 있습니다.

계정 수준, 버킷 수준 또는 둘 모두에서 이 설정을 켤 수 있습니다.

버킷의 퍼블릭 설정 차단을 켜면 다음과 같은 결과가 발생합니다.

  • 익명 및 인증되지 않은 요청은 무조건 거부됩니다. 웹 브라우저를 사용하여 액세스하는 S3 URI 및 URL은 해당 요청 ID와 함께 HTTP 403 액세스 거부됨 오류를 반환합니다.
  • S3 개체에 적용되는 모든 퍼블릭 ACL은 무시되므로 이 ACL을 사용하여 개체에 액세스하는 사용자의 액세스 권한이 취소됩니다.

버킷의 퍼블릭 설정 차단을 끄면 다음과 같은 결과가 발생합니다.

  • 이제 퍼블릭 버킷 정책 또는 퍼블릭 ACL 액세스가 있는 개체는 인터넷에서 누구든지 해당 개체의 경로에 대한 링크로 액세스할 수 있습니다. 여기에는 웹 트롤러 및 승인되지 않은 사용자도 포함됩니다.
  • LIST 또는 GET과 같은 S3 요청과 관련된 비용이 증가할 수 있습니다. 퍼블릭 버킷 또는 개체에 대한 익명 요청은 버킷 소유자에게 청구됩니다.
  • 해당하는 AWS 구성 규칙과 S3용 AWS Identity and Access Management(AWS IAM) Access Analyzer가 버킷의 퍼블릭 상태에 대한 경고를 생성합니다. 이러한 규칙을 준수하려면 퍼블릭 액세스 차단 설정을 켜야 합니다.

퍼블릭 액세스 차단 설정을 끄면 콘솔에서 S3 버킷의 액세스 열에 다음 중 하나가 표시됩니다.

  • 개체가 퍼블릭일 수 있음: 버킷은 퍼블릭이 아니지만 적절한 권한이 있는 사람은 누구든지 개체에 퍼블릭 액세스 권한을 부여할 수 있습니다.
  • 버킷 및 개체가 퍼블릭이 아님: 버킷과 개체에 퍼블릭 액세스 권한이 없습니다.
  • 이 계정의 권한이 부여된 사용자만: 퍼블릭 액세스를 허용하는 정책이 있기 때문에 IAM 계정 사용자 및 역할, AWS 서비스 주체로만 액세스가 격리됩니다.
  • 퍼블릭: 모든 사용자가 하나 이상의 목록 개체, 쓰기 개체, 읽기 및 쓰기 권한에 액세스할 수 있습니다.

필수 권한

S3 퍼블릭 액세스 차단 설정을 켜거나 끄려면 IAM 역할 또는 사용자에게 다음과 같은 S3 권한이 있어야 합니다.

  • 계정 수준: s3:PutAccountPublicAccessBlock
  • 버킷 수준: s3:PutBucketPublicAccessBlock 

S3 퍼블릭 액세스 차단 설정을 보면 IAM 역할 또는 사용자에게 다음과 같은 S3 권한이 있어야 합니다.

  • 계정 수준: s3:GetAccountPublicAccessBlock
  • 버킷 주준: s3:GetBucketPublicAccessBlock

자세한 내용은 권한을 참조하세요.

오류 문제 해결

S3 버킷에서 퍼블릭 액세스 차단 설정을 켜거나 끄려고 하면 액세스 거부됨 오류가 발생할 수 있습니다. 이 오류를 해결하려면 다음을 시도해 보세요.

  • 서비스 제어 정책에 계정 또는 버킷 수준에서 S3 퍼블릭 액세스 차단 설정을 수정하지 못하게 하는 조직 정책이 포함되어 있지 않은지 확인합니다. s3:PutBucketPublicAccessBlock 및 s3:PutAccountPublicAccessBlock 작업에 대한 Deny 문을 확인합니다.
  • IAM 사용자 또는 역할에 리소스에 필요한 권한이 있는지 확인합니다.
  • 설정을 수정하려는 S3 버킷에 기존 퍼블릭 S3 버킷 정책(**주체: "*"**인 모든 버킷 정책 문)이 없는지 확인합니다.

사용자 식별

버킷이나 계정에서 어떤 IAM 엔티티가 이 설정을 수정했는지 확인하려면 AWS CloudTrail 이벤트를 사용하세요. CloudTrail 콘솔에서 다음 EventNames에 대해 이러한 이벤트를 필터링할 수 있습니다.

  • 계정 수준에서는 PutAccountPublicAccessBlock을 찾아봅니다.
  • 버킷 수준에서는 PutBucketPublicAccessBlock을 찾아봅니다.

호출자 ARN을 식별하려면 로그에서 UserIdentity 필드를 확인합니다.

 "userIdentity": {  
 "type": "AssumedRole",  
 "principalId": "[AccountID]:[RoleName]",  
 "arn": "arn:aws:sts::[AccountID]:assumed-role/[RoleName]/[RoleSession]",

그런 다음 검사하려는 S3 버킷 리소스를 확인합니다.

"requestParameters": {  
 "publicAccessBlock": "",  
 "bucketName": "[BucketName]"

기타 고려 사항

  • 광범위한 IP 주소 범위(예: 0.0.0.0/1)의 aws:SourceIp 조건 키로 액세스를 허용하는 버킷 정책은 퍼블릭으로 취급됩니다.
  • S3용 IAM Access Analyzer를 사용하여 퍼블릭 액세스를 부여하는 버킷 ACL, 버킷 정책 또는 액세스 포인트 정책이 있는 버킷을 검토할 수 있습니다.
  • S3 콘솔에서 버킷의 액세스 열에 오류가 표시되는 경우, IAM 역할 또는 사용자가 버킷 및 해당 퍼블릭 액세스 설정을 나열할 권한이 없는 것입니다. 사용자 또는 역할 정책에 다음 권한을 추가해야 합니다.
s3:GetAccountPublicAccessBlock
s3:GetBucketPublicAccessBlock
s3:GetBucketPolicyStatus
s3:GetBucketLocation
s3:GetBucketAcl
s3:ListAccessPoints
s3:ListAllMyBuckets
  • Amazon S3는 개체별 퍼블릭 액세스 차단 설정을 지원하지 않습니다.
  • 계정에 퍼블릭 액세스 차단 설정을 적용하면 해당 설정이 모든 AWS 리전에 전역으로 적용됩니다. 설정이 모든 리전에서 즉시 또는 동시에 적용되지는 않을 수 있지만 결국 모든 리전에 전파됩니다.
AWS 공식
AWS 공식업데이트됨 일 년 전
댓글 없음

관련 콘텐츠