在App Engine Flexible中保护URL(具有AIM中的用户和角色)

时间:2018-08-23 19:20:08

标签: google-app-engine app-engine-flexible

我想将Java App Engine Standard应用程序升级到App Engine Flexible,我想知道什么是保护某些URL的最佳解决方案(例如/ admin /*)。

在Standard中,我在web.xml中使用了从AIM(https://console.cloud.google.com/iam-admin/iam)限制对用户某些路径的访问:

<security-constraint>
    <web-resource-collection>
        <web-resource-name>users</web-resource-name>
    <url-pattern>/admin/*</url-pattern>
    </web-resource-collection>
    <auth-constraint>
        <role-name>admin</role-name>
    </auth-constraint>
</security-constraint>

the upgrade notes中所述:

  

现在不赞成在App Engine中使用处理程序下的安全设置   灵活的环境。

用来自AIM的用户和角色来保护URL的最佳解决方案是什么,那么使用我已经在此处定义的权限呢?

3 个答案:

答案 0 :(得分:0)

我认为Cloud Identity-Aware代理(IAP)[1]将是您的理想解决方案:

  

使用云身份识别代理(Cloud IAP),您可以管理对在App Engine标准环境, App Engine灵活环境,Compute Engine和Kubernetes Engine中运行的应用程序的访问。 Cloud IAP为HTTPS访问的应用程序建立了中央授权层,因此您可以采用应用程序级访问控制模型,而不必使用网络级防火墙。

检查此页面以管理用户访问权限[2]

  

本页描述了如何在资源级别上管理对受Cloud Identity-Aware代理(Cloud IAP)保护的资源的个人或组访问。

答案 1 :(得分:0)

您可以使用projects.testIamPermissions来检查用户当前拥有的权限,并从那里拒绝/允许访问。例如:

test_iam_permissions_request_body = {

      "permissions": [
        "resourcemanager.projects.get"
      ]
}
如果用户具有

权限,则

将返回resourcemanager.projects.get;否则,将返回空。这样,您仍然可以使用IAM中定义的用户/角色来允许访问。

答案 2 :(得分:0)

不幸的是,仅通过配置已不再可能。如您在documentation

中所见

“请注意,由于无法使用Users服务,因此无法使用app.yaml来使URL仅可由管理员访问。您将需要在应用程序中处理此逻辑。”

您将需要使用应用程序代码来处理此问题(检查经过身份验证的用户,然后允许或拒绝其访问)。