9

Google Source Repository を使用して Google Cloud Functions を保存しています。(基本的には Google がホストする Git リポジトリ)

私の機能の 1 つは、非公開の Google シート ファイルにアクセスする必要があるため、サービス アカウントを作成しました。(サービス アカウントに与えるべき正確な権限を理解するのが非常に難しく、後で更新するのが非常に難しいため、権限が多すぎますが、余談になります)

明らかな理由から、サービス アカウントの JSON ファイルを git リポジトリ自体に保存することはお勧めできません。これがどのように見えるかです(値から取り除かれます)

{
  "type": "service_account",
  "project_id": "",
  "private_key_id": "",
  "private_key": "",
  "client_email": "",
  "client_id": "",
  "auth_uri": "",
  "token_uri": "",
  "auth_provider_x509_cert_url": "",
  "client_x509_cert_url": ""
}

関数などを構成するための環境変数を見てきましたが、何も見つかりませんでした。キーを追跡する (したがって、そのファイルを複数のリポジトリに複製する可能性がある) ことは、あまり良い考えではないように思えます。しかし、私はそれを行う「適切な」方法をまだ見つけていません。また、Google 関数の仕組みのせいで、env 変数以外は考えられません。

4

6 に答える 6

7

サービス アカウントでクラウド機能を使用する場合の私の解決策は次のとおりです。

  1. Cloud KMS/ vaultを使用してサービス アカウントの認証情報 json ファイルを暗号化し、Cloud Storage にアップロードします。
  2. Cloud Storage からサービス アカウントの認証情報 json ファイルを取得し、暗号化 / 復号の権限を持つ Cloud KMS サービス アカウントを使用して復号します。

  3. 実行時にサービス アカウント資格情報の json ファイルを解析しprivate_key、 、client_emailおよびを取得しますprojectId

  4. これら 3 つのシークレット変数をクライアント ライブラリに渡します

構成変数をクラウド機能の環境変数として保存します。それらはプレーン テキストですが、問題ありません。それらは秘密のものではないからです。

クラウド関数の環境変数など、プレーン テキストなどの機密情報を保存してはなりません。

于 2019-08-17T05:58:34.927 に答える