내용으로 건너뛰기

Amazon S3 Block Public Access 기능을 사용하여 Amazon S3 리소스에 대한 퍼블릭 액세스를 관리하려면 어떻게 해야 합니까?

3분 분량
0

Amazon Simple Storage Service(Amazon S3) 리소스에 대한 액세스를 관리하려고 합니다. 이를 위해 S3 Block Public Access를 사용하려고 합니다.

해결 방법

다양한 액세스 수준에 맞게 Amazon S3 Block Public Access 설정을 구성할 수 있습니다.

필요한 권한 추가

S3 Block Public Access 설정을 변경하려면 AWS Identity and Access Management(IAM) 사용자 또는 역할에 다음 권한이 있어야 합니다.

  • s3:PutAccountPublicAccessBlock
  • s3:PutBucketPublicAccessBlock

현재 S3 Block Public Access 설정을 보려면 IAM 사용자 또는 역할에 다음 권한이 있어야 합니다.

  • s3:GetAccountPublicAccessBlock
  • s3:GetBucketPublicAccessBlock

자세한 내용은 권한을 참조하십시오.

S3 Block Public Access 활성화 또는 비활성화

참고: 2023년 4월부터 Amazon S3는 생성된 모든 버킷에 대해 S3 Block Public Access를 자동으로 활성화합니다.

계정 수준, 버킷 수준 또는 둘 모두에서 S3 Block Public Access 설정을 구성할 수 있습니다.

S3 Block Public Access 활성화

S3 Block Public Access를 활성화한 후 Amazon S3는 다음 작업을 수행합니다.

  • 익명 및 인증되지 않은 요청을 무조건 거부합니다. 웹 브라우저 또는 curl을 사용하여 액세스하는 Amazon S3 URI 및 URL은 "HTTP 403 Access Denied" 오류가 발생합니다.
  • Amazon S3 객체에 적용하는 새 퍼블릭 ACL을 무시하고 S3 버킷 및 객체에 대한 사용자 액세스를 취소합니다.

S3 Block Public Access 비활성화

S3 Block Public Access를 비활성화하면 Amazon S3에서 퍼블릭 버킷 정책 또는 퍼블릭 ACL을 통해 객체에 대한 액세스를 허용합니다. LIST 또는 GET 등과 같은 Amazon S3 요청에 대해 비용이 발생할 수 있습니다. AWS는 퍼블릭 버킷 또는 객체에 대한 익명 요청에 대해 요금을 부과합니다. AWS Config 규칙과 S3용 IAM Access Analyzer는 버킷의 퍼블릭 상태에 대한 경고를 생성합니다.

S3 Block Public Access를 비활성화하면 Amazon S3 콘솔의 외부 액세스 요약 창에 액세스 설정이 표시됩니다.

"Access Denied" 및 S3 버킷 오류 해결

S3 버킷에서 S3 Block Public Access를 활성화하거나 비활성화하려고 하면 "Access Denied" 오류가 발생할 수 있습니다.

이 오류를 해결하려면 다음 작업을 수행하십시오.

  • AWS Organizations의 서비스 제어 정책(SCP)이 계정 또는 버킷 수준에서 S3 Block Public Access에 대한 수정을 차단하지 않는지 확인합니다. s3:PutBucketPublicAccessBlocks3:PutAccountPublicAccessBlock 작업에 대한 Deny 문을 확인합니다.
  • 버킷의 액세스 열에 오류가 표시되면 IAM 정책에 버킷과 퍼블릭 액세스 설정을 나열할 수 있는 다음 권한을 추가합니다.
    s3:GetAccountPublicAccessBlock
    s3:GetBucketPublicAccessBlock
    s3:GetBucketPolicyStatus
    s3:GetBucketLocation
    s3:GetBucketAcl
    s3:ListAccessPoints
    s3:ListAllMyBuckets

S3 Block Public Access를 수정한 IAM 사용자 또는 역할 식별

AWS CloudTrail 이벤트 기록을 확인하여 다음 EventNames에 대한 이벤트를 파악합니다.

  • 계정 수준에서는 PutAccountPublicAccessBlock을 확인합니다.
  • 버킷 수준에서는 PutBucketPublicAccessBlock을 확인합니다.

호출자의 Amazon 리소스 이름(ARN)을 식별하려면 로그에서 UserIdentity 필드를 확인합니다. 예제 로그:

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

그런 다음, bucketName을 확인하여 수정된 S3 버킷을 파악합니다. 예제 로그:

"requestParameters": {  
 "publicAccessBlock": "",  
 "bucketName": "[BucketName]"
AWS 공식업데이트됨 4달 전