최근 업무 중에 Amazon S3에서 업로드한 파일에 대해 외부 사용자와 공유해야 할 일이 생겼습니다. 단순히 presigned URL로는 해결이 어려운 상황이었고, 결국 객체 자체의 접근 권한(ACL)을 변경해야 했습니다. 이때 처음 접한 개념이 바로 PutObjectAcl
이었습니다.
PutObjectAcl은 어떤 역할을 할까?
간단히 말하면, PutObjectAcl
은 S3에 올라간 객체(파일)에 대해 누가 접근할 수 있는지를 설정하는 기능입니다. ACL(Access Control List)이라는 이름처럼, 객체별로 읽기/쓰기 권한을 세밀하게 제어할 수 있게 해줍니다.
처음에는 버킷 정책으로 충분하지 않을까 싶었는데, 버킷 단위와 객체 단위는 다르게 동작합니다. 실제로 특정 파일 하나만 공개해야 하는 경우라면, ACL을 사용하는 것이 더 간편했습니다.
직접 사용해본 예시
테스트용 파일 photo.jpg
를 퍼블릭하게 공개하려면 다음과 같은 AWS CLI 명령어를 사용했습니다.
aws s3api put-object-acl \
--bucket my-bucket \
--key photo.jpg \
--acl public-read
명령어를 실행하고 나니, 해당 파일을 웹 브라우저에서 바로 열 수 있게 되었습니다. 이처럼 public-read
옵션을 지정하면 누구나 접근 가능한 객체로 전환됩니다. 객체 URL만 알면 로그인 없이 접근 가능한 상태가 되죠.
주의할 점: 보안에 민감한 설정
직접 사용해보면서 가장 크게 느낀 점은 작은 설정 하나로 보안이 완전히 달라질 수 있다는 것입니다. PutObjectAcl
로 객체 하나만 공개한다고 생각할 수 있지만, 잘못 설정되면 중요한 내부 파일도 외부에 노출될 위험이 있습니다.
CloudTrail 로그를 확인해보면, 실제로 PutObjectAcl
호출 기록이 남아 있어 누가 어떤 시점에 권한을 변경했는지 추적할 수 있었습니다. 팀원들과 협업할 때는 이런 이벤트를 기반으로 권한 변경 여부를 체크하는 것도 좋은 방법이 될 수 있겠다는 생각이 들었습니다.
마무리하며
PutObjectAcl
은 S3의 권한 설정을 객체 단위로 세밀하게 제어할 수 있는 강력한 도구입니다. 하지만 그만큼 보안 리스크도 존재하므로 사용 시에는 다음을 꼭 고려해야 한다고 느꼈습니다:
- CloudTrail을 통한 로그 기록 활성화
- IAM 권한 최소화(불필요한 사용자에게 ACL 변경 권한 부여 금지)
- 정기적인 권한 검토
저처럼 처음 사용해보는 분들이라면 테스트 환경에서 충분히 시도해본 후 실제 서비스에 적용하는 것을 추천드립니다.
'개발 (Development) > AWS' 카테고리의 다른 글
[AWS] AWS 환경에서 모델 학습 API 호출 시 Broken pipe 에러 해결 과정 (0) | 2025.06.28 |
---|---|
[AWS] AWS ECR에 MFA로 Docker 로그인 자동화하기 (.bat 파일) (0) | 2025.04.12 |
[AWS] AWS S3 버킷이 데이터 레이크인지 데이터 웨어하우스인지 확인하는 방법 (0) | 2025.04.10 |