ついに GA になった Cloud Identity-Aware Proxy (Cloud IAP)。
簡単な設定で、GAE(SE/FE), GCE, GKE へのアクセスを安全に管理することができます。
IAP とは「ID認証プロキシ」の意味で、認証 ID として 有効な Google アカウント や Google Apps ドメインを利用します。アクセス制御の設定は非常に簡単で、クラウドコンソールからアクセスを許可したい ID を登録するだけです。たったこれだけの設定でありながら、認証サーバが Google の管理下にあることや、セキュリティ キー の利用を必須にできることから、セキュリティ面でも安心できます。また、GAE での利用料は無料となっています!(※1)
※1… GCE (GKE) での利用に関しては、必要な負荷分散とプロトコル転送で追加費用がかかる場合があります。
Cloud IAP 概要
Cloud IAP は GAE や GCE などで動作するアプリケーションへのアクセスを制御するための ID 認証プロキシサービスです。
Cloud IAP の認証用 ID は Google アカウントや Google Apps ドメインを利用します。
アプリケーションにリクエストが飛んでくると、アプリケーションでは内部的に Cloud IAP が有効になっているかをチェックします。有効になっていた場合は Cloud IAP の認証サーバがIDを取得し、アクセス許可設定に登録されていればアクセスを許可する という方法でアクセス制御をしています。
下表は Cloud IAP と VPN の技術比較です。
機能 | VPN | Cloud IAP |
---|---|---|
認証 | VPN クライアント | Cloud IAP サーバ |
接続 | ログイン | Google Account 認証情報 |
暗号化 | 通信経路の暗号化 | HTTPS(※2) |
Cloud IAP を設定することによって VPN の主要な部分を置き換えることができるので、アプリケーション管理者がアクセス制御のために VPN を利用する必要性が減少します。そのため、VPN の作成や管理へのコストを削減することができます。また、Cloud IAP の認証サーバを Google が管理していることや、認証に利用する ID は有効な Google アカウント、Google Apps ドメインなどに限定されていること、セキュリティ キーを利用した2段階認証の必須にできることなどから、セキュアにすることができます。
ユーザ ID には個人の Gmail アドレス以外にも、Google グループ、サービスアカウント、G Suite ドメインでアクセス対象を指定することが可能です。
CLOUD IDENTITY-AWARE PROXY 公式ページ
※2…Cloud IAP の機能ではなく、アプリケーションに設定した下記の SSL 証明書を利用した HTTPS 通信となります。
- GAE: 標準 SSL 証明書、Google 自動管理 SSL 証明書、自分で設定した SSL 証明証
- GCE/GKE: HTTP(S) LB 作成時に設定した SSL 証明書
GAEへのアクセスを制御するのは簡単設定
実際に Cloud IAP を GAE(SE) のアプリケーションに設定してみます。
設定するにはクラウドコンソールから [App Engine] > [設定] と選択していきます。
設定画面に遷移すると、画面の下のほうに 「Identity-Aware Proxy」という項目があり、Cloud IAP の現在の設定状況 (有効/無効) の表示と、Cloud IAP 設定画面へのリンクがあります。
それでは、「設定する」のリンクをクリックして設定画面を見てみます。
①OAuth 同意画面の設定
まずは認証時に表示される画面の設定をします。
②Cloud IAP の有効化
トグルボタンをクリックすると確認画面が表示されるので、「有効にする」を選択します。
③アクセス可能ユーザの追加
「追加」をクリックすることでアクセス可能なユーザを設定することができます。
「Access」の項目をみるとユーザが追加されていることが確認できました!
アプリケーションにアクセスすると、認証画面に遷移するので、そこで追加したユーザでログインすることで認証されます。
動作確認
アクセスを許可していないユーザでアクセスした場合の画面遷移とインスタンスの挙動について検証していきます!
インスタンスの挙動を確認するので、事前にアプリケーションのインスタンスを削除しておきます。
削除方法は、クラウドコンソールの [App Engine] > [インスタンス] から削除が行えます。
追加していないユーザでのアクセス
下記のアカウントからアクセスしてみます。
認証画面でアカウントを選択すると、下記の画面に遷移させられ、アクセスが拒否されたことが確認できました!
インスタンスの立ち上がり
次にインスタンスの挙動を見てみます。
先ほどインスタンスを削除した際のページにアクセスしてみてみると。。。
アクセス拒否の場合にはインスタンスが立ち上がらないことがわかります。
まとめ
Cloud IAP を利用することで GAE へのアクセス権を持つユーザの管理が非常に簡易になることが確認できました!
今回は単一の Google アカウントで設定しましたが、Google グループアカウントや、GCP のサービスアカウント、Google Apps のドメイン (弊社であれば cloud-ace.jpなど) での設定も行えるため、グループ単位や会社単位でのアクセス許可設定も一発でできます!
また、アクセス拒否時にインスタンスが立ち上がらないため、インスタンスの起動時間で課金される GAE の料金も抑えることができて嬉しいですね!!
ぜひご活用ください!
※ 弊社ではクラウドエース(Cloud Ace)というGCPの導入・運用支援サービスを提供しておりますので、ご興味のある方はこちらまでお問い合わせくださいGAEに限らず、あらゆるGCPサービスのサポートが可能です