見出し画像

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 をコールする構成になります。

画像13

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 レスポンスを得ることができません。

画像5

IAP を利用すると API 側で認証や認可の仕組みを実装する必要はなく、アクセス制御を IAP におまかせできるので楽ちんです 😃

4. Identity-Aware Proxy(IAP) の設定

GAE で自作した API でアクセス制限を設けたいサービスに対して、アクセスを許可するユーザーを IAP-secured Web App User ロールで追加します。

画像1

アクセス制限が必要ない(一般公開)するサービスは、以下のように「allUsers」を IAP-secured Web App User ロールに追加しておけば良いです。

画像2

ちなみに私の GAE/Go では、次のように IAP でポリシー設定してます。
 ・ default サービスは一般公開
 ・ admin サービスは特定の人だけアクセス可能
なお dispatch.yaml で https://hoge.appspot.com/admin/xxxx にアクセスした場合は admin サービスにルーティングするようにもなっています ☆(・ω<)

参考までに私の IAP 設定画面を載せておきます。

〜 ここから先は有料記事となります 〜
投げ銭として寄付していただけると嬉しいです♪

ここから先は

3,299字 / 9画像

¥ 3,000

この記事が気に入ったらサポートをしてみませんか?