문의 주신 내용에 맞는 전문 컨설턴트 배정 후 연락드리겠습니다.
들어가며
안녕하십니까. GS네오텍 박제호입니다.
오늘은 S3 정책에 대해서 이야기를 나누고자 합니다. S3를 사용하면서 보안을 고려하려면 목적에 맞게 Bucket을 분리하여 사용하는것이 일반적입니다. 그러나 세상일이 항상 우리의 생각처럼 돌아가진 않습니다. 귀차니즘이든, 분류하기 애매하든, 어쨌거나 데이터들은 하나의 Bucket에 쌓이게 되고 설상가상으로 이 Bucket에 대해 접근제어를 수행해야 하게 되는 경우가 생길 수 있습니다. 여지껏 우리는 아주 긴 Bucket Policy을 이용하여 접근제어를 수행하고 있었습니다. 문제는 이렇게 복잡하게 만들어진 Bucket Policy라고 하더라도 올바르게 권한이 작성되어 있는지 확인이 어렵다는 점이었습니다.
2019 Reinvent에서는 Bucket Policy를 더 안전하며 효율적으로 관리하기 위해 Access Point를 출시하였습니다. 이 서비스를 통해 전보다 세밀하게 S3 Bucket에 대한 데이터 접근제어를 할 수 있게 되었습니다. 이 서비스에 대해 하나씩 알아보도록 하겠습니다.
S3 Access Point 소개
S3 Access Point는 기존에 단일 정책(Bucket Policy)으로 수행하던 접근제어를 개별 정책으로 나누어 관리할 수 있게 해주는 서비스입니다. 무슨 의미가 있냐라고 반문하실 수 있지만, 자세히 생각해보면 그 효용은 생각보다 큽니다. Bucket Policy를 통해 관리하게 되면 단일 정책이므로 크기가 커질수록 점점 복잡해지게 됩니다. 이해하고 분석하기 어렵고 시간이 걸린다는 얘기입니다. 이를 쪼개어 다수의 정책으로 나눈다면 훨씬 이해하기 쉽고 효율적으로 정책을 설정할 수 있을 것입니다.
AWS에서는 이 기능을 "S3 공유 데이터에 접근하는 애플리케이션의 대규모 액세스를 간단하게 관리하는 서비스"라고 소개하고 있으며 다음과 같은 장점을 내세우고 있습니다.
그럼 데모를 통해 이 서비스가 왜 효율적인지, 설정을 수행하면서 알아보도록 하겠습니다.
S3 Access Point 데모
▨ Demo
우선 액세스 포인트를 먼저 생성해 보도록 하겠습니다.
S3 버킷으로 이동 후 "액세스 지점 생성" 버튼을 클릭합니다.
다음으로 사용할 액세스 포인트의 이름을 작성하고, 네트워크 액세스 유형을 선택합니다. 유형에 따라 추가적인 차단 옵션을 선택하고 마지막으로 Access Point Policy를 작성하게 되는데요, 이 부분이 기존의 Bucket Policy와 동일하다고 보시면 됩니다.
저는 데모를 위해 neotest 라는 계정을 생성하고 해당 계정이 접근가능한 정책을 생성하도록 하겠습니다.
여기까지 잘 진행하셨다면 아래와 같이 액세스 포인트가 잘 만들어져 있는것을 확인하실 수 있습니다.
이제 만들어진 액세스 포인트를 사용해 봅시다. 액세스 포인트를 사용할 Bucket을 선택한 후 "액세스 지점" 탭으로 이동합니다. 이동하면 방금 만드신 액세스 포인트를 확인할 수 있습니다. 선택 후 "이 액세스 지점 사용" 버튼을 클릭하여 실행해주면 아래 사진과 같은 화면이 나타나면서 액세스 포인트를 사용할 수 있게 됩니다.
실제 보여드릴 데모는 여기까지입니다. 액세스 포인트가 잘 동작하는 것을 확인할 수 있습니다. 액세스 포인트의 생성과 실행을 확인했으니, 이제 앞에서 말씀드린 효율성에 대해 말씀드릴 차례입니다.
마치며
이런 상황을 가정해 봅시다. 3명의 유저가 모두 다른 권한을 가진 상태로 S3에 접근해야 합니다. 기존 Bucket Policy에서는 하나의 Policy를 만들어 관리를 해야 합니다. 예를 들면 다음과 같은 Bucket Policy가 만들어질 수 있습니다.
수 많은 권한 중 중첩되는 몇 가지만 예시로 작성해 보았습니다. 만약 이러한 형식으로 유저 10명이라면? 100명이라면? 점점 더 복잡한 구성이 필요하게 됩니다. 이때 액세스 포인트를 사용하게 된다면 보다 쉬운 구성으로 유연하게 Policy를 관리할 수 있게 됩니다.
데모 마지막에 언급드렸지만 이 서비스의 의도는 결국 접근 유저 별 맞춤형 정책을 지원하겠다는 것입니다. 물론 하나의 Bucket Policy를 사용하는 경우가 더 효과적인 경우도 존재하겠지만 여러 옵션을 고려해볼 수 있다는 점에서, 그리고 인프라가 거대해질수록 필요해 질 서비스라는 점에서 사용을 고려해볼 만한 서비스라고 생각합니다.
이 외에도 CloudFormation과 SDK, CLI 등을 지원하고 있어 더 편하게 사용 가능하며, 이 외에도 VPC로만 S3 액세스를 제한할 수 있어 보안적인 부분도 고려해서 사용 가능합니다.
다만 다음과 같은 제약사항이 있습니다.
크게 불편할만한 제약사항은 없어 보입니다. 또한 이 서비스는 무료로 제공됩니다.
하나의 Bucket Policy로 정책을 관리하는것에 어려움을 느끼신다면, 이 서비스를 사용해 보시는건 어떨까요?
S3 Access Point 소개 포스팅은 여기서 마무리 하도록 하겠습니다. 읽어 주셔서 감사합니다. 끝!
참고: Amazon S3 액세스 포인트를 통해 S3에서 공유 데이터 세트를 사용하는 애플리케이션의 대규모 액세스를 간단하게 관리