IAP(Identity-Aware Proxy)って何?
そもそも、インターネット上のサイトには、大きく分けて2種類あります。
🟢 誰でもアクセスできるサイト(例:YouTubeやWikipedia等)
🔒 特定の人だけがアクセスできるサイト(例:学校の成績サイトや会社の社内ページ等)
IAPは、「特定の人だけアクセスできるようにする仕組み」です。
IAP を使用すると、HTTPS によってアクセスされるアプリケーションの一元的な承認レイヤを確立できるため、ネットワーク レベルのファイアウォールに頼らずに、アプリケーション レベルのアクセス制御モデルを使用できます。
IAPと使うと、こんなことができます
機能 | 例 |
①ユーザーの本人確認 | Googleアカウントでログインしている人かをチェックする |
②権限があるかを確認 | 「この人は許可されたユーザーかどうか?」を確認 |
③許可されていない人をブロック | 許可されていない人はアクセスができず、エラーメッセージが表示される |
このようにIAPを使用することで、あるリソースについて、従業員にはアクセスを許可し、請負業者には許可しないように設定できます。また、特定の部門のみがアクセスできるようにすることもできます。
IAP以外に、Google Cloudでは他にもアプリケーションでユーザを認証する方法があります。
- Firebase Authentication
- Google ログイン
- OAuth 2.0 と OpenID Connect
- Google Cloud Identity Platform
- Users API
参考:ユーザーの認証
App EngineでのIAPを有効化する手順
App Engineに対して、IAPを有効化または無効化するには、下記の権限が必要です。
appengine.applications.update |
参考:IAPの有効化と無効化
- IAPの画面を開き、App Engine アプリのIAPの欄にチェックをつける
- App Engineアプリの行をクリックすると、右側にApp Engineアプリの設定画面が出てきます。
この画面のプリンシパルを追加をクリックして、アプリケーションへのアクセスを許可したいユーザやユーザーグループに対して、IAP-secured Web App Userロールを付与します。
このように設定することで、IAMロールを保持しないユーザがアクセスした場合に、このような画面が出るようになります。
注意点
IAPのコンソール画面にあるように、App Engineではアプリ単位でしかIAPの有効化ができません。
IAPの有効化と無効化内に注意書きにもありますが、App Engineアプリに複数のサービスがあり、サービス単位でIAPの有効化を制御したい場合、IAMポリシーで追加の設定が必要です。
注:1 つの App Engine アプリケーションが複数のサービスで構成されている場合に、一部のサービスは公開し、その他のサービスは制限された状態にするには、アプリケーション全体で IAP を有効にし、一般公開するサービスでIAP で保護されたウェブアプリ ユーザーのロールを「allUsers」または「allAuthenticatedUsers」に付与します。
まとめ
IAP(Identity-Aware Proxy)を使うことで、Google Cloud上のアプリケーションに対して「誰がアクセスできるか」を細かくコントロールできるようになります。
ネットワークレベルの制御だけに頼らず、アプリケーションレベルでのアクセス制御を実現できるのが大きな特徴です。
特に App Engine では、IAP をアプリ単位で有効化し、IAMロールでアクセスを制御する設計になっているため、
-
社内ユーザーだけに見せる
-
一部のサービスだけを一般公開する といった柔軟な運用が可能です。
本記事が、App Engine における IAP の役割や導入方法、注意点を理解する手助けとなれば幸いです。
コメント