2017-05-17 1 views
2

나는 내부 용도로만 응용 프로그램 엔진에 많은 마이크로 서비스를 가지고 있습니다. 하지만 기본적으로 앱 엔진은 service-project.appspot.com 도메인을 공개하고 누구나 http 또는 https을 통해 액세스 할 수 있습니다. 특정 IP 주소에 대해서만 액세스를 제한하는 방법이 있습니까?Google App Engine 유연한 환경에 대한 공개 액세스를 제한하는 방법은 무엇입니까?

내가 생각할 수있는 간단한 방법은 응용 프로그램 코드에서 소스 IP 주소를 확인하는 것입니다. 또는 소스 IP 주소를 확인하는 nginx 구성으로 사용자 정의 도커 이미지를 만들 수 있습니다. 하지만 액세스 제어는 실제로 응용 프로그램과 독립적이므로 컨테이너 내부의 고정 IP 주소를 하드 코딩하지 않으려 고하기 때문에 이는 매우 깨끗한 솔루션이 아닙니다.

앱 엔진의 방화벽 규칙을 설정하는 방법이 있다고 가정했지만 찾을 수 없습니다. 신원 확인 프록시는 또 다른 옵션처럼 보이지만 앱 엔진 flex에는 사용할 수 없습니다.

답변

1

나는 이것이 편안함을 안다는 것을 알고 있지만, IAP를위한 App Engine flex 지원을 다시 사용하도록 작업 중입니다. 그것은 단지 며칠 이상이 될 것입니다.

https://cloud.google.com/appengine/docs/flexible/java/migrating#users에는 IP를 하드 코딩하는 것보다 더 맛볼 수있는 옵션이 있습니다. appspot.com 트래픽이 Cloud HTTP Load Balancer를 통과하기 때문에 GCE 방화벽 규칙을 사용할 수 없으므로 GCE 인스턴스 방화벽은로드 밸런서의 IP 만 볼 수 있습니다. 에서 앱 내의 IP를 확인하려면 https://cloud.google.com/compute/docs/load-balancing/http/#components에 설명 된대로 X-Forwarded-For를 사용하십시오.

희망이 도움이됩니다. - 매튜, 클라우드 IAP 엔지니어

+0

답변 해 주셔서 감사합니다. X-Forwarded-For를 사용하여 클라이언트 IP 주소를 얻고 10.128.16.0/20 같은 내부 IP 주소 만 허용하려고했습니다. 그러나 'http : // xxx.appspot.com'을 사용하는 내부 통화의 클라이언트 IP 주소도 외부 IP 주소입니다. 그래서 그것이 외부인지 내부인지 알 수 없었습니다. 이 문서에 따라'appspot.com' 도메인 이름을 사용하면 로컬로 라우팅해야합니다. https://cloud.google.com/appengine/docs/standard/java/microservice-performance – essis

관련 문제