我们希望借助 Bigquery 和 Cloud Storage 服务实现分析工具。该工具应在 App Engine 上运行并公开 REST 接口(interface),以便所有请求都通过该接口(interface)并随后转发到 Bigquery。授权访问 Bigquery 应该基于 App Engine 服务帐户(App Identity API)。但是,我们还需要对工具客户端进行身份验证。客户端始终是另一个应用程序或服务,因此我们不接受基于 OAuth 2.0 和 Web 浏览器的身份验证。有没有一种方法可以实现此类身份验证并以某种方式将其与 Bigquery 和 Cloud Storage ACL 绑定(bind)?
考虑如下情况。客户已获得我们域中的 Google 帐户。它向我们的 REST 接口(interface)发送请求并提供凭据(电子邮件和密码)以及其他详细信息。该工具对客户端进行身份验证并代表其向 Bigquery(或云存储)发送请求。如果客户端在没有正确权限(通过 Bigquery/Cloud Storage ACL 设置)的情况下尝试访问 Dataset (Bigquery) 或 Bucket/Entity (Cloud Storage),则访问将被禁止。
最佳答案
我认为我们都需要更多细节。您如何向客户颁发凭据?您是否希望客户端的运算符(operator)知道您域中的用户名/密码,以便对您的服务客户端进行身份验证?
一个选项可能是向客户端颁发 OAuth 2.0 刷新 token ,然后他们将该刷新 token (安全地)放入他们的应用程序配置中,或者您在他们下载应用程序时自动将其捆绑。刷新 token 无限期有效,除非被撤销。
然后将 OAuth 2.0 刷新 token 直接通过应用引擎应用传递到 BigQuery/Google Cloud Storage。然后可以在 Cloud Storage/BigQuery 中本地处理所有 ACL(哪个客户端有权访问什么)。
您也可以让他们自己在网络浏览器中获取 token ,前提是他们有凭据。他们只需要在设置应用程序时执行一次, token 将由应用程序存储。有关将 OAuth 2.0 用于已安装应用程序的指南中的更多信息: https://developers.google.com/accounts/docs/OAuth2InstalledApp
关于google-app-engine - App Engine 和 Bigquery 身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12980537/