2012-10-20 3 views
0

나는 이것에 대한 해답을 찾으려고 노력했으나 잘못된 용어를 사용하고 있다고 생각하므로이 사진을 줄 것입니다.Amazon S3 서버에서 사용자가 다운로드 할 수있는 파일을 쉽게 제한 할 수 있습니까?

나는 회사가 여러 권한을 가진 여러 사용자와 계정을 가질 수있는 레일스 응용 프로그램을 보유하고 있습니다. 시스템의 일부는 파일을 업로드 할 수있는 기능을 가지며 저장소로 S3를보고 있습니다. 내가 원하는 것은 A 사의 사용자가 해당 회사와 관련된 파일 만 다운로드 할 수 있다고 말할 수있는 능력입니까?

다운로드를 배포 서버 IP 범위 (Heroku가 될 것임)로 제한하고 컨트롤러 및 send_file() 호출을 통해 파일을 공급하지 않는 한 인상을받습니다. 이것은 작동하지만 S3에서 Heroku로 데이터를 읽은 다음 S3에서 사용자로 직접 대 사용자로 돌아 오는 중입니다.

send_file 메소드를 사용하면 S3 서버를 외부 세계에 연결하고 Heroku 앱에서 직접 파일을 보낼 수 있습니까?

덜 안전한 생각은 각각의 파일에 대해 고유 한 슬러그를 만들고 파일 이름을 http://mys3server/W4YIU5YIU6YIBKKD.jpg 등등 임의로 추측하는 것을 방지하기 위해 이름 아래에 저장하는 것이 었습니다.이 방법은 빠르고 안전하지만 100 % 안전하지는 않습니다.

답변

0

Amazon S3 버킷은 다양한 조건에 따라 액세스를 허용하거나 거부하는 정책을 지원합니다. 다른 사용자 그룹의 파일을 보호하기 위해이 파일들을 사용할 수 있습니다. 가능한 한 아이디어를 얻으려면 policy documentation을보십시오. 그런 다음 AWS policy generator으로 전환하여 필요에 따라 유효한 정책을 생성 할 수 있습니다.

+0

꽤 견고 해 보이지만, http를 통해 내 버켓을 열면 하루 종일 별도의 버킷을 만들고 인증을 추가하지 않고도 이미지를 볼 수있는 사람과 파일을 다운로드 할 수있는 사람을 제한 할 수 없습니다. 내 Heroku 앱이 외부 S3 URL에 링크하는 경우 사용자는 앱 외부에서 복사하여 붙여 넣거나 다른 사람과 공유 할 수 있습니다. S3 또는 다른 웹 서버가 파일을 제공 할 때 사이트의 HTML에 포함 된 링크와 직접 링크를 통한 전달을 제한 할 수 없습니까? –

+0

파일을 다운로드 할 수있는 IP 범위를 제한 할 수 있습니다. 이를 사용하여 서버 (또는 네트워크) 만 파일을 다운로드하도록 할 수 있습니다. http://docs.amazonwebservices.com/IAM/latest/UserGuide/AccessPolicyLanguage_ElementDescriptions.html#Conditions_IPAddress – j0nes

+0

나는 그것에 대해 생각했지만 모든 파일을 피드해야합니다. 내 Heroku 응용 프로그램을 통해. 좀 더 파고 들자 마자 나는 슬러그와 만료 URL 옵션의 조합으로 갈 것입니다. –

관련 문제