在Google App Engine中隐藏应用程序

时间:2015-12-02 03:16:49

标签: google-app-engine

我已经阅读了一些有关身份验证的信息,但我认为我可以关闭应用的可见性和/或访问公众。这对alpha测试很有用,所以肯定存在这样的设置?或者我是否需要在应用程序本身中构建这样的东西?

5 个答案:

答案 0 :(得分:0)

如果没有某种身份验证机制,您的应用就无法真正区分来自您的请求和来自其他人的请求。

花一点时间来分析应用程序的身份验证要求可能是一个好主意,也许现在可以完成,同时仍处于alpha状态。 根据解决方案的不同,集成起来可能相当简单。

Google提供了多种身份验证选项,请参阅What is the difference between Google identity toolkit, Google OAauth and Google+ sign in

我个人选择了GIT套件,以简化,灵活和方便。

答案 1 :(得分:0)

可以保护您应用的网址,只有授权用户或管理员才能访问它们。

这可以通过app.yaml file(Python,PHP和Go应用程序)或web.xml deployment descriptor(Java应用程序)来完成。

答案 2 :(得分:0)

选项A: 只允许管理员访问,在yourapp.yaml

- url: /*
  login: admin
  script: yourappname.app

选项B: 如果您有静态IP(或每周进行一些更改),您可以检测到请求的IP,并且只能从您的IP运行:

class yourHandler(webapp2.RequestHandler):
    def get(self):
        userIP=self.request.remote_addr
        if userIP=="220.123.211.120"  # Change this with your static IP
            ...your code for authorized users.

选项C: 检查请求域(确保从您自己的授权域调用),并放置一些安全客户端。

class yourHandler(webapp2.RequestHandler):
    def get(self):
        origin=self.request.headers['Origin']
        if origin=="www.yourdomain.com"  # Change this with your domain/subdomain
            ...your code for authorized users.

       # I recommend to put also the CORS headers for your own domain
        self.response.headers['Access-Control-Allow-Origin'] = "www.yourdomain.com"

就个人而言,我有三种选择,另外还有自定义身份验证,可以访问私人内容。

答案 3 :(得分:0)

默认情况下,每项服务都是公开产生的。通过更改所需服务的--ingress设置,分别进行更改。

gcloud beta app services update <service-name> --ingress <value>

  1. all(默认):对Internet公开。
  2. internal-only:仅可用于同一Cloud Project中的资源。
  3. internal-and-cloud-load-balancing:仅可用于同一Cloud Project中的资源。这些请求来自已配置的Cloud Load Balancing。

1个网关+一堆微服务架构示例:

gcloud beta app services update ms-payment --ingress internal-only gcloud beta app services update my-backend-gateway --ingress all <<默认!仅出于示例目的。

通过这种方式,ms-payment仅可由同一Cloud Project中的资源访问,即使它们位于不同的VPC中。

请参阅文档:https://cloud.google.com/appengine/docs/standard/java11/application-security#ingress_controls

答案 4 :(得分:0)

我最近发现您还可以使用 IAP(身份感知代理)IA-what? 我找到了一个在 App Engine 上实现它的教程。 Tutorial for App Engine

所以我不想依赖我自己的身份验证实现,因为我不是专家,而且安全性是很难匆忙学习的东西。一言以蔽之

  1. 部署 IAP step 1
  2. 将您的应用引擎(或整个范围)添加到您的 IAP IAP config
  3. 在左侧面板 step 3 上添加您的授权电子邮件。访问使用:
<块引用>

受 IAP 保护的 Web 应用程序用户:授予对应用程序和其他 HTTPS 的访问权限 使用 IAP 的资源。

我个人的意见是:尝试实施尽可能多的安全措施(不要只依赖一个系统),通常它们可能会失败。