検証用のGAEアプリケーション(WordPress)を別途立ち上げたのですが、都度アプリケーションの有効/無効の切替を行うのが面倒になり有効のままにしたいのですが、セキュリティ上問題があるので、Cloud IAP(Identity-Aware Proxy)でID認証をかける事にしました。
What is Cloud IAP?
- GCPのコンピューティングサービス(GCE,GAE,GKE,Cloud Runなど)へのアクセス制御を行うID認証プロキシサービス。
- 認証IDはGoogle AccountやGoogle Apps Domainなどを利用。
メリット
- GoogleのID認証を経てアプリケーションへアクセス出来るようになり、セキュアな運用が可能となる。
- VPNを利用するより遥かに安い。
デメリット
- アプリケーション全体(=コンピューティングサービス全体)がCloud IAPのID認証対象となってしまう。
- 特定のURIのみ認証をかけたいといった細かい制御を行う事は基本的に出来ない、サービスを分けるなど工夫が必要。
アプリケーション丸ごと認証を掛けてもOKという運用向けの認証サービスだと思います。
料金
原則無料ですが、
- GCE
- GKE(ノードでGCEを利用)
と併用する場合にのみ、追加費用が発生する場合があるようです。
設定手順
以下GAEにCloud IAPを設定する場合の手順となります。
Cloud IAP APIの有効化(初回のみ)
[Cloud Consoleメニュー]->[IAM]->[Identity-Aware Proxy]の順で選択します。
Cloud IAP初回利用の場合、Cloud IAP API有効化画面が表示されますので、[APIを有効にする]をクリックします。
GAEでCloud IAPを設定する
[Cloud Consoleメニュー]->[App Engine]->[設定]の順で選択します。
画面下部に 「Identity-Aware Proxy」という項目があり、項目内の[設定]リンクをクリックします。
クリックすると、Cloud IAPの設定画面に画面遷移します。
OAuth同意画面の設定
[同意画面を構成]をクリックします。
User typeを選択します。
※GSuiteユーザーの場合のみ、内部ユーザーを選択出来ます。
今回は私個人のGoogleアカウントを利用しているため、[外部]を選択の上[作成]をクリックします。
赤枠の項目を入力し、[保存]をクリックします。
Cloud IAPの有効化
Cloud IAPの設定画面で[IAP]トグルをONにします。
アクセス権限付与
対象リソースにチェックを入れると、画面右側に情報パネルが表示されます。
情報パネル内の[メンバーを追加]をクリックします。
- アクセス権を付与するユーザーアカウント(Googleアカウント)
- ロール
を設定し、[保存]をクリックします。
動作確認
GAEアプリケーションにアクセスし、動作確認をしてみます。
アクセス権が付与されているユーザー
ID認証が通り、GAEアプリケーション(WordPress)が表示されました。
アクセス権が付与されていないユーザーでログイン
ID認証が拒否されました。
まとめ
設定自体は簡単なので、要件にマッチすればお気軽にお試し頂けると思います。
余談ですが、GAEの前世代ランタイムでは、app.yamlに「login: admin」と記述する事で、特定のURIに対しID認証をかける事が出来ていたのですが、現行ランタイムではこの機能が廃止されました。
非常に使い勝手のよい機能だったので、廃止は物凄く残念です。。。