GKE ポッドで構成されたサービス アカウントのみが呼び出しを許可するように構成されたアクセス許可を持つ Cloud Function へのサーバー間呼び出しを行うことができる必要がある GKE で実行されている node.js アプリケーションがあります。基本的に、node.js にはGOOGLE_APPLICATION_CREDENTIALS
、ボリュームにマウントされた資格情報キー json ファイルを指す環境変数があります。
また、ローカル開発の場合、gcloud sdk 構成に保存されているユーザー アカウントの資格情報を使用するだけでよいと思います。
サービス アカウント資格情報を使用して認証する方法を理解しました。GOOGLE_APPLICATION_CREDENTIALS
環境変数に資格情報キー json ファイルへのパスが含まれていると仮定した場合のコードを次に示します。
import { GoogleAuth } from 'google-auth-library'
const url = 'https://REGION-PROJECT.cloudfunctions.net/RECEIVING_FUNCTION'
const auth = new GoogleAuth({
keyFile: process.env.GOOGLE_APPLICATION_CREDENTIALS,
clientOptions: {
additionalClaims: {
target_audience: url
}
}
})
const client = await auth.getClient()
const res = await client.request({ url })
console.log(res.data)
わずかなバリエーションは次のとおりです。
import { JWT } from 'google-auth-library'
const client = new JWT({
keyFile: process.env.GOOGLE_APPLICATION_CREDENTIALS,
additionalClaims: {
target_audience: url
}
})
しかし、ローカル開発でユーザー アカウントの資格情報を使用してこれを行う方法はまだわかりません。最も近い解決策は次を使用していcURL
ます:
curl -i https://REGION-PROJECT.cloudfunctions.net/RECEIVING_FUNCTION \
-H "Authorization: bearer $(gcloud auth print-identity-token)"
方法はありますが、JavaScriptでどのように行うのですか?