GCPにGitLabをIAP(Identity-Aware Proxy)を利用して構築してみる

 2023.12.22 XIMIX Katayama

はじめに

日本情報通信 CI部の片山です。
今回、Google Cloud Platform (GCP) 上に Identity-Aware Proxy(IAP) を利用した構成で、
許可された Google アカウントだけがアクセスできるように、
社内用のGitLab を構築してみましたので、その手順を紹介させて頂ければと思います。
作業時間としましては、1時間もかからない簡単なものですので、皆さんも是非チャレンジしてみてくだい。

GitLabインスタンスの作成

まず最初にGitLabのインスタンスを作成していきます。
今回は、マーケットプレイスの「GitLab CE packaged by Bitnami」を利用して、
GitLabのインスタンスを構築します。

マーケットプレイスから「GitLab CE packaged by Bitnami」を検索して該当製品を選択します。


遷移先画面の「使ってみる」ボタンを押下。

次に「利用規約への同意」にチェックを入れ、「同意する」ボタンを押下します。


「Deployment name(インスタンス名)」、「Zone」、「Machine type」、
「Diskタイプ」、「ネットワーク設定」を入力し、最下部の「デプロイ」ボタンを押下します。


GitLabインスタンスが作成されました。

インスタンス グループの作成

次に作成したGitLabインスタンスに対するインスタンスグループを作成します。
このインスタンスグループは、後述で作成するロードバランサーのバックエンドで指定していきます。

インスタンスグループのタイプは、Unmanagedインスタンスグループを選択、
上記で作成したGitLabインスタンスを指定し、左下の「作成」ボタンを押下します。


GitLabインスタンスに対するインスタンスグループが作成されました。

HTTPS ロードバランサの作成

GitLabのインスタンスグループの前段に配置するHTTPSロードバランサーを作成していきます。
ここで作成するHTTPSロードバランサーに対して、後程、IAP(Identity-Aware Proxy) を設定していきます。
※IAPを使用する場合の前提条件として、Compute Engine等のアプリケーションでロードバランサーを構成する場合は、 
 HTTPSロードバランサーである必要があります



ロードバランサーの作成から「アプリケーション ロードバランサー(HTTP/S)」の「構成を開始」ボタンを押下します。


「インターネットからVMまたはサーバレス サービスへ」(インターネット接続)、
「グローバル外部アプリケーション ロードバランサー」を選択し、「続行」を押下。


フロントエンドの構成

プロトコルはHTTPSを指定し、名前・IPアドレス・証明書等の必要項目を入力・選択を行い、
右下部の「完了」を押下。


バックエンドの構成

次にバックエンドを構成していきます。
右メニューの「バックエンドの構成」を選択し、「バックエンドサービスとバックエンド バケット」から
「バックエンド サービスを作成」を押下。



「バックエンドタイプ」は「インスタンスグループを選択」、
「新しいバックエンド」に上記で作成したGitLabインスタンス用のインスタンスグループを指定し、
「名前」等の必須項目を入力を行い、下部にスクロール。


新規で「ヘルスチェック」を作成し、「作成」ボタンを押下。
※今回の構成では、Cloud DNSは無効化しています


最後に左上の「ロードバランサー名」を入力し、左下部の「作成」ボタンを押下。


以上でHTTPSロードバランサーが作成されました。

IAP の有効化

いよいよIAP(Identity-Aware Proxy)の設定を行っていきます。
Identity-Aware Proxyにアクセスし、「APIを有効にする」を選択します。


右下の「同意画面を構成」ボタンを押下します。

OAuth 同意

「OAuth同意画面」にてUser Type「外部」を選択し、「作成」ボタンを押下。


「アプリ登録の編集」画面にて「アプリ名」・「ユーザサポートメール」・「デベロッパーの連絡先情報」を入力し、画面左下部の「保存して次へ」ボタンを押下。
※「スコープ」と「テストユーザー」も任意情報のため今回は設定はなし


以上で、OAuthの同意は完了となります。

Identity-Aware Proxy の設定

「Identity-Aware Proxy」画面にて、上記で作成したバックエンドサービスのチェックボックスにチェックを入れ、「IAP」列のスイッチをONにすることで、プロンプトが表示されます。


「IAPの有効化」画面にて構成要件のチェックボックスにチェックを入れ、「有効にする」を押下。


「Identity-Aware Proxy」画面のステータスがOKとなり、バックエンドのGitLabとIAPの連携がされた状態になります。

プリンシパルの追加(アクセス可能ユーザの追加)

この状態でブラウザからGitLabのURLにIAPにて許可されていないユーザでアクセスを行うと、
以下のエラー画面が表示され、IAPによってアクセス制御がされていることがわかります。


それではIAPの許可設定を行っていきます。
まず「Identity-Aware Proxy」画面の右に表示されている「プリンシパルを追加」ボタンを押下します。

表示された「プリンシパルの追加」画面にて、
アクセス許可を行いたいユーザ、グループ等を「新しいプリンシパル」に入力を行い、
「ロール」に「IAP-secured Web App User」を選択し、「保存」ボタンを押下します。


保存が完了すると「IAP-secured Web App User」の欄に追加したユーザ、グループ等が表示され、
該当のプリンシパルがGitLabへのアクセスが可能な状態となります。


ブラウザからGitLabのURLにアクセスを行うとログイン画面が無事に表示されました。
以上でIdentity-Aware Proxy(IAP) を利用した社内用のGitLab の構築は完了となります!


まとめ

今回は社内用のGitLabを許可された Google アカウントだけがアクセス可能にする為に
Identity-Aware Proxy(IAP)を利用してアクセス制御・保護を実現しましたが、
開発したWebアプリケーションにおいても同様の手順で公開することが可能です。
また今回は触れておりませんが、SSH・TCPリソースに関するアクセスコントロールも
IAPを利用することで同じように制御することができます。
冒頭にも触れましたが、IAPの設定だけであれば、30分もかからない作業時間で、
セキュアなアクセス制御・保護を構成することが可能となりますので、
皆様も是非利用してみてはいかがでしょうか。


GCPにGitLabをIAP(Identity-Aware Proxy)を利用して構築してみる

BACK TO LIST