任务:我想将本地计算机上的所有日志存储到谷歌日志中。
我面临的问题是我无法创建具有正确权限的服务帐户。即使我会给所有者权限,仍然会得到我的权限被拒绝错误(ACCESS_TOKEN - 它来自帐户 json 密钥的令牌):
cat data.json | http POST
"https://logging.googleapis.com/v2/entries:write"
Authorization:"Bearer $ACCESS_TOKEN"
Response:
{
"error": {
"code": 403,
"message": "The caller does not have permission",
"status": "PERMISSION_DENIED"
}
}
并且使用我帐户中的令牌进行请求可以正常工作:
$ cat data.json | http POST
"https://logging.googleapis.com/v2/entries:write"
Authorization:"Bearer `gcloud auth application-default print-access-token`"
HTTP/1.1 200 OK
Alt-Svc: quic=":443"; ma=2592000; v="44,43,39,35"
Cache-Control: private
Content-Encoding: gzip
Content-Type: application/json; charset=UTF-8
Date: Sun, 23 Dec 2018 21:38:05 GMT
Server: ESF
Transfer-Encoding: chunked
Vary: Origin
Vary: X-Origin
Vary: Referer
X-Content-Type-Options: nosniff
X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
{}
但是,如果我将导出的 stackdriver-station-1.json 凭据文件与 golang/nodejs 应用程序一起使用,我将收到权限被拒绝错误:
使用控制台和从导出的 json 文件生成的 ACCESS_TOKEN 的相同示例:
$ cat data.json | http POST
"https://logging.googleapis.com/v2/entries:write"
Authorization:"Bearer $ACCESS_TOKEN"
HTTP/1.1 403 Forbidden
Alt-Svc: quic=":443"; ma=2592000; v="44,43,39,35"
Cache-Control: private
Content-Encoding: gzip
Content-Type: application/json; charset=UTF-8
Date: Sun, 23 Dec 2018 22:39:51 GMT
Server: ESF
Transfer-Encoding: chunked
Vary: Origin
Vary: X-Origin
Vary: Referer
X-Content-Type-Options: nosniff
X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
{
"error": {
"code": 403,
"message": "The caller does not have permission",
"status": "PERMISSION_DENIED"
}
}
欢迎任何建议!对我来说,似乎我缺少谷歌云权限的一些基本部分。就像我需要在云界面或类似的东西中打上一些复选标记。