google-app-maker - 使用 Cloud SQL 数据库预览或发布应用程序时,Google Scope 授权无限循环
问题描述
大约一个月前,我的组织将 Cloud SQL 设置为 Google 应用制作工具的默认设置。在上周,我们一直无法预览或发布使用 Cloud SQL 数据源的应用程序,包括之前运行良好的示例应用程序。失败发生在授权过程中。预览或发布应用时,Google 应用制作工具会显示一个对话框,说明“部署此应用需要授权”。接下来,它会提示用户输入他们的 Google 帐户,然后请求批准必要的授权(例如,“管理您的 Google SQL 服务实例中的数据”)。批准授权后,授权提示以“部署此应用程序需要授权”对话框重新开始。
观察:
我们在多台不同的计算机、网络和四个不同的用户帐户上重复了这个问题。
在 SQL 云控制台中,我们的 Cloud SQL 实例显示为每个应用程序创建的新数据库以及新的特定于数据库的用户帐户
- 当我使用 phpMyAdmin 直接登录 Cloud SQL 数据库时,所有数据库都按预期显示
- 其他不使用 Cloud SQL 数据源的应用可以正常工作,包括使用托管在同一 Cloud SQL 实例中的计算数据源的应用
- Cloud SQL 数据库的 Stack 驱动程序日志中的唯一错误显示与数据库的“INFO”级通信错误(连接中止......读取通信数据包时出错)
- 我无法找到应用程序的堆栈驱动程序日志,因为我无法预览或发布它们(任一选项都会提供指向堆栈驱动程序日志的链接)
- 现在我们的 SQL 实例中有大约 20 个数据库(主要与简单的应用程序测试相关),我们在 SQL 实例中只使用了 1 GB 的 10 GB 空间
- 我在 Google App Maker 的 Google 问题跟踪器上没有看到任何相关问题
我将不胜感激有关检查内容以解决此问题的任何帮助或建议。
解决方案
我向 Google 问题跟踪器发布了一个问题,Google 更正了该问题。如果此问题再次发生,他们还提供了解决方法。
以下是 Google 开发团队在 Google 问题跟踪器上发布的回复:https ://issuetracker.google.com/issues/145345198
很高兴听到你重新开始工作!我们已意识到此问题,并正在通过长期修复工作。该特定错误似乎与 Google Cloud 会话策略控制中所做的一些更改有关,这些更改可能已推广到您的域,最近以一种意想不到的方式与 AppMaker 交互。我们已经花时间诊断根本问题,我们相信我们知道根本原因。我怀疑您的域管理员执行了以下解决方法的一个版本。
没有深入细节,具体的错误是对于 AppMaker 应用程序的 Deployer,如果 Google Cloud Session 策略设置了任何过期时间,AppMaker 看到的返回令牌是无效的,从而触发 AppMaker 中的循环尝试生成有效的安全令牌。从历史上看,这些会话令牌从未过期,但最近推出了允许域管理员将它们设置为过期的 beta 功能。我们强烈怀疑您的域最近明确设置了此过期策略,这就是导致该错误的原因。
好消息是这些策略在每个组织单位中都是可覆盖的,我们已经测试了具有原始经典永不过期设置的 OU 实际上允许 AppMaker 工作。
我怀疑您的域管理员已在 admin.google.com 控制台下,特别是在“安全”>“谷歌云会话控制(测试版)”下恢复了对您的组织政策的最新本地更改。
如果再次发生这种情况,我们会推荐这里的解决方法。请注意,如果您目前正在工作,则无需执行此操作。您将需要拥有 admin.gogole.com 权力的人的帮助,特别是您组织中的用户和组织单位权力。这稍微增加了安全风险,但它恢复了一些直到最近才成为标准的经典行为。
解决方法的摘要是覆盖 Google Cloud 会话控制到期设置,以便需要访问 AppMaker 部署的个人可以拥有它。为了减轻系统安全风险,最好通过创建一个用途有限的组织单元来完成,该组织单元的设置与父 OU 设置不同。
解决方法是:
- 联系您域中对您的 Google for Business 许可证拥有管理员权限的人。
- 让您的管理员继续访问https://admin.google.com。以下操作需要由域管理员执行。
- 在用户部分下,确定需要能够部署 AppMaker 应用程序的特定用户帐户。
- 确定该 Appmaker 开发用户的组织单位并记下它。
- 在组织单位设置下,找到您在上面确定的组织单位。
- 在该用户当前的组织单位下创建一个新的组织单位,并通过一些描述将其标识为特殊的 wrt AppMaker。所以对于开发者来说,制作类似 DevelopersWhoAreAlsoAppMakerDevs 的东西。
- 返回“用户”选项卡下,找到第 3 步中的用户。将此用户移动到您刚刚创建的新组织单位中。此更改可能需要一段时间才能传播。
-Interlude- 此时,您已经为该个人创建了一个新的组织单位并将其添加到其中。您当然可以将多个人添加到该 OU,尤其是当他们已经在同一个父 OU 中时。使用您的自由裁量权来决定您希望进行多少组织返工。您可能根本不使用 OU,或者您可能决定只为整个域关闭此控件。由你决定。
- 在 admin.google.com 的安全设置下,找到 Google Cloud 会话控制(测试版)设置。
- 在此面板下,从左侧的下拉菜单中,找到您刚刚创建的组织单位。
- 请务必仅选择您要更改的 OU。
- 将“Google Cloud Console 和 Google Cloud SDK 会话控制”从过期更改为“会话永不过期”。
- 保存您的更改。
您在步骤 3 中选择的帐户现在应该能够部署 AppMaker 应用程序。
看来此 OU 更改仅对 AppMaker 应用程序的部署者是必要的,而不是单个用户。另请注意,如果您有多个具有不同当前 OU 设置的 AppMaker 开发人员,您可能需要创建多个子 OU 以避免单个帐户的 OU 设置突然发生根本变化。
推荐阅读
- python - 如何修复“警告:不要在生产环境中使用开发服务器。”
- scala - 使用 Deequ 和 Scala 计算指标
- sql - cfsavecontent 在 SQL 语句中显示双撇号
- django - 如何在自定义用户模型中处理社交身份验证?
- python - 如何从其他 python 文件中调用函数
- r - 如何将数据框列中的所有日期时间转换为 R 中的特定日期时间格式(当 csv 文件以不同格式存储它们时)
- python-3.x - 无法使用 twilio 和 python,django restframework 将短信发送到电子邮件和电话
- c# - 两个连接字符串指向同一个数据库(读和读/写)。如何为两个连接字符串维护相同的事务?
- .net - 如何获取进程的线程并将其显示在列表中
- sql-server - SQL Server Management Studio 中有什么方法可以选择多行吗?