Identity-Aware Proxyを使ってLoadBalancerにGoogle認証を導入
こんにちは、バックエンドエンジニアの山浦です。GCPのサービス、Identity-Aware Proxyについて調べたのでまとめてみました。
ChatGPTによるこの記事の要約
GCPのサービスであるIdentity-Aware Proxy (IAP)は、HTTPSによってアクセスするアプリケーションに一元的な承認レイヤを確立でき、ゼロトラストモデルに基づくセキュリティを提供する。Load BalancerにIAPを組み込むことで、悪意のあるアクセスを防ぐことができ、VPNが不要なため無駄なネットワーク転送を防ぎ、スピードも向上する。内部IDと外部IDの2種類のログインを提供しているが、操作ログを残すなどの機能は提供しないため、そのような場合は別の解決手段を検討する必要がある。
はじめに
「このツール使いたいけど、ユーザログインの機能がないんだよね。」とか、「リモートワークで開発環境に接続したいけどVPNを経由でのアクセスにしないといけなくて遅いから困る」ということありますよね?その問題、Identity-Aware Proxyを使えば解決できるかもしれないです。
GCPにはIdentity-Aware Proxy(以下、IAP)というサービスがあり、HTTPS によってアクセスされるアプリケーションにGoogle認証を代表とする一元的な承認レイヤを確立できるサービスです。
IAPは以下のような特徴があります。
- 簡単にアプリへの認証、認可機能を設置
- ユーザはアプリのURLにアクセスするだけ、VPNなどの設定は一切なし(ゼロトラストモデル)
- IPアドレスやユーザのグループなどポリシーを設定可能
- GCP以外のアプリにも対応可能
従来のネットワークセキュリティ
従来は「社内は安全、外部は危険」として社内と社外に境界を設ける、境界型のセキュリティ対策がとられてきました。いわゆる「Trust but verify」という考え方です。社外と社内ネットワークとの境界にFirewallを設置し、サーバにはVPNを利用して接続するというのがよくあるセキュリティ対策です。
しかし、アクセス端末の多様化、クラウド化に伴い、その境界を位置付けるものがあいまいになりつつあり、情報漏洩やランサムウェアの攻撃から守ることは難しくなってきます。そこで、新しくゼロトラストモデルが注目されるようになりました。
ゼロトラストモデルセキュリティ
ゼロトラストモデルは社内、社外という境界を設けず、全てのリクエストを信用できない前提で作られています。サーバに対するすべてのhttpリクエストに認証機能を付与するので、社内ネットワークから悪意のあるユーザがアクセスしてもリクエストを弾くことができます。この「Verify and Never Trust」という考え方が最近の主流になっています。
IAPは、このゼロトラストモデルを実現するためのサービスです。
IAPの仕組み
Load BalancerにIAPを組み込んだ場合について説明します。ユーザはアプリのURLにアクセスし、Load Balancerにリクエストを送ります。リクエストを受け取ったLoad Balancerはこのリクエストに含まれる情報をIAPに転送し、ログイン情報がなければGoogleログイン画面にリダイレクトするレスポンスを返します。認証情報がある場合はそのユーザの情報とIAM情報を使い、リクエストの権限があるかを検証します。権限がない場合は403を返します。
権限が有効な場合は無事アプリまでリクエストが送られるようになり、アプリを利用することができます。
Load BalancerにIAP連携すると、悪意のあるアクセスもLoad Balancerである程度阻止できるので、バックエンドサービスに対する攻撃を減らすのに有効です。また、ログイン機構のないツールやアプリを導入したい場合も前段にLoad Balancerを用意してIAP連携するだけでGoogleログインを提供できるようになるので、セキュリティ以外にもメリットがあります。
Webサービスの開発環境やシステム管理画面などはアクセスするユーザを絞りたいケースが多いと思うので、これを活用すると良いと思います。
Google認証以外での認証
ここまでIAPを使ったGoogle認証の仕組みについて説明しましたが、この他にもFacebookやe-mailでの認証をIAPを使って導入することも可能です。このGoogle以外の認証は外部IDと呼ばれていて、IAPとIdentity Platformを組み合わせて使用することになります。外部IDを利用する場合、ログイン画面を自前で用意する必要があるのでご注意ください。
気をつけたいこと
あくまでアクセスの認証、認可機能を提供するものなので、例えばアプリの操作ログを残すなどの目的には向かないと思われます。そういった機能が必要な場合は別の解決手段も検討するべきです。
また、Google認証をLoad Balancerに導入する仕組みは他のクラウドベンダーにもあったりします、例えばAWSのApplication Load BalancerにはリスナールールにGoogle認証を設定することができます。ぜひ調べてみてください。
まとめ
いかがだったでしょうか。IAPを使うことでネットワークセキュリティレベルを上げ、より簡単に便利な認証を用意することができます。
まとめると、Identity-Aware Proxyを使うことで、
- アプリのロジックに手を加えずにLoad Balancerの設定だけで、
- VPNなしで
- 簡単にゼロトラストモデルのセキュリティを導入
することができます。