IAP による Compute Engine アプリとリソースの保護

このページでは、Identity-Aware Proxy(IAP) で Compute Engine インスタンスを保護する方法について説明します。

Google Cloud 上にないリソースを保護するには、オンプレミスのアプリとリソースの保護をご覧ください。

始める前に

Compute Engine で IAP を有効にするには、次のものが必要です。

  • 課金が有効になっている Google Cloud コンソール プロジェクト。
  • ロードバランサで処理される 1 つ以上の Compute Engine インスタンスのグループ。
  • ロードバランサのアドレスに登録されたドメイン名。
  • すべてのリクエストに ID があることを確認するアプリケーション コード。

Compute Engine インスタンスをまだ設定していない場合は、Compute Engine の IAP の設定をご覧ください。

Google Cloud コンソールを使用した IAP の有効化

OAuth 同意画面の構成

プロジェクトの OAuth 同意画面を構成していない場合は、画面を構成する必要があります。この画面では、メールアドレスとプロダクト名が必要です。

  1. OAuth 同意画面に移動します。
    同意画面を構成
  2. [サポートメール] で、一般公開される連絡先として表示するメールアドレスを選択します。メールアドレスは、現在ログインしているユーザー アカウント、または現在ログインしているユーザーが属する Google グループに属している必要があります。
  3. [アプリケーション名] に、アプリケーションの表示名を入力します。
  4. 任意の詳細を追加します。
  5. [保存] をクリックします。

プロダクト名やメールアドレスなど、OAuth 同意画面の情報を後で変更する場合は、上記の手順を繰り返して同意画面を構成します。

OAuth 認証情報の作成

  1. [認証情報] ページに移動します。
    [認証情報] ページに移動
  2. [認証情報の作成] プルダウンで、[OAuth クライアント ID] を選択します。
  3. [アプリケーションの種類] で、[ウェブ アプリケーション] を選択します。
  4. OAuth クライアント ID の名前を追加します。
  5. [作成] をクリックします。

    OAuth クライアント ID とクライアント シークレットが生成され、OAuth クライアント ウィンドウに表示されます。

  6. [OAuth クライアントを作成しました] のダイアログで、クライアント ID をクリップボードにコピーします。
  7. [OK] をクリックします。
  8. 作成したクライアントの名前をクリックして、編集用に再度開きます。
  9. [承認済みのリダイレクト URI] に次の文字列を入力します。
    https://iap.googleapis.com/v1/oauth/clientIds/CLIENT_ID:handleRedirect

    ここで、CLIENT_ID はクリップボードにコピーした OAuth クライアント ID です。

IAP アクセス権の設定

  1. [Identity-Aware Proxy] ページに移動します。
    [Identity-Aware Proxy] ページに移動
  2. IAP で保護するプロジェクトを選択します。
  3. アクセス権を付与するリソースの横にあるチェックボックスをオンにします。
  4. 右側のパネルで [プリンシパルを追加] をクリックします。
  5. 表示される [メンバーの追加] ダイアログで、プロジェクトに対する IAP で保護されたウェブアプリ ユーザーの役割を付与するグループ、または個人のメールアドレスを追加します。

    このロールを持つことができるプリンシパルの種類は次のとおりです。

    • Google アカウント: user@gmail.com
    • Google グループ: admins@googlegroups.com
    • サービス アカウント: server@example.gserviceaccount.com
    • Google Workspace ドメイン: example.com

    追加する Google アカウントは、自分がアクセスできるものにしてください。

  6. [役割] のプルダウン リストから [Cloud IAP] > [IAP で保護されたウェブアプリ ユーザー] を選択します。
  7. [保存] をクリックします。

IAP の有効化

  1. [Identity-Aware Proxy] ページの [アプリケーション] で、アクセスを制限する instance group にサービスを提供するロードバランサを探します。リソースの IAP を有効にするには、
    IAP を有効にするには:
    • ロードバランサのフロントエンドの構成内では、少なくとも 1 つのプロトコルは HTTPS でなければなりません。ロードバランサの設定をご覧ください。
    • compute.backendServices.updateclientauthconfig.clients.createclientauthconfig.clients.getWithSecret 権限が必要です。上記の権限は、プロジェクト編集者などの役割によって付与されます。詳細については、IAP で保護されたリソースへのアクセスを管理するをご覧ください。
  2. 表示された [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 を有効にするプロジェクトを選択し、次のように設定します。

  1. [インスタンス グループ] ページに移動して、インスタンスがインスタンス グループ内にあることを確認します。
  2. バックエンド サービスを定義します。
  3. 外部または内部のロード バランシングを設定します。
  4. OAuth クライアントを設定します。
    1. [API] > [認証情報] の順に移動し、IAP を有効にするプロジェクトを選択します。
    2. OAuth 同意画面を設定します。
      1. OAuth 同意画面に移動します。
        同意画面を構成
      2. [サポートメール] で、一般公開される連絡先として表示するメールアドレスを選択します。メールアドレスは、現在ログインしているユーザー アカウント、または現在ログインしているユーザーが属する Google グループに属している必要があります。
      3. [アプリケーション名] に、アプリケーションの表示名を入力します。
      4. 任意の詳細を追加します。
      5. [保存] をクリックします。

      プロダクト名やメールアドレスなど、OAuth 同意画面の情報を後で変更する場合は、上記の手順を繰り返して同意画面を構成します。

    3. [認証情報] で、[認証情報を作成] > [OAuth クライアント ID] をクリックします。
    4. [アプリケーションの種類] で、[ウェブ アプリケーション] を選択し、名前を追加します。
    5. 詳細の入力が完了したら、[作成] をクリックします。
    6. 表示された [OAuth クライアント] ウィンドウで、クライアント IDクライアント シークレットをメモします。
    7. クライアントをもう一度選択します。[承認済みのリダイレクト URI] フィールドにユニバーサル リダイレクト URL を https://iap.googleapis.com/v1/oauth/clientIds/CLIENT_ID:handleRedirect の形式で追加します。CLIENT_ID は、OAuth クライアント ID です。

IAP の有効化

  1. Google Cloud CLI を使用して gcloud auth login を実行します。
  2. 表示される URL に従ってログインします。
  3. ログインしたら、表示される確認コードをコピーしてコマンドラインに貼り付けます。
  4. IAP を有効にするプロジェクトに gcloud config set project PROJECT_ID を実行します。
  5. 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 アクセス ポリシーを操作できます。詳しくは、ロールと権限の管理をご覧ください。

次のステップ