【问题标题】:Signed url for gcp bucket object fails with access deniedgcp 存储桶对象的签名 url 失败,访问被拒绝
【发布时间】:2021-05-17 17:08:39
【问题描述】:

当我为存储 gcp 存储桶中的对象生成带有服务帐户的签名下载 URL 时,我希望任何人都可以使用它,而无需进行身份验证。但是,我不断收到“匿名调用者没有 storage.objects.get 访问 Google Cloud Storage 对象的权限”。我做错了什么?

url, err := gcs.SignedURL(bktName, so.Name(), &gcs.SignedURLOptions{
    GoogleAccessID: serviceAccountName,
    Method:         "GET",
    Expires:        time.Now().Add(duration),
    ContentType:    md.RenditionMetadata[0].ContentType,
    Headers:        []string{fmt.Sprintf("x-goog-meta-filename: %s", md.RenditionMetadata[0].FileName)},
    SignBytes: func(b []byte) ([]byte, error) {
        signedBlob, err := iam.SignBlob(s.GoogleIamService(), serviceAccountName, b)
        if err != nil {
            return nil, err
        }
        return []byte(signedBlob), err
    },
})

我使用的服务帐户具有存储对象创建者和存储对象查看者角色...

【问题讨论】:

  • 如果我将对象公开,它似乎可以工作,但这是不可接受的,带有持续时间的签名 url 是绝对必要的......

标签: google-cloud-platform storage bucket signed-url


【解决方案1】:

按照创建签名 URL 的指南下载对象: https://cloud.google.com/storage/docs/samples/storage-generate-signed-url-v4

或者,您可以使用 gsutil 命令创建签名的 URl: https://cloud.google.com/storage/docs/gsutil/commands/signurl

【讨论】:

    【解决方案2】:

    如果您在创建签名 url 时指定标题, 您必须在“卷曲”生成的 url 时包含它们;-)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-02-21
      • 1970-01-01
      • 2021-07-05
      • 1970-01-01
      • 2019-02-03
      • 2020-04-01
      • 2018-01-16
      • 2020-02-18
      相关资源
      最近更新 更多