LoginSignup
1
0

More than 1 year has passed since last update.

[Identity-Aware Proxy] Cloud Run で公開したサービスに対して、IAM で定義したユーザのみアクセスを許可する

Last updated at Posted at 2023-02-05

特定メンバーのみ Web アプリにアクセスできる仕組みが欲しいと思い、Identity-Aware Proxy による IAM(Google アカウント)認証を試してみました。
IAM でメンバーを統合管理できる、且つ、IAM 上でロールの付与/削除するだけでメンバーへのアクセス制限ができるので、運用コストも掛からないです。

(最近、仕事で記事を書く機会があり、その際、この記事をストックしたままだったことを思い出したので、これを機に公開)

Identity-Aware Proxy とは

  • 認証機能
  • ユーザとアプリケーション間の通信を仲介する
  • 脱 VPN を実現する手段の一つ
  • IAM と連携してアクセス制御できる
  • 現状、App Engine/Cloud Run/Compute Engine/Kubernetes Engin で公開されたサービスに適用できる

以下は Cloud Run サービスへ適用する際の構成です。※ 公式引用
architecture

Identity-Aware Proxy 適用後のイメージ

公開されたサービスにアクセスすると、Google 認証画面が表示され、
result-01

ログインを試みると、権限が無いメンバーに限りアクセスエラーになります。
result-02

手順

  1. Cloud Run サービスのデプロイ
  2. Load Balancer の作成
  3. Identity-Aware Proxy の設定
  4. IAM の定義

前提として、以下は完了している想定で進めます。

  • 公開するサービス用の静的 IP アドレスの予約
  • 公開するサービス用の DNS の設定(A レコードの追加)

Cloud Run サービスのデプロイ

イメージ Push

gcloud config set project PROJECT_ID
gcloud builds submit --tag=asia.gcr.io/<PROJECT_ID>/<IMAGE_NAME>

デプロイ

gcloud run deploy <SERVICE_NAME> \
   --image=asia.gcr.io/<PROJECT_ID>/<IMAGE_NAME> \
   --port=<PORT> \
   --region=asia-northeast1 \
   --ingress=internal-and-cloud-load-balancing \
   --allow-unauthenticated
  • --port=
    • デフォルトでは 8080 ポートになるので、適宜変更する。
  • --ingress=internal-and-cloud-load-balancing
    • Cloud Run サービスへのネットワークアクセス制限の設定です。Load Balancer を経由して、Cloud Run サービスへのアクセスを許可します。
  • --allow-unauthenticated
    • 未認証アクセスを許可します。これにより、Cloud Run 側でリクエストの認証を行わないようになります。代わりに、Identity-Aware Proxy で認証させます。

Load Balancer の作成

冒頭の構成図の通り、HTTPS Load Balancer を経由させます。

フロントエンドの構成

flow-01
flow-02

以上でフロントエンドの構成は「完了」です。

バックエンドの構成

flow-03
flow-04

以上で Load Balancer の作成は「完了」です。
証明書のステータスが「ACTIVE」になるまで待つ。
flow-05

Identity-Aware Proxy の設定

Identity-Aware Proxy のコンソールに遷移すると、作成した Load Balancer のバックエンドが一覧に表示されるので「IAP」の有効化を行います。
flow-06

IAM の定義

アクセスを許可したいメンバーに対して、「IAP で保護されたウェブアプリ ユーザー」ロールを付与すれば完了です。
flow-07

Ref

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0