このページでは、Identity-Aware Proxy(IAP) で Compute Engine インスタンスを保護する方法について説明します。
始める前に
Compute Engine で IAP を有効にするには、次のものが必要です。
- 課金が有効になっている Cloud Console プロジェクト。
- ロードバランサで処理される 1 つ以上の Compute Engine インスタンスのグループ。
- 外部 HTTPS ロードバランサの設定についての詳細の確認。
- 内部 HTTP ロードバランサの設定についての詳細の確認。
- ロードバランサのアドレスに登録されたドメイン名。
- すべてのリクエストに ID があることを確認するアプリケーション コード。
- ユーザーの ID の取得をご覧ください。
Compute Engine インスタンスをまだ設定していない場合は、Compute Engine の IAP の設定をご覧ください。
Cloud Console を使用した IAP の有効化
OAuth 同意画面の構成
プロジェクトの OAuth 同意画面を構成していない場合は、画面を構成する必要があります。この画面では、メールアドレスとプロダクト名が必要です。
-
OAuth 同意画面に移動します。
同意画面を構成 - [サポートメール] で、一般公開される連絡先として表示するメールアドレスを選択します。このメールアドレスは、自分のメールアドレスまたは自身が所有する Google グループにする必要があります。
- [アプリケーション名] に、アプリケーションの表示名を入力します。
- 任意の詳細を追加します。
- [保存] をクリックします。
プロダクト名やメールアドレスなど、OAuth 同意画面の情報を後で変更する場合は、上記の手順を繰り返して同意画面を構成します。
OAuth 認証情報の作成
-
[認証情報] ページに移動します。
[認証情報] ページに移動 - [認証情報の作成] プルダウン リストを開き、[OAuth クライアント ID] を選択します。
- [アプリケーションの種類] で、[ウェブ アプリケーション] を選択します。
- OAuth クライアント ID の名前を追加します。
- [作成] をクリックします。OAuth クライアント ID とクライアント シークレットが生成され、OAuth クライアント ウィンドウに表示されます。
- [OK] をクリックします。
- 作成したクライアントを選択します。
- クライアント ID をクリップボードにコピーします。
- [承認済みのリダイレクト URI] フィールドに次の形式でユニバーサル リダイレクト URL を追加します。
https://iap.googleapis.com/v1/oauth/clientIds/CLIENT_ID:handleRedirect
ここで、
CLIENT_ID
は OAuth クライアント ID です。 - ページの上部にある [JSON をダウンロード] をクリックします。この認証情報は後で使用します。
IAP アクセス権の設定
-
[Identity-Aware Proxy] ページに移動します。
[Identity-Aware Proxy] ページに移動 - IAP で保護するプロジェクトを選択します。
- メンバーを追加するリソースの横にあるチェックボックスをオンにします。
- 右側のパネルで [メンバーを追加] をクリックします。
- 表示される [メンバーの追加] ダイアログで、プロジェクトに対する IAP で保護されたウェブアプリ ユーザーの役割を付与するグループ、または個人のメールアドレスを追加します。
メンバーにすることができるアカウントの種類は以下のとおりです。
- Google アカウント: user@gmail.com
- Google グループ: admins@googlegroups.com
- サービス アカウント: server@example.gserviceaccount.com
- Google Workspace ドメイン: example.com
追加する Google アカウントは、自分がアクセスできるものにしてください。
- [役割] のプルダウン リストから [Cloud IAP] > [IAP で保護されたウェブアプリ ユーザー] を選択します。
- [保存] をクリックします。
IAP の有効化
-
[Identity-Aware Proxy] ページの [HTTPS Resources] で、アクセスを制限する instance group にサービスを提供するロードバランサを探します。リソースの IAP を有効にするには、
IAP を有効にするには:- ロードバランサのフロントエンドの構成内では、少なくとも 1 つのプロトコルは HTTPS でなければなりません。ロードバランサの設定をご覧ください。
-
compute.backendServices.update
、clientauthconfig.clients.create
、clientauthconfig.clients.getWithSecret
権限が必要です。上記の権限は、プロジェクト編集者などの役割によって付与されます。詳細については、IAP で保護されたリソースへのアクセスを管理するをご覧ください。
- 表示された [IAP の有効化] ウィンドウで [有効にする] をクリックし、IAP でリソースを保護することを確認します。IAP が有効になった後は、ロードバランサへのすべての接続でログイン認証情報が必要になります。プロジェクトで IAP で保護されたウェブアプリ ユーザーの役割を持つアカウントにのみアクセスが許可されます。
Cloud SDK を使用した IAP の有効化
このセクションでは、gcloud コマンドライン ツールを使用して、Compute Engine アプリケーションで IAP を有効にする方法について説明します。現時点では、gcloud コマンドライン ツールで App Engine の IAP を有効にすることはできません。代わりに App Engine のクイックスタートの方法を使用してください。
Cloud SDK の入手
プロジェクトと IAP を設定する前に、最新バージョンの Cloud SDK を入手する必要があります。Cloud SDK を入手してください。
プロジェクトの設定
IAP を有効にするプロジェクトを選択し、次のように設定します。
- [インスタンス グループ] ページに移動して、インスタンスがインスタンス グループ内にあることを確認します。
- バックエンド サービスを定義します。
- 外部負荷分散または内部負荷分散を設定します。
- OAuth クライアントを設定します。
- [API] > [認証情報] の順に移動し、IAP を有効にするプロジェクトを選択します。
- OAuth 同意画面を設定します。
-
OAuth 同意画面に移動します。
同意画面を構成 - [サポートメール] で、一般公開される連絡先として表示するメールアドレスを選択します。このメールアドレスは、自分のメールアドレスまたは自身が所有する Google グループにする必要があります。
- [アプリケーション名] に、アプリケーションの表示名を入力します。
- 任意の詳細を追加します。
- [保存] をクリックします。
プロダクト名やメールアドレスなど、OAuth 同意画面の情報を後で変更する場合は、上記の手順を繰り返して同意画面を構成します。
-
OAuth 同意画面に移動します。
- [認証情報] で、[認証情報を作成] > [OAuth クライアント ID] をクリックします。
- [アプリケーションの種類] で、[ウェブ アプリケーション] を選択し、名前を追加します。
- 詳細の入力が完了したら、[作成] をクリックします。
- 表示された [OAuth クライアント] ウィンドウで、クライアント ID とクライアント シークレットをメモします。
-
クライアントをもう一度選択します。[承認済みのリダイレクト URI] フィールドにユニバーサル リダイレクト URL を
https://iap.googleapis.com/v1/oauth/clientIds/CLIENT_ID:handleRedirect
の形式で追加します。CLIENT_ID は、OAuth クライアント ID です。
IAP の有効化
gcloud
コマンドライン ツールを使用して、gcloud auth login
を実行します。- 表示される URL に従ってログインします。
- ログインしたら、表示される確認コードをコピーしてコマンドラインに貼り付けます。
-
IAP を有効にするプロジェクトに
gcloud config set project PROJECT_ID
を実行します。 -
IAP を有効にするには、上記で作成した OAuth クライアント ID とシークレットを使用して、グローバル スコープまたはリージョン スコープのコマンドを実行します。
-
グローバル スコープ:
gcloud compute backend-services update BACKEND_SERVICE_NAME --global --iap=enabled,oauth2-client-id=CLIENT_ID,oauth2-client-secret=CLIENT_SECRET
。 -
リージョン スコープ:
gcloud compute backend-services update BACKEND_SERVICE_NAME --regional REGION_NAME --iap=enabled,oauth2-client-id=CLIENT_ID,oauth2-client-secret=CLIENT_SECRET
。
-
グローバル スコープ:
IAP を有効にすると、gcloud コマンドライン ツールで IAM のロール roles/iap.httpsResourceAccessor
を使用して IAP アクセス ポリシーを操作できます。詳しくは、ロールと権限の管理をご覧ください。