gpt4 book ai didi

node.js - 无需提供凭据即可访问 Google Cloud Storage?

转载 作者:太空宇宙 更新时间:2023-11-03 22:08:32 24 4
gpt4 key购买 nike

我正在使用 Google Cloud Storage,并且有一些存储桶包含未公开共享的对象。下面的屏幕截图中的示例。然而,我能够使用 NodeJS 从本地服务器检索文件,而无需提供任何服务帐户 key 或身份验证 token 。

enter image description here

我无法通过 url 格式从浏览器访问文件(这很好): https://www.googleapis.com/storage/v1/b/mygcstestbucket/o/20180221164035-user-IMG_0737.JPG https://storage.googleapis.com/mygcstestbucket/20180221164035-user-IMG_0737.JPG

但是,当我尝试在没有凭据的情况下从 NodeJS 检索文件时,令人惊讶的是它可以将文件下载到磁盘。我检查了 process.env 以确保没有 GOOGLE_AUTHENTICATION_CREDENTIALS 或任何 pem key ,甚至还在命令行上执行了 gcloud auth revoke --all 只是为了确保我已注销,但我仍然能够下载该文件。这是否意味着我的 GCS 存储桶中的文件没有得到适当的保护?或者我以某种我不知道的方式使用 GCS API 验证自己的身份?

任何指导或指示将不胜感激!!

// Imports the Google Cloud client library
const Storage = require('@google-cloud/storage');

// Your Google Cloud Platform project ID
const projectId = [projectId];

// Creates a client
const storage = new Storage({
projectId: projectId
});

// The name for the new bucket
const bucketName = 'mygcstestbucket';
var userBucket = storage.bucket(bucketName);

app.get('/getFile', function(req, res){
let fileName = '20180221164035-user-IMG_0737.JPG';
var file = userBucket.file(fileName);
const options = {
destination: `${__dirname}/temp/${fileName}`
}
file.download(options, function(err){
if(err) return console.log('could not download due to error: ', err);
console.log('File completed');
res.json("File download completed");
})
})

最佳答案

客户端库使用应用程序默认凭据来验证 Google API。因此,当您未通过 GOOGLE_APPLICATION_CREDENTIALS 明确使用特定服务帐户时,库将使用默认凭据。您可以找到更多详细信息documentation .

根据您的示例,我假设应用程序默认凭据用于获取这些文件。

最后,您始终可以运行 echo $GOOGLE_APPLICATION_CREDENTIALS (或适用于您的操作系统)来确认您是否已将服务帐户的路径指向该变量。

关于node.js - 无需提供凭据即可访问 Google Cloud Storage?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49148306/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com