IAP で保護された GAE で自作した API を GAS から叩く方法
1. TL;DR
Google App Engine(GAE) 上に自作した API はなにもしなければ(認証など考慮しなければ)、通常は一般公開され、エンドポイントの URL がわかれば誰でも叩ける(実行できる)状態になります。
API を利用する人を制限しないのであれば、誰でも「ご自由にお使いください」で良いのですが、まぁ普通は利用する人を制限したいと思います。たとえば、社内限定だったり、特定の人に限定したり…
API を自作するのはそれほど手間ではありません。が、認証や認可機能を自分で実装するとなると、一気にハードルが上がり大変になります 😱
Google Cloud Platform(GCP) には Identity-Aware Proxy(IAP) という機能が用意されており、リソースに対してアクセス制御ポリシーを適用する事ができます。詳しくは公式ドキュメントを参照してください。
本記事では GAE 側の API の作り方、実装方法などは割愛し、この IAP で保護された API を Google Apps Script(GAS) から実行する方法にフォーカスして解説したいと思います。
2. 構成
GAS から GCP 上の自作 API をコールする構成になります。
3. Identity-Aware Proxy(IAP) で保護されると?
IAP と GAE を組み合わせると、アクセス制限を設けたいリソース(サービス)に対して、ポリシーを設定しておくと、アクセス時にまず Google ログインが求められます。
たとえば GAE で以下のような GET リクエストを受け付ける API を自作したとします。
GET https://hoge.appspot.com/admin/test
この API は以下の雑な JSON レスポンスを返します。
{
text: "ねこぽん元気!"
}
GET リクエストなので、ブラウザで直接アクセスしてみると Google にログインして無ければログインが求められ、ログインしていればアカウント選択画面に遷移します。
IAP で特定のユーザーのみアクセスを許可するように設定しているため、アクセス権の無いユーザーは次のようなエラー画面が表示され JSON レスポンスを得ることができません。
IAP を利用すると API 側で認証や認可の仕組みを実装する必要はなく、アクセス制御を IAP におまかせできるので楽ちんです 😃
4. Identity-Aware Proxy(IAP) の設定
GAE で自作した API でアクセス制限を設けたいサービスに対して、アクセスを許可するユーザーを IAP-secured Web App User ロールで追加します。
アクセス制限が必要ない(一般公開)するサービスは、以下のように「allUsers」を IAP-secured Web App User ロールに追加しておけば良いです。
ちなみに私の GAE/Go では、次のように IAP でポリシー設定してます。
・ default サービスは一般公開
・ admin サービスは特定の人だけアクセス可能
なお dispatch.yaml で https://hoge.appspot.com/admin/xxxx にアクセスした場合は admin サービスにルーティングするようにもなっています ☆(・ω<)
参考までに私の IAP 設定画面を載せておきます。
ここから先は
¥ 3,000
この記事が気に入ったらサポートをしてみませんか?