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 の設定をご覧ください。

IAP は、Google が管理する OAuth クライアントを使用してユーザーを認証します。組織内のユーザーのみが IAP 対応アプリケーションにアクセスできます。組織外のユーザーにアクセスを許可するには、外部アプリケーション用に IAP を有効にするをご覧ください。

IAP の有効化

Console

Google Cloud コンソールを使用して IAP を有効にする場合、Google が管理する OAuth クライアントは使用できません。

プロジェクトの OAuth 同意画面をまだ構成していない場合は、画面を構成するように指示されます。OAuth 同意画面を構成する方法については、OAuth 同意画面の設定をご覧ください。

IAP アクセス権の設定

  1. [Identity-Aware Proxy] ページに移動します。
    [Identity-Aware Proxy] ページに移動
  2. IAP で保護するプロジェクトを選択します。
  3. アクセスを許可するリソースの横にあるチェックボックスをオンにします。

    リソースが表示されない場合は、リソースが作成され、BackendConfig Compute Engine Ingress コントローラが同期されていることを確認してください。

    バックエンド サービスが利用可能であることを確認するには、次の gcloud コマンドを実行します。

    gcloud compute backend-services list
  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 で保護されたウェブアプリ ユーザーの役割を持つアカウントにのみアクセスが許可されます。

gcloud

プロジェクトと IAP を設定する前に、最新バージョンの gcloud CLI を入手する必要があります。gcloud CLI のインストール方法については、gcloud CLI のインストールをご覧ください。

  1. 認証するには、Google Cloud CLI を使用して次のコマンドを実行します。
    gcloud auth login
  2. 表示された URL に従ってログインします。
  3. ログインしたら、表示される確認コードをコピーしてコマンドラインに貼り付けます。
  4. 次のコマンドを実行して、IAP で保護するリソースを含むプロジェクトを指定します。
    gcloud config set project PROJECT_ID
  5. IAP を有効にするには、グローバル スコープまたはリージョン スコープのコマンドを実行します。

    グローバル スコープ
    gcloud compute backend-services update BACKEND_SERVICE_NAME --global --iap=enabled
    リージョン スコープ
    gcloud compute backend-services update BACKEND_SERVICE_NAME --region REGION_NAME --iap=enabled

IAP を有効にすると、gcloud CLI で roles/iap.httpsResourceAccessor の IAM ロールを使用して IAP アクセス ポリシーを変更できます。詳しくは、ロールと権限の管理をご覧ください。

API

  1. 次のコマンドを実行して settings.json ファイルを準備します。

    cat << EOF > settings.json
    {
    "iap":
      {
        "enabled":true
      }
    }
    EOF
    

  2. 次のコマンドを実行して、IAP を有効にします。

    curl -X PATCH \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Accept: application/json" \
    -H "Content-Type: application/json" \
    -d @settings.json \
    "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/REGION/backendServices/BACKEND_SERVICE_NAME"
    

IAP を有効にすると、Google Cloud CLI で roles/iap.httpsResourceAccessor の IAM ロールを使用して IAP アクセス ポリシーを変更できます。詳しくは、ロールと権限の管理をご覧ください。

次のステップ