【问题标题】:Android: How to use GCP service account for Android appAndroid:如何为 Android 应用使用 GCP 服务帐户
【发布时间】:2019-12-04 11:28:03
【问题描述】:

我在我的应用程序中使用 Google 路线 API。最近,我从 Google 收到关于 API 密钥的警告:

Your app contains exposed Google Cloud Platform (GCP) API keys

这是因为方向 API 需要授权密钥(我在 strings.xml 文件中有该密钥,并从那里附加它)。在控制台上,已经添加了应用程序的包名称和 SHA1,并限制了 API。我读到了setting up GCP service account,但不知道如何使用它。根据文档,我们应该设置环境变量并通过它提供凭据。这是否意味着我必须将生成的 json 文件存储在我的应用程序中并从那里获取凭据(如文档中所述)。如果不是,那么移动应用程序的最佳方法应该是什么。

更新:生成的 google-services.json 本身包含 api 密钥。

【问题讨论】:

    标签: android android-security


    【解决方案1】:

    最好的来源是Google Documentation itself

    来自文档 -

    如果您在应用程序中嵌入 GCP API 密钥,这些密钥将公开可用。您的 API 密钥的这种暴露可能会导致您的应用帐户出现意外费用和配额更改。我们建议使用以下方法之一在您的应用中解决此问题:

    1. 如果可能,请使用 GCP 服务帐户代替 GCP API 密钥来验证您的应用。 GCP 服务帐户是与您的 GCP 项目关联的 Google 帐户。有关创建和使用服务帐户的更多详细信息,请访问here

    2. 为您的 API 密钥添加限制,以便只允许您的应用程序使用 API 密钥。有关向 API 密钥添加限制的更多详细信息,请参阅 here

    请查看GCP best practices 以安全地使用 API 密钥。

    【讨论】:

    • 我是在浏览完文档后才发布这个问题的。自从在我的项目中使用以来,就存在 API 限制
    【解决方案2】:

    这是将该 API 公开给 Android 应用程序的错误方法,因为它会公开服务帐户凭据,该凭据可以从包中提取。改用google-maps-services-java - 它只需要向后移植到 JRE 7(从源代码构建,同时添加两个方法),因为它依赖于 Java 8 Instant,它仅适用于较新版本的 Android,它使用JRE 8(该库不正式支持 Android)。

    为了不暴露 Maps API 密钥,它需要是那个 Android 应用程序的restricted to the fingerprints(这些可能是多个指纹,一个用于调试、发布并最终用于 Play 商店)。

    【讨论】:

    • 密钥从使用开始就受到限制。我不确定它为什么开始发出警告。回到 GCP 文档,我专注于使用 GCP 服务帐户。只是运行一些测试。完成后会在这里发布:)。但是很长一段时间以来,他们一直在以公开的方式获取 api 密钥。对于终端应用程序,即使存储在自己的服务器上也不是解决方案,因为流量可能会被拦截。无论如何,它仍然需要客户端应用程序具有 json 文件,其中包含服务帐户密钥,不确定它有多安全。
    【解决方案3】:

    您的应用包含公开的 Google Cloud Platform (GCP) API 密钥

    所以这意味着您拥有被限制为 NONE 的 GCP 密钥,可供浏览器或应用程序中的任何人使用。

    如果您在应用程序中使用它,那么您需要在 GCP 中提及 2 件事

    您需要限制 ANDROID 的密钥

    1. 包名称:com.yourpackage

    2. SHA1 key : Right - Top Side GRADLE in tha TASKS - ANDROID - SIGNING REPORT 双击它你会在 RUN TAB 获得 SHA1 key

    只需在您的 GCP 中使用它来限制您的应用程序。

    【讨论】:

    • 正在使用中,因此受到限制
    猜你喜欢
    • 2020-03-03
    • 2020-06-18
    • 2020-11-05
    • 1970-01-01
    • 2021-03-30
    • 2017-12-24
    • 2019-08-19
    • 2021-12-01
    • 1970-01-01
    相关资源
    最近更新 更多