1

내 웹 앱은 Amazon S3를 사용하여 django 저장소의 타사 앱 덕분에 모든 djagno 웹 앱에 모든 미디어 파일을 저장합니다.s3 파일을 Django 그룹 사용자로 제한

내 db는 폴더 및 파일 계층 구조를 처리하며 각 사용자는 자신의 그룹에 속한 링크 만 볼 수 있습니다.

하지만! S3에서 다른 폴더에 대한 권한이 없습니다. 사용자 1 : 예

그룹 1 그룹이다 사용자 2 그룹 인 그룹 2 S3 링크 : https://s3.amazonaws.com/

, 사용자 (1)는 내부에 자신의 페이지를 확인한다 /media/group1/folder1/1.png 앱. 사용자 2에게는이 링크가 표시되지 않지만이 링크에 연결하려고하면 파일에 대한 사용 권한이 없으므로 쉽게 다운로드 할 수 있습니다.

내 목표는 폴더 권한을 각 그룹으로 제한하는 것입니다.

내 aws 키를 기반으로 자동으로 해결책이 있습니까? 잃어버린 ...

답변

1

편집 새로운 솔루션 :

아마존 SDK는 사전 서명 된 URL 기능을 제공합니다. 이렇게하면 사용자의 특정 파일에 대한 임시 URL을 생성 할 수 있습니다.

그래서 유스 케이스 시나리오가 있습니다. S3 이미지는 여전히 비공개로 유지됩니다. 사용자가 이미지를 요청하면 먼저 모든 링크를 임시 링크를 생성하는 서명 처리기로 전달합니다. (이것들은 만료되도록 설정되어 있고 암호화와 보호 기능이 풍부하여 누군가가 그러한 링크를 납치하는 것은 불가능합니다.)

최종 사용자는 아무 일도 일어나지 않은 것처럼 아마존에서 직접 브라우저에서 파일을로드하고 볼 수 있습니다.

올드 솔루션

그럼 또 다른 해결 방법은 공공 액세스하지 않고 S3 에있는 모든 파일을 저장할 수 있습니다. 그런 다음 응용 프로그램에 대한 IAM 역할을 만들고 그 역할에 버킷에 대한 액세스 권한을 부여하십시오. 그런 다음 응용 프로그램에서 S3 파일을 읽는 방법을 만들고 권한이있는 경우 사용자에게 제공하십시오.

간단한 예.

S3 파일 경로

//media/group1/folder1/1.png

요청 = MyWebMethod/GETFILE? internalPath = "폴더 1/1.PNG "

{

지능 userId를 customAuthentication.getUserId =();

문자열 CompletePath ="미디어/그룹 "+ + userId를"/ "+ internalPath

VAR 이미지 = AwdSdkClient.getFileFromS3 (CompletePath)

창 이미지;

}

기본적으로 각 사용자는 자신의 그룹 내에서만 파일을 요청할 수 있습니다.

더 진보 된 방법은 파일을 실제로 서버로 가져 오지 않고 파일에 중간 데이터 스트림 파이프를 만드는 것입니다. (나는 장고 개발자가 아니므로 이것이 가능한지 모르겠습니다.)

0

웹 인증 사용자를 위해 싱글 사인온 (SSO)을 효과적으로 제공하고자합니다. 한 가지 방법은 아마도 이것을 처리하는 유일한 방법은 SAML provider을 사용하는 것입니다. 이렇게하면 타사 인증 된 사용자/그룹을 AWS IAM 사용자/그룹에 매핑합니다.

정상적으로 작동하지만 몇 번의 마우스 클릭만으로 충분합니다.