このページでは、Identity-Aware Proxy(IAP) で Compute Engine インスタンスを保護する方法について説明します。
Google Cloud 上にないリソースを保護するには、オンプレミスのアプリとリソースの保護をご覧ください。
始める前に
Compute Engine で IAP を有効にするには、次のものが必要です。
- 課金が有効になっている Google Cloud コンソール プロジェクト。
- ロードバランサで処理される 1 つ以上の Compute Engine インスタンスのグループ。
- 外部 HTTPS ロードバランサの設定についての詳細の確認。
- 内部 HTTP ロードバランサの設定についての詳細の確認。
- ロードバランサのアドレスに登録されたドメイン名。
- すべてのリクエストに ID があることを確認するアプリケーション コード。
- ユーザーの ID の取得をご覧ください。
Compute Engine インスタンスをまだ設定していない場合は、Compute Engine の IAP の設定をご覧ください。
Google Cloud コンソールを使用した IAP の有効化
OAuth 同意画面の構成
プロジェクトの OAuth 同意画面を構成していない場合は、画面を構成する必要があります。この画面では、メールアドレスとプロダクト名が必要です。
-
OAuth 同意画面に移動します。
同意画面を構成 - [サポートメール] で、一般公開される連絡先として表示するメールアドレスを選択します。メールアドレスは、現在ログインしているユーザー アカウント、または現在ログインしているユーザーが属する Google グループに属している必要があります。
- [アプリケーション名] に、アプリケーションの表示名を入力します。
- 任意の詳細を追加します。
- [保存] をクリックします。
プロダクト名やメールアドレスなど、OAuth 同意画面の情報を後で変更する場合は、上記の手順を繰り返して同意画面を構成します。
OAuth 認証情報の作成
-
[認証情報] ページに移動します。
[認証情報] ページに移動 - [認証情報の作成] プルダウンで、[OAuth クライアント ID] を選択します。
- [アプリケーションの種類] で、[ウェブ アプリケーション] を選択します。
- OAuth クライアント ID の名前を追加します。
- [作成] をクリックします。
OAuth クライアント ID とクライアント シークレットが生成され、OAuth クライアント ウィンドウに表示されます。
- [OAuth クライアントを作成しました] のダイアログで、クライアント ID をクリップボードにコピーします。
- [OK] をクリックします。
- 作成したクライアントの名前をクリックして、編集用に再度開きます。
-
[承認済みのリダイレクト URI] に次の文字列を入力します。
https://iap.googleapis.com/v1/oauth/clientIds/CLIENT_ID:handleRedirect
ここで、
CLIENT_ID
はクリップボードにコピーした OAuth クライアント ID です。
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] ページの [アプリケーション] で、アクセスを制限する instance group にサービスを提供するロードバランサを探します。リソースの IAP を有効にするには、
IAP を有効にするには:- ロードバランサのフロントエンドの構成内では、少なくとも 1 つのプロトコルは HTTPS でなければなりません。ロードバランサの設定をご覧ください。
-
compute.backendServices.update
、clientauthconfig.clients.create
、clientauthconfig.clients.getWithSecret
権限が必要です。上記の権限は、プロジェクト編集者などの役割によって付与されます。詳細については、IAP で保護されたリソースへのアクセスを管理するをご覧ください。
- 表示された [IAP の有効化] ウィンドウで [有効にする] をクリックし、IAP でリソースを保護することを確認します。IAP が有効になった後は、ロードバランサへのすべての接続でログイン認証情報が必要になります。プロジェクトで IAP で保護されたウェブアプリ ユーザーの役割を持つアカウントにのみアクセスが許可されます。
Google Cloud SDK を使用した IAP の有効化
このセクションでは、gcloud コマンドライン ツールを使用して、Compute Engine アプリケーションで IAP を有効にする方法について説明します。現時点では、gcloud コマンドライン ツールで App Engine の IAP を有効にすることはできません。代わりに App Engine のクイックスタートの方法を使用してください。
Google Cloud CLI の取得
プロジェクトと IAP を設定する前に、最新バージョンの gcloud CLI を入手する必要があります。こちらから gcloud CLI を取得します。
プロジェクトの設定
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 の有効化
-
Google Cloud CLI を使用して
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 --region REGION_NAME --iap=enabled,oauth2-client-id=CLIENT_ID,oauth2-client-secret=CLIENT_SECRET
。
-
グローバル スコープ:
IAP を有効にすると、gcloud コマンドライン ツールで IAM のロール roles/iap.httpsResourceAccessor
を使用して IAP アクセス ポリシーを操作できます。詳しくは、ロールと権限の管理をご覧ください。
次のステップ
- アクセスレベルを適用して、より詳細なコンテキスト ルールを設定する。
- Cloud Audit Logs を有効にするでアクセス リクエストを確認する。
- IAP の詳細について学習する。