액세스 제한이있는 GCS에서 정적 페이지 제공

Nov 14 2020

Google 클라우드 저장소에서 정적 페이지를 제공하고 있습니다. 공개되어있는 한 완벽하게 잘 작동합니다. 이제 한 그룹의 사용자 만 저장소를 읽을 수 있고 인증되지 않은 사용자는 Google 인증으로 리디렉션되도록 acl을 설정했습니다. 문제는 이제 javascript 및 CSS와 같은 웹 사이트의 정적 콘텐츠를 더 이상 찾을 수 없으며 거기에서 404 오류가 발생한다는 것입니다. 정적 콘텐츠도 저장소 버킷에 있으며 공개 URL에서 제대로 작동합니다. 인증 된 URL을 사용하면 더 이상 작동하지 않습니다.

액세스 제어 페이지를 제공하려는 시도가 맞습니까? 정적 콘텐츠를 제외하고 작동하기 때문에 그렇게 생각합니다. 그래서 내가 여기서 놓친 아이디어가 있습니까?

답변

1 guillaumeblaquiere Nov 15 2020 at 12:58

App Engine에 배포 해보세요. 이를 위해

  1. 정적 파일의 동일한 루트 디렉토리 app.yaml에서이 콘텐츠 로 파일을 만듭니다.
runtime: nodejs10
env: standard
instance_class: F1
handlers:
  - url: /
    static_files: index.html
    require_matching_file: false
    upload: index.html
  - url: /(.*)
    static_files: /\1
    require_matching_file: false
    upload: /.*
  - url: .*
    script: auto
  1. App Engine에 배포 gcloud app deploy
  2. 제공된 URL에서 작동하는지 확인하십시오.

그렇다면:

  1. 보안-> IAP (Identity Aware Proxy)로 이동합니다.
  2. App Engine 용 IAP 활성화 이 단계에서 OAuth 동의 화면을 구성해야 할 수 있습니다.
  3. 루트 서비스 왼쪽의 확인란을 선택하고 페이지 오른쪽의 정보 패널로 이동합니다.
  4. 역할이있는 구성원, 그룹 또는 도메인 추가 IAP-secured Web app user

테스트하고 즐기십시오!

1 JanHernandez Nov 23 2020 at 17:26

다음 해결 방법을 사용하여 버킷을 기반으로하는 GCS 정적 페이지에 사용자 인증을 추가 할 수 있습니다.

먼저 redirect.html 이라는 공개 파일을 만들어야합니다. 이 파일은 정적 웹 페이지의 진입 점이 될 것이며 다음 콘텐츠를 추가해야합니다.

<html>
  <head>
    <meta http-equiv="Refresh" content="0; url=https://storage.cloud.google.com/[yourbucketname]/index.html">
  </head>
  Redirecting to your site..

index.html 다른 파일은 선택한 사용자에게 읽기 권한이 부여 된 개인 파일이어야합니다.

이 마법은 브라우저에 활성 Google 계정이없는 경우 브라우저에서 Google 계정을 선택하라는 메시지가 표시된다는 것입니다.

독자 권한 (또는 읽기 권한이있는 다른 역할)이있는 사용자 만 정적 웹 사이트에 액세스합니다.

참고로, 브라우저에 Google 계정이 2 개 이상있는 경우 브라우저의 기본 Google 계정 이 사용됩니다. 시크릿 창을 사용하는 경우 인증 문제가 발생할 수 있습니다 .

이 매체 기사 에서 더 많은 정보를 찾을 수 있습니다.

추가 단계

데이터 액세스 로그를 활성화 한 경우이 해결 방법으로 인해 일부 인증 문제가 발생하므로 인증 된 사이트를 사용할 사용자에게 예외를 추가해야합니다.

이렇게하려면 Cloud Console에서 IAM 및 관리자> 감사 로그로 이동 합니다. 목록을 살펴 보거나 Google Cloud Storage. 행을 클릭하십시오.

오른쪽 정보 패널의 면제 된 사용자 탭 에서 면제 된 사용자 추가를 클릭합니다.