FunctionsGCPIAMFirebase便利ですよね。Functionsで簡単なServerlessプログラムを書いてライフハック(ほとんどゴミみたいなBot)に利用することが多いです。Jobを使用して定期的に関数を実行したりしています。Functionsの長所は誰でもHTTPリクエストで起動できるところであり、短所もまたその点にあります。これは特定の権限を持った発信元のみに実行を許可したい際、問題になるでしょう。今回は公式でも紹介されている上記の方法でその問題を解決します。Bucketを作成し、承認を行うプロキシとして利用する方法です。Functionsと異なり柔軟な承認の仕組みを有しているため、リクエストが実行されるごとにそちらのAPIで権限を確認してレスポンスを切り替えます。以下の項目を満たしていることを確認してください。gs://andoshin11-test-bucket/...gs://~以降のBUCKET_NAMEは任意の名前を選択できますが、ユニークである必要があるため既に存在している場合はエラーで怒られます。Tokenを取得するためにはサービスアカウントの情報が必要です。base64などでエンコードして環境変数に保存すると取り回しがしやすいでしょう。curlを実行してみます。不正なアカウントですエラーで怒られました。Tokenをリクエストヘッダーに付与して実行します。Accountには権限が無いので当然です。hogeよっしゃ👏👏まとめGCPのIAMは柔軟に権限が設定できる反面、Tokenの発行には若干癖がある印象です。Imageが用意されているのでCIからは問題なく叩けそうですが、それ以外の環境ではやや苦労するかもしれません。今回はプロキシとして無理やり認証システムを噛ませているだけなので、認証部分を別の形式に置き換えていただいても問題なし。Fuctionsで動くプログラムを紹介します。おつきあいありがとうございました。