🔐

社内メンバーのみが Cloud Run にアクセスできるようにする

2022/04/18に公開約1,700字

Cloud Run と Vercel や Netlify

殆どの会社が、開発環境やステージング環境を用意し、その上で検証を重ねた上で、本番環境へデプロイしていると思います。
そして、Cloud Run は非常に多くの企業から使用されています。

Vercel や Netlify では、お金を払うことでプレビューサイトへのアクセス制限を付けることができます。
しかし、結構コストがかかることと、両方ともユーザー数課金であることから、ROI が良くないです。

そこで、Cloud Run を選ぶことが多いんじゃないかと思います。

Cloud Run の開発環境の認証問題

そうなった時、開発環境の認証が問題になってきます。

対策していないと、Google 等にインデックスされてしまう可能性もあります。
しかし基本的にはインデックスを防ぐ以前に、万が一にも開発環境用のドメインが漏れた場合の対応策として、Basic 認証でも良いから認証を付けるべきというのがセキュリティ的な指針としてあると思います。

例えば開発環境にデプロイする時だけ、環境変数を使ってフロント側で認証を表示するという方法がありますが、ID & パスワードを共有する必要があり、面倒です。

多くの企業が Google Workspace を採用して、同一ドメインのメアドを社内に配布していると思います。
そのドメインを持つ Google ユーザーに制限することで、簡単で統一的にアクセス管理を行うことができます。

以下の記事に使用されている、Identity-Aware Proxy を使用することで、社内メンバーのみがアクセスできる Cloud Run を実現できます。

https://zenn.dev/ww24/articles/19099c85febe0d

設定方法

まず、大前提として、以下の画像のように、組織内にプロジェクトが入っている状態である必要があります。
そして、以下の画像での example-dev プロジェクトにデプロイされている Cloud Run に制限をかけたい、という状態です。

Projects in Organization

後は、先程も紹介した記事が、非常に丁寧にまとめられているため、そちらに従っていただく形になります。

https://zenn.dev/ww24/articles/19099c85febe0d

しかし、一点だけ社内メンバーに限定するために必要なアクションがあります。

上記記事の「IAP 有効化」の所で、OAuth 同意画面の構成に関して言及されています。
ここで、以下のように、「内部」を選択する必要があります。

OAuth

「内部」を選択すると、GCP と Google Workspace が紐付いているため、その組織のドメインからのアクセスのみを許可するように設定できます。

残りは上記の記事に従っていただければ、会社のメアドではアクセスでき、個人のメアドでは弾かれるようになっていると思います。

最後に

IAP と OAuth 同意画面の「内部」設定は非常に相性が良いです。
Cloud Run は、「内部トラフィックと Cloud Load Balancing からのトラフィックを許可する」という設定にしているため、IAP を迂回する術はありません。
一時的な設定ミス等で迂回できたとしても、「認証を必要とする」という設定になっているので、問題はありません。

今後社内メンバーが増えたとしても、Google Workspace でユーザーを作成するだけなので、管理コストを非常に低く保てます。
Basic 認証と比較すると、より安全で楽に運用できるかと思います。

こちらの記事が参考になれば、幸いです。

GitHubで編集を提案

Discussion

ログインするとコメントできます