IAPで簡単に認証を構成
概要
内部向けのWebアプリを作る際に、社内のGoogleアカウントで認証をかけられたら楽なのに…
そう思っていたらIAP(Identity-Aware Proxy)を使って簡単に認証を構成できたので、それを今回はご紹介します!
やりたいこと

今回はWebアプリのフロントエンドをCloud Runにデプロイしているとします。
上図のようにフロントエンドのCloud Runにロードバランサを繋ぎこみ、そこでIAP(Identity-Aware proxy)を使ってGoogleアカウントによる認証をかけようと思います。
手順
ロードバランサを作る
現在IAPはロードバランサやApp Engine、Cloud Runできるようです。
Cloud RunのIAPは現在プレビュー版ですので、今回はロードバランサを作成し、そこでIAPを有効にする方法で試してみたいと思います。
まずはロードバランサの作成から外部アプリケーションロードバランサを作成します。

この際注意しておきたいのは、IAPはHTTPSロードバランサでしか利用できないので、証明書を取得してSSLを有効にしておく必要があります。

続いてバックエンドを構成します。
「バックエンドサービスの作成」からバックエンドタイプで「サーバレス ネットワーク エンドポイント グループ」(サーバレスNEG)を選択します。

選択すると、バックエンドのプルダウンにデプロイしたCloud Runサービスが表示されるので、該当のものを選択します。

Cloud CDNはIAPと併用できないので、チェックボックスから外してもいいですし、どのみちIAPを有効にすると自動で無効になるようです。
セキュリティ欄からIdentity-Aware Proxyを有効にすることができます。
ここでは一旦オンにせずに作成します。

IAPを有効にする
セキュリティのIdentity-Aware Proxyのページに行くと、作成したバックエンドサービスが表示されています。ここでIAPのトグルを有効にするだけです。

アプリにアクセスするユーザーを許可する

許可したいアプリのバックエンドサービスにチェックを入れると、右側に権限設定のパネルが表示されます。ここでプリンシパルを追加し、組織内のドメインを持つユーザーのアドレスに「IAP-secured Web App User」の権限を付与します。

アクセスを確認する
以上で設定は完了です。
Googleアカウントでログインしていない状態でアプリにアクセス使用とすると、Googleアカウントのログイン画面が表示されるようになりました。

許可しているユーザーでドメインにアクセスするとアプリへのアクセスに成功します。
許可していないユーザーでアクセスすると、以下のようにアクセスが拒否されました。

組織外のユーザーのアクセスを許可する

ケバブメニューの設定を開くと、OAuthの構成が表示されます。
-
Google 管理のOAuth → 組織内ユーザー向け
-
カスタムOAuth → 外部ユーザー向け

デフォルトでは、「Google管理のOAuth」となっているため、「カスタムOAuth」を選択します。
カスタム クライアントIDとシークレットについては、「認証情報を自動生成」で自動で作成してくれます。作成した場合は必ずシークレット情報をダウンロードし、適切に管理しておく必要があります。
これで設定は完了です。
あとは前述と同じ手順でユーザーを許可すると組織外ユーザーでもアクセスが可能になります。
終わりに
今回はIAP(Identity-Aware Proxy)を活用したGoogleアカウント認証の構成を試してみました。組織でGoogle Workspaceなどを導入している場合には、簡単に認証を実装でき、またセキュリティ的にも強固になるため、利用してみても良いかもしれません。加えて、別記事で出しているCloud Run間の内部通信や、Cloud ArmorによるWAF、IP制限なども組み合わせるとよりセキュアなWebアプリができそうです。
AUTHOR

朝日放送グループホールディングス株式会社 技術局 技術開発部
2023年入社で、初期配属で現在の部署に配属される。動画配信やコンテンツ関連のデジタル支援等を担当。学生時代にM-1でスベり倒してから、今日までずっとスベり続けている。




