GCP存储-未提供签名密钥

Vojtech

即使我在这里找到了类似的问题:

未提供签名密钥,无法在Google前提条件下派生

这不会导致解决我的问题。

我正在本地验证Google Storage默认服务帐户,因此可以轻松读取存储桶对象,如下所示:

    private val storage: Storage = StorageOptions
        .newBuilder()
        .setProjectId(projectId)
        .build()
        .service

    fun read() {
        val blob = storage
            .get(BlobId.of(bucket, object))

        println(String(blob.getContent()))
    }

但是,当我尝试使用以下方法生成签名的上传网址时:

    fun uploadUrl(objectName: String): String = storage
        .signUrl(
            BlobInfo.newBuilder(BlobId.of(bucketName, objectName)).build(),
            15,
            TimeUnit.MINUTES,
            Storage.SignUrlOption.httpMethod(HttpMethod.PUT),
            Storage.SignUrlOption.withExtHeaders(mapOf("Content-Type" to "application/octet-stream")),
            Storage.SignUrlOption.withV4Signature()
        )
        .toString()

我越来越signing key not provided

我发现很难识别出我实际上所缺少的东西。我已gcloud auth application-default login通过owner用户身份验证,通常可以执行任何gcloud任务。这里有什么区别?

纪尧姆·布拉奎尔

要签名,您需要一个私钥。拥有用户凭证就不能了,因为您的环境中只有一个刷新令牌。但是,在服务帐户密钥文件中,您具有私钥。您可以下载并使用它,但出于安全原因我不喜欢它。

写了一篇文章,发现了一个Python解决方法我用Java构建了一个类似的技巧(对不起,我不是kotlin开发者!但是我敢肯定,每个人都可以转换!)。

Storage storage = StorageOptions.getDefaultInstance().getService();

Credentials credentialsToSIgn = storage.getOptions().getCredentials();
if (credentialsToSIgn instanceof UserCredentials) {
  credentialsToSIgn = ImpersonatedCredentials.create(
    (GoogleCredentials) credentialsToSIgn,
    "SERVICE_ACCOUNT_EMAIL",
    Collections.EMPTY_LIST, 
    Collections.EMPTY_LIST, 
    3600);
}
System.out.println(
  storage.signUrl(
    BlobInfo.newBuilder(BlobId.of(bucketName, objectName)).build(),
    15,
    TimeUnit.MINUTES,
    Storage.SignUrlOption.httpMethod(HttpMethod.PUT),
    Storage.SignUrlOption.withExtHeaders(mapOf("Content-Type" to "application/octet-stream")),
    Storage.SignUrlOption.withV4Signature()
    Storage.SignUrlOption.signWith((ServiceAccountSigner) credentialsToSIgn)
  )
);

ImpersonatedCredentials仅在此处使用class中sign方法如我的文章中所述,此sign方法使用IAMUtils.sign方法,方法调用服务帐户凭据API

这不是一个不错的技巧,但可以。您可以在参数中放入服务帐户电子邮件,并在本地环境之外忽略它,以确保不会在其他地方执行错误的操作。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

导入存储库签名密钥

来自分类Dev

在GCP跨功能上存储和共享加密密钥的最佳方法

来自分类Dev

在GCP跨功能上存储和共享加密密钥的最佳方法

来自分类Dev

与客户提供的密钥一起使用attr_encrypted(未存储在数据库中)

来自分类Dev

与客户提供的密钥一起使用attr_encrypted(未存储在数据库中)

来自分类Dev

谷歌存储桶的签名URL与提供的签名不匹配

来自分类Dev

JPA2.0映射密钥未存储

来自分类Dev

GCP 存储问题

来自分类Dev

使用RSACryptoServiceProvider,如何将密钥交换密钥和签名密钥存储在同一密钥容器中?

来自分类Dev

存储过程或函数需要未提供的参数

来自分类Dev

选择查询的存储过程未提供输出

来自分类Dev

存储过程期望未提供的参数

来自分类Dev

代表一个 android 应用程序签名密钥密钥库实体以及该密钥中究竟存储了什么?

来自分类Dev

如何在postgres sql中存储未签名的int?

来自分类Dev

Dell Canonical存储库未签名(GPG错误)

来自分类Dev

Dell Canonical存储库未签名(GPG错误)

来自分类Dev

如何修复PPA不能得到“存储库未签名”。

来自分类Dev

如何找到git存储库中未签名的添加项?

来自分类Dev

更新 GPG 错误 - NO_PUBKEY - 存储库版本未签名

来自分类Dev

Ubuntu 18.04.1 LTS 服务器“存储库未签名”

来自分类Dev

GCP存储桶访问日志

来自分类Dev

创建多个GCP存储桶

来自分类Dev

动态存储桶创建 gcp

来自分类Dev

在for循环期间,密钥未存储在lua表中

来自分类Dev

由于主密钥限制,未执行存储过程

来自分类Dev

登录时未通过凭据提供程序加载KSP(密钥存储提供程序)

来自分类Dev

zypper在哪里安装存储库或软件包签名密钥?

来自分类Dev

尝试安装存储库签名密钥时无法写入`-'(破损管道)

来自分类Dev

尝试安装存储库签名密钥时,wget会抛出“缺少URL”

Related 相关文章

  1. 1

    导入存储库签名密钥

  2. 2

    在GCP跨功能上存储和共享加密密钥的最佳方法

  3. 3

    在GCP跨功能上存储和共享加密密钥的最佳方法

  4. 4

    与客户提供的密钥一起使用attr_encrypted(未存储在数据库中)

  5. 5

    与客户提供的密钥一起使用attr_encrypted(未存储在数据库中)

  6. 6

    谷歌存储桶的签名URL与提供的签名不匹配

  7. 7

    JPA2.0映射密钥未存储

  8. 8

    GCP 存储问题

  9. 9

    使用RSACryptoServiceProvider,如何将密钥交换密钥和签名密钥存储在同一密钥容器中?

  10. 10

    存储过程或函数需要未提供的参数

  11. 11

    选择查询的存储过程未提供输出

  12. 12

    存储过程期望未提供的参数

  13. 13

    代表一个 android 应用程序签名密钥密钥库实体以及该密钥中究竟存储了什么?

  14. 14

    如何在postgres sql中存储未签名的int?

  15. 15

    Dell Canonical存储库未签名(GPG错误)

  16. 16

    Dell Canonical存储库未签名(GPG错误)

  17. 17

    如何修复PPA不能得到“存储库未签名”。

  18. 18

    如何找到git存储库中未签名的添加项?

  19. 19

    更新 GPG 错误 - NO_PUBKEY - 存储库版本未签名

  20. 20

    Ubuntu 18.04.1 LTS 服务器“存储库未签名”

  21. 21

    GCP存储桶访问日志

  22. 22

    创建多个GCP存储桶

  23. 23

    动态存储桶创建 gcp

  24. 24

    在for循环期间,密钥未存储在lua表中

  25. 25

    由于主密钥限制,未执行存储过程

  26. 26

    登录时未通过凭据提供程序加载KSP(密钥存储提供程序)

  27. 27

    zypper在哪里安装存储库或软件包签名密钥?

  28. 28

    尝试安装存储库签名密钥时无法写入`-'(破损管道)

  29. 29

    尝试安装存储库签名密钥时,wget会抛出“缺少URL”

热门标签

归档