簡體   English   中英

為 gcp 存儲桶 object 簽名的 url 失敗,訪問被拒絕

[英]Signed url for gcp bucket object fails with access denied

當我在存儲 gcp 存儲桶中生成帶有 object 服務帳戶的簽名下載 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
    },
})

我使用的服務帳戶具有存儲 Object 創建者和存儲 Object 查看者角色...

按照創建簽名 URL 的指南下載 object: https://cloud.google.com/storage--docs-samples/storage-url

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

如果您在創建簽名 url 時指定標頭,則必須在“卷曲”生成的 url 時包含它們;-)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM