Cloud Run の統合機能を使って IAP を有効化する

2023-11-08

プレビュー中の統合機能を使うと、以下の一連の作業を非常に簡単に行うことができます。

  • カスタムドメインをマッピングした外部ロードバランサーの作成
  • IAP の有効化

統合とは

統合に関するドキュメントは こちら にあります。統合 (integrations) とは、Cloud Run と他の Google Cloud サービスとの連携をやりやすくするためのショートカット機能です。2023/11 現在は以下の 3 パターンが提供されています。本記事では 1 つめのパターンを利用します。

  • グローバル外部アプリケーションロードバランサを使用してカスタムドメインを Cloud Run サービスにマッピングする
  • Memorystore を使用して Cloud Run サービスを Redis キャッシュに接続する
  • Cloud Run サービスを Firebase Hosting に接続する

準備

Cloud DNS のゾーン設定

カスタムドメインのマッピングを行うわけでなので、ドメインを所有していることが前提です。また、ドキュメント を参考に DNS ゾーンが作成されているものとします。

Cloud Run サービスの作成

Cloud Run サービスのデプロイも済んでいるものとします。サンプルコンテナのデプロイ などを参考にしてください。

グローバル外部ロードバランサーの設定

では、統合機能を使ってロードバランサーを構築していきましょう。グローバル外部アプリケーションロードバランサを使用してカスタムドメインをマッピングする を参考にすすめていきます。

まずは IAP を有効化させたい Cloud Run のページに行き、統合と書かれたタブを選択します。「インテグレーションを追加」ボタンから設定を進めていきます。

Cloud Run の画面

すると先に挙げた 3 つのパターンが選択できるようになるため、「カスタムドメイン」を選択します。

設定すべきは Routes のところです。Domain にはカスタムドメインを入力します。Service は設定対象の Cloud Run サービスを選択しましょう。入力が済んだら一番したの「UPDATE」ボタンをクリックします。

Cloud Run の統合の Routes 設定

これで設定フローが開始されます。外部 IP アドレスの予約も自動で行われます。というか、自分で予約した IP アドレスを使うことは少なくとも今はできないようですね。

あとやるべきことは、Cloud DNS に A レコードを登録することだけです。具体的にどんなレコードを設定すればいいかは画面に表示されているのでその通りに設定しましょう。

Cloud Run の統合に必要な A レコード

しばらく (場合によっては数十分) すると、統合のステータスが「有効」になります。気長に待ちましょう。DNS の設定が間違っていないかの確認のために dig コマンドを叩いておくことも忘れずに。

IAP の設定

IAP の設定もコンソールから簡単に行なえます。トグルをオンにし、ポップアップが出てきたら誘導に従うだけです。あとは、アクセスを許可するユーザーに IAP-secured Web App User ロールを付与すれば完了です。

IAP の設定画面

トラブルシューティング

Forbidden と表示される

もし以下のようなエラーが表示される場合は、Cloud Run の認証設定が適切でない可能性があります。

Your client does not have permission to get URL / from this server.

Cloud Run のサービス一覧画面で対象サービスにチェックを入れ、情報パネルを表示します。「プリンシパルを追加」から、Cloud Run 起動元ロールを allUsers に割り当てます。これは Cloud Run サービスデプロイ時の「未認証のアクセスを許可」に対応するものです。もし allUsers が嫌ということであれば、特定のユーザーないしはユーザーグループを指定するようにしてください。

Cloud Run サービス一覧

さいごに

Cloud Run の統合機能を使ってカスタムドメインのマッピングや IAP の設定を行いました。まだプレビュー機能なので UI 等が変更される可能性はありますが、数クリックで設定が完了するのはめちゃくちゃ楽なのでぜひ使ってみてください。今後もショートカットが増えていくことを期待したいです。