web-dev-qa-db-ja.com

Firebaseホスティングでプライベート環境変数を設定するにはどうすればよいですか?

最近Divshotがシャットダウンしたため、多くのアプリケーションをFirebaseホスティングに切り替えました。これらのアプリの一部は外部APIに接続するため、Firebaseホスティングにプライベート環境変数(S3アクセスの秘密鍵など)を保存する方法が必要です-誰かアイデアがありますか?この記事があります- https://www.firebase.com/blog/2015-10-29-managing-development-environments.html -しかし、これは非プライベート環境変数のみを対象としています。

ありがとう!

11
nrswolf

Firebase Cloud Functionsを使用して、環境変数を設定できます。これを行う方法に関するドキュメントへのリンクは次のとおりです。 https://firebase.google.com/docs/functions/config-env

Firebaseホスティングにクラウド機能を追加していない場合は、FirebaseCLIツールを使用して追加できます。

firebase init functions
npm install --save firebase-functions@latest
npm install -g firebase-tools

詳細はこちら: https://firebase.google.com/docs/hosting/functions

クラウド機能で環境変数を設定するには、次のようにコマンドラインから設定することもできます。

firebase functions:config:set someservice.key="THE API KEY" someservice.id="THE CLIENT ID"

次に、次のような関数から変数にアクセスできます。

const functions = require('firebase-functions');
const request = require('request-promise');

exports.userCreated = functions.database.ref('/users/{id}').onWrite(event => {
  let email = event.data.child('email').val();

  return request({
    url: 'https://someservice.com/api/some/call',
    headers: {
      'X-Client-ID': functions.config().someservice.id,
      'Authorization': `Bearer ${functions.config().someservice.key}`
    },
    body: {email: email}
  });
});
1
Dylan

Googleの Secret Manager API を試すことができます。

これがFirebaseCloud Functionsに環境変数として保存するよりも安全である理由は次のとおりです。

  1. Secret Manager APIは、最小特権の原則を適用します。これは、シークレットへのアクセスを制限できるため、許可されたユーザーのみにシークレットの表示/編集を許可できることを意味します。
  2. シークレットはAES-256を使用して暗号化されます。
  3. 異常検出に使用できる監査ログ機能があります。

ソースコードのその他の例については、GoogleCloudのSecretManager NPMパッケージのドキュメントをご覧ください こちら

お役に立てば幸いです。

0
erwinleonardy