AWS re:Post을(를) 사용하면 다음에 동의하게 됩니다. AWS re:Post 이용 약관

S3 Bucket에 업로드 된 video.m3u8를 GET하는 것을 실패합니다(Status: cancle)

0

<문제 상황> 사용 중인 서버에서 AWS S3 Bucket에 video를 put하는 것은 성공하지만 AWS S3 Bucket에 업로드 된 video를 get하는 것에는 실패합니다.

해당 Bucket 생성일이 2021년이었기에 1년 전까지도 조회가 잘 되었지만 현재는 위와 같은 현상이 일어납니다. 코드 변경 또한 없었기 때문에 CORS 문제는 아니라고 판단을 하고 권한 정책과 같은 문제가 예상되는데 해결할 방법을 질문드립니다.

<수행한 조사 및 취한 조치> Access key를 사용중이며 활성화 되어 있습니다. console에서 *aws s3 ls *명령어를 치면 Bucket 목록 조회가 잘 되고 *curl -H "Origin: 도메인" -v"로드가 되지 않는 url" * 명령어를 치면 HTTP/1.1 200 OK가 떨어집니다.

객체 소유권이 객체 라이터에게 있으며 특정 IAM 사용자가 ACCESS key를 가지고 있습니다. 읽기 작업 권한 중에서 GetObject 권한은 가지고 있습니다.

질문됨 18일 전49회 조회
2개 답변
0

문제 상황을 분석해 보면, S3 버킷에 대한 접근 권한 설정이 변경되었을 가능성이 높아 보입니다. 다음과 같은 해결 방법을 시도해 보시기 바랍니다:

  1. 버킷 정책 확인: S3 버킷의 정책을 확인하고, 필요한 GetObject 권한이 올바르게 설정되어 있는지 확인하세요.

  2. IAM 사용자 권한 검토: 해당 IAM 사용자의 권한을 재검토하고, S3에 대한 적절한 읽기 권한이 있는지 확인하세요.

  3. 버킷 및 객체 ACL 확인: 버킷과 객체의 ACL(액세스 제어 목록)을 확인하고, 필요한 읽기 권한이 설정되어 있는지 확인하세요.

  4. 버전 관리 확인: 버킷에 버전 관리가 활성화되어 있다면, 올바른 버전의 객체에 접근하고 있는지 확인하세요.

  5. CloudFront 사용 고려: 직접적인 S3 접근 대신 CloudFront 배포를 사용하여 콘텐츠를 제공하는 것을 고려해보세요. 이는 보안을 강화하고 S3 버킷 URL을 숨길 수 있습니다.

  6. S3 버킷 로깅 활성화: 문제의 원인을 파악하기 위해 S3 버킷 로깅을 활성화하고 액세스 로그를 분석해보세요.

  7. AWS 지원팀 문의: 위의 방법으로도 문제가 해결되지 않는다면, AWS 지원팀에 문의하여 추가적인 도움을 받으세요.

마지막으로, S3 버킷의 보안 설정을 정기적으로 검토하고, 필요한 경우에만 제한적으로 접근 권한을 부여하는 것이 좋습니다. 또한, 실수로 인한 데이터 손실을 방지하기 위해 버전 관리, 객체 잠금 등의 기능을 활용하는 것을 고려해보세요.

Sources
Building Security Conscious Video Streaming Infrastructure on AWS, Lesson 2: Protect Your Buckets | AWS re:Post
Community | AWS Tech Tales | S3 E1 | The Tale of the Missing S3 Bucket

profile picture
답변함 18일 전
0

안녕하세요 hyosm님,

질문 주신 내용에 대해 아래와 같이 답변 드립니다.

고객님은 사용 중인 서버에서 AWS S3 Bucket에 video를 put하는 것은 성공하지만 AWS S3 Bucket에 업로드 된 video를 get하는 것에는 실패한다고 말씀하셨습니다. 2021년이었기에 1년 전까지도 조회가 잘 되었지만 현재는 위와 같은 문제가 발생한다고 하셨습니다.

이러한 권한이 누락된 경우 자세한 내용은 고객님의 정책 변경 이력을 확인해 봐야 하지만, 일반적인 내용으로 답변을 드리자면 IAM의 권한 변경이나, S3 버킷에 대한 접근 권한 설정이 변경되었을 가능성이 높아 보입니다. 따라서 아래의 내용을 검토해 봐주시기 바랍니다.

  1. 버킷 정책 확인: S3 버킷의 정책을 확인하고, 고객님이 사용하시는 IAM user/Role 등 IAM entity에 필요한 GetObject 권한이 올바르게 설정되어 있는지 확인해주시길 바랍니다.
  2. IAM 권한 검토:고객님이 사용하시는 IAM user/Role 등 IAM entity에 S3:GetObject에 대한 적절한 읽기 권한이 있는지 확인해주시길 바랍니다. 별도의 IAM entity에 attached 되어 있는 권한 내 Deny 정책은 없는지 추가 확인이 필요합니다.
  3. 버킷 및 객체 ACL 확인: 버킷과 객체의 ACL(액세스 제어 목록)을 확인하고, 필요한 읽기 권한이 설정되어 있는지 확인해주시길 바랍니다.
  4. 추가로 Organization 환경이라면 서비스 제어 정책(SCP)에 거부 정책이 존재한다면, 특정 API가 거부될수 있습니다. Organization 환경이라면 조직 관리자 계정에서 SCP 확인이 필요합니다. [+] https://docs.aws.amazon.com/ko_kr/organizations/latest/userguide/orgs_manage_policies_scps.html

자세한 내용은 고객님이 GetObject 호출시 출력되는 에러 로그를 Cloudtrail log를 확인해 보시면 에러 메시지를 확인하실수 있습니다. [+] https://docs.aws.amazon.com/ko_kr/AmazonS3/latest/userguide/cloudtrail-logging-s3-info.html#cloudtrail-data-events

위 문서로 원인 파악이 어려우신 경우, AWS Support 로 문의 주시면 보다 상세한 분석이 가능하오니 AWS Support 로 문의 주시면 좋을 것 같습니다.

[+] 기술 문의를 위한 가이드라인 https://aws.amazon.com/ko/premiumsupport/tech-support-guidelines/

이 답변이 해결에 도움이 되었다면 커뮤니티 발전을 위해 답변의 승인을 부탁 드립니다.
감사합니다.

AWS
지원 엔지니어
답변함 18일 전

로그인하지 않았습니다. 로그인해야 답변을 게시할 수 있습니다.

좋은 답변은 질문에 명확하게 답하고 건설적인 피드백을 제공하며 질문자의 전문적인 성장을 장려합니다.

질문 답변하기에 대한 가이드라인