Firebaseからのメール「Firebase CLI lower than 7.7.0 will need to explicitly grant access through Cloud IAM」

珍しくFirebaseからメールが届いていましたが、開いてみればIt' a 英文。がんばって読み解いてみます(;´∀`)

結論

結論としては以下です。

  1. FirebaseのCLIのバージョンを今すぐ確認
  2. v7.7.0に満たない場合は今すぐアップデートする
  3. 古いままのCLIを使ってると来月から面倒なことになる

Cloud Functionsのセキュリティ関係の仕様変更により、古いままのCLIでデプロイしてると、「このFunctionを一般公開する」手続きを毎回取る必要が出てきます。新しいバージョンを使っていればその手間は発生しないという内容でした。

本文を読み解く

では上から順番に見ていきます。

Hi Makito, We are writing because one of your Firebase projects has HTTP Cloud Functions that were deployed using the Firebase CLI. After January 15, 2020, if you use any version of the Firebase CLI lower than 7.7.0 to deploy a new HTTP or Callable Cloud Function, that function will require you to explicitly grant public access through Cloud IAM permissions. Existing HTTP Cloud Functions will not be affected by this change.

どうやらHTTP経由で起動する「Cloud Functions」に仕様変更が入るようです。 2020年1月15日からFirebaseのCLIでCloud Functionsをデプロイする場合、一般ユーザーがアクセスするためには明示的に「公開する」意思表示が必要になるとのこと。すでに公開済みのCloud Functionsは影響を受けません。

What's changing? Due to a Google Cloud Platform change to provide more security and predictability for server-to-server communication, all newly created HTTP Cloud Functions will be private-by-default and require manual configuration using Cloud IAM. However, since most Cloud Functions created by Firebase users are client application-facing, we have updated the Firebase CLI to maintain the existing behavior and set the permissions for new functions as public. This change does not affect the functions that have already been deployed. Only new functions deployed after January 15, 2020, using old versions of the CLI, will be affected.

どうもこの仕様変更はGCP側の都合のようで、サーバ間通信を行う際のセキュリティを向上させたいのが目的だったとのこと。しかしFirebaseのユーザーはクライアント・サーバ間の通信が中心のため、現在の挙動を優先させたそうで、何もしなくてもデフォルトで公開状態になります。

つまりこの影響を受けるのはv7.7.0に満たないバージョンのCLIを、1月15日以降も使い続ける場合のみです。

What is the behavior of a private function? Clients that try to connect will be returned a "403 Forbidden" error.

公開しないCloudFunctionsにアクセスした場合、403が返るそうです。

What’s next? Before you attempt to deploy any functions, update your Firebase CLI to the latest version (at least 7.7.0, released November 7, 2019), by running: Once you have done this, functions deployed with the Firebase CLI will continue to be public by default.

とりあえずv7.7.0以上にアップデートしてくれとのこと。アップデートしさえすればこれまでと変わること無く使い続けることが出来るそうです。

How do I convert my existing functions to private? If you would like to take advantage of the new functionality to restrict access to your existing HTTP functions, you can do so after deploying it by configuring its permissions.

逆に今後は公開したFunctionを非公開(private)にすることができます。この設定はWebの管理画面から行えるとのこと。

アップデートする

まずは現在のバージョンの確認を。あれ…そういえば最近触ってなかったな…と思って実行したらめっちゃ古い(^q^)

$ firebase --version
7.3.2

というわけで最新バージョンをインストールします。

$ npm i -g firebase-tools
$ firebase --version
7.10.0

以上で完了です(・∀・) これで安心してて正月を迎えられますなw