도메인 이름으로 Google Cloud 버킷에 대한 액세스를 제한합니다.

도메인 이름으로 Google Cloud 버킷에 대한 액세스를 제한합니다.

내 사용자가 내 웹 애플리케이션에 업로드하는 파일을 Google Cloud 버킷에 호스팅하고 싶습니다. 문제는 사용자가 특정 페이지로 이동할 때 파일을 검색해야 하기 때문에 공개적으로 권한을 열어야 한다는 것입니다.

파일 경로에 uid를 사용하여 파일 이름을 지정하더라도(예: "attachments/user_id/some_other_id/individual_file_uid/NameOfFile") 공격자가 해당 파일로 이동하여 https://www.googleapis.com/storage/v1/b/my_bucket/o/attachments목록을 표시할 수 있기 때문에 이는 분명히 큰 보안 위험입니다. 공개적으로 액세스 가능한 버킷에 있는 모든 디렉터리와 파일을 꺼냅니다. 하지만 <img/>태그를 통해 내 웹 앱에 이러한 파일을 포함하기 위해 img src.

내가 생각해 낼 수 있는 유일한 방법은 개별 도메인 이름으로 이러한 파일을 가져오는 것을 제한하는 것입니다. 즉...내 웹 애플리케이션이 application.example.com에서 호스팅되는 경우 application.example.com에서만 파일에 액세스할 수 있도록 제한합니다. 여기서 몇 가지를 찾았습니다.https://cloud.google.com/resource-manager/docs/organization-policy/restricting-domains하지만 도메인 이름으로 액세스를 제한하는 것이 아니라 조직 도메인별로 액세스를 제한하는 것을 말하는 것 같습니다.

그래서 내 질문은 실제로 두 가지라고 생각합니다.

  1. 내가 이것을 잘못 보고 있는 걸까? 내 웹 애플리케이션에서 액세스할 수 있으면서도 이러한 이미지를 안전하게 저장할 수 있는 더 좋은 방법이 있습니까?
  2. 도메인 이름별로 이러한 파일에 대한 액세스를 어떻게 제한할 수 있나요?

답변1

내가 이것을 잘못 보고 있는 걸까? 내 웹 애플리케이션에서 액세스할 수 있으면서도 이러한 이미지를 안전하게 저장할 수 있는 더 좋은 방법이 있습니까?

예, 귀하가 제공한 문서 링크와 관련하여 이를 잘못 보고 계십니다.

DNS 도메인 이름으로 Cloud Storage에 대한 액세스를 제한하거나 부여할 수 없습니다. Cloud Storage 버킷을 공개로 설정하거나, 서명된 URL을 사용하여 액세스를 허용하거나, Cloud SDK API를 사용하거나, ID 기반 액세스 제어를 사용할 수 있습니다.

서명된 URL

도메인 이름별로 이러한 파일에 대한 액세스를 어떻게 제한할 수 있나요?

당신은 할 수 없습니다. 이 기능은 Cloud Storage의 일부가 아닙니다. 자세한 내용은 내 이전 의견을 참조하세요.

보안을 고려한 유일한 옵션은 서명된 URL을 사용하는 것입니다.

관련 정보