タスク: ローカル コンピューターのすべてのログを Google ログに保存したいと考えています。
私が直面した問題は、正しい権限を持つサービス アカウントを作成できないことです。所有者に許可を与えても、許可が拒否されたというエラーが表示されます (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 credentials-file を 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"
}
}
どんな提案も大歓迎です!私にとっては、Google クラウドのアクセス許可の基本的な部分が欠けているようです。クラウド インターフェイスなどにチェック マークを付ける必要があるように。