TL

Cloud Service

Identity-Aware Proxy (IAP)

アプリや VM へのアクセスを VPN ではなく利用者の ID とコンテキストで認可する、ゼロトラスト前提の入口制御サービス。AWS Verified Access に相当。

中級セキュリティ
最終更新: 2026-06-14公式ドキュメント ↗
TL;DR要点だけ先に
  • 1.VPN の代わりに ID で入口を守るゼロトラストのアクセスプロキシ。
  • 2.IAM の roles/iap で誰が入れるかを決め、アプリには本人情報を渡す。
  • 3.Web アプリも SSH/RDP も TLS トンネルで公開せずに保護できる。

解決する課題

社内アプリや管理用の VM を、ネットワーク境界(VPN・踏み台・ファイアウォール)ではなく「誰がアクセスしているか」で守りたい、というゼロトラストの要求に応えます。

  • VPN を張らないと社内アプリに入れない → ブラウザだけで、認証済みユーザーに公開できるようにしたい
  • VM に SSH するために踏み台や公開 IP を用意したくない → 外部 IP なしで SSH/RDP したい
  • アプリ側に認証コードを実装したくない → 入口(プロキシ)で一括認証し、アプリには本人情報だけ渡したい
  • 「正しい人が・正しい状態の端末で」入れているかを確認したい → ID とコンテキスト(端末・場所など)で認可したい

主要概念と用語

  • Identity-Aware Proxy(IAP): アプリや VM の手前に立つ Google 管理のリバースプロキシ。認証されていないリクエストを Google ログインへ誘導し、IAM で認可してから背後へ通す
  • IAP-secured Web App User(roles/iap.httpsResourceAccessor: その IAP リソースへ「入れる人」を表す IAM ロール。このロールを誰に付けるかがアクセス制御の中心
  • IAP TCP Forwarding(roles/iap.tunnelResourceAccessor: SSH/RDP など TCP の転送トンネルを通してよい人を表すロール
  • OAuth クライアント / IAP 同意画面: Web アプリ保護で利用者を認証するための OAuth 構成
  • シグネチャ付きヘッダー(署名付き JWT): IAP が背後のアプリへ渡す、改ざん検証可能な本人情報。アプリは x-goog-iap-jwt-assertion を検証して ID を確認する
  • コンテキストアウェアアクセス(Access Context Manager のアクセスレベル): ID に加えて端末状態・IP・地域などの条件で許可を絞る仕組み。BeyondCorp Enterprise の中核
  • 背後のリソース: 保護対象。HTTP(S) ロードバランサー配下のバックエンド(App Engine・Cloud Run・GKE・Compute Engine)と、トンネル経由の VM

仕様・制限・クォータ

  • 大きく 2 系統ある。**Web アプリ保護(HTTP(S) ロードバランサー前提)**と、TCP 転送(SSH/RDP などをトンネル)
  • Web アプリ保護では原則として外部 HTTP(S) ロードバランサーが必要。バックエンドが App Engine・Cloud Run・GKE・Compute Engine いずれでも前段の LB で IAP を有効化する
  • 認証は Google アカウント / Cloud Identity / Workspace が基本。外部 ID は Identity Platform などと組み合わせて扱う
  • IAP は L7 の入口認可であり、アプリ内部のきめ細かい認可(業務ロール)は別途アプリ側で実装する
  • TCP 転送は専用の IP レンジからトンネルされるため、そのレンジを許可するファイアウォールが必要
IAP を迂回されないように経路を塞ぐ

IAP は LB を通る経路を守ります。VM に外部 IP や別経路の公開ポートが残っていると、IAP を通さず直接到達できてしまいます。バックエンドへは IAP(および LB)経由のトラフィックだけを許可するよう、ファイアウォールと公開設定を必ず絞ってください。

内部の仕組み

リクエストはアプリに届く前に IAP で認証・認可されます。

  1. 未認証のリクエストは Google のログインへリダイレクトされる
  2. 認証後、IAP は IAM ポリシーを評価し、対象リソースに対する roles/iap.* を持つユーザーだけを通す
  3. コンテキストアウェアアクセスが設定されていれば、端末状態・IP・地域などのアクセスレベルも満たすか確認する
  4. 通過したリクエストには、IAP が署名付き JWTなどのヘッダーで本人情報を付与してアプリへ転送する
アプリ側は署名付きヘッダーを検証する

背後のアプリは、リクエストヘッダーをそのまま信用せず、IAP が付与する**署名付き JWT(x-goog-iap-jwt-assertion)**を Google の公開鍵で検証してから本人として扱うのが安全です。これにより、IAP を迂回した偽装ヘッダーを排除できます。

設計パターン / ベストプラクティス

  • VPN/踏み台の置き換え: 社内 Web アプリは IAP + 外部 LB で公開し、VPN なしでブラウザアクセスにする
  • 公開 IP なしの SSH/RDP: VM には外部 IP を付けず、IAP TCP 転送で運用アクセスする
  • 入口認証 + アプリ内認可の分離: IAP で「入れる人」を絞り、業務上の細かい権限はアプリ側で署名付き JWT の ID を使って判定する
  • グループ単位で付与: roles/iap.* は個人ではなく Google グループへ付け、入退社に強くする
  • コンテキストで強化: 機微なアプリは ID に加え管理対象端末・社内 IP・地域などのアクセスレベルを必須化する

運用・監視

  • Cloud Audit Logs で「誰がいつ IAP 経由でアクセスしたか/拒否されたか」を監査する
  • アクセス不可の切り分けは、IAM バインディング(roles/iap.*)→ アクセスレベル(コンテキスト)→ ファイアウォール/経路の順で確認する
  • LB のヘルスチェックやバックエンドの公開設定が、IAP の有効化後も成立しているかを点検する
  • 端末・地域条件を厳しくしすぎると正規ユーザーが締め出されるため、段階的に締める

コスト

IAP の利用そのものに対する課金は基本的になく、背後で使うロードバランサー・VM・バックエンドサービスなどの通常料金がかかります。なお、コンテキストアウェアアクセス(端末条件などの高度な制御)は BeyondCorp Enterprise の機能として提供され、上位エディションが必要になる場合があります。

項目課金備考
IAP の認可機能基本的に追加課金なし保護対象に乗せる入口制御として提供
背後のインフラ通常料金ロードバランサー・VM・LB のデータ処理など
コンテキストアウェアアクセス上位エディションBeyondCorp Enterprise の機能として提供される場合がある
正確な料金は公式で確認

料金体系やエディションの区分は変わり得ます。最新の課金条件は必ず公式ドキュメントと料金ページで確認してください。

セキュリティ

  • 最小権限: roles/iap.httpsResourceAccessor / roles/iap.tunnelResourceAccessor を必要なグループだけに付与する
  • 迂回経路を塞ぐ: 外部 IP・直接ポートを排除し、バックエンドは IAP(と LB)経由のみ許可する
  • ヘッダー検証: アプリは署名付き JWT を検証し、ヘッダーを鵜呑みにしない
  • コンテキスト強化: ID に端末・IP・地域条件を重ね、フィッシングで奪われた認証情報だけでは入れないようにする
  • 監査: Audit Logs で許可/拒否を継続的に確認する
アンチパターン

IAP を有効化したからと安心して、VM に外部 IP を残したままにするのは危険です。IAP を通らない直接経路があると入口認可は無意味になります。公開 IP の撤去とファイアウォールの絞り込みを必ずセットで行ってください。

Well-Architected の観点

  • セキュリティ: ネットワーク境界ではなく ID とコンテキストで認可するゼロトラストを実現し、VPN/踏み台という攻撃面を減らす。入口で一括認証し、最小権限のロール付与で「入れる人」を厳密に管理する
  • アプリ側は署名付き JWT を検証して多層防御とし、Audit Logs で継続的に可観測性を確保する

試験で問われるポイント

頻出
  • IAP は VPN なしでアプリ/VM を ID ベースで公開するゼロトラストの入口制御である
  • Web アプリ保護には外部 HTTP(S) ロードバランサーが前提。バックエンドは App Engine・Cloud Run・GKE・Compute Engine
  • 「入れる人」は IAM の roles/iap.* で制御する(httpsResourceAccessor / tunnelResourceAccessor
  • IAP TCP 転送を使えば、外部 IP なしで VM に SSH/RDP できる
  • 端末・IP・地域などの条件は **コンテキストアウェアアクセス(BeyondCorp Enterprise)**で付与する
  • アプリは IAP の署名付きヘッダー(JWT)を検証して本人を確認する
  • AWS で近いのは Verified Access(VPN レスの ID/コンテキスト型アクセス)

関連サービス・比較

IAP に近い AWS のサービスとして Verified Access があります。どちらも「VPN を張らずに ID とコンテキストでアプリへのアクセスを認可する」発想ですが、構成要素の呼び方が異なります。

観点IAP(GCP)AWS Verified Access
基本思想VPN レスの ID ベースのゼロトラスト入口VPN レスの ID ベースのゼロトラスト入口
保護対象LB 配下の Web アプリと、トンネル経由の VM の SSH/RDP主に社内 Web アプリへの HTTP アクセス
認可の決め方IAM の roles/iap と コンテキストアウェアアクセス信頼プロバイダ(ID/端末)に基づくアクセスポリシー
前段の構成外部 HTTP(S) ロードバランサーエンドポイントと信頼プロバイダ
端末/状態の条件BeyondCorp Enterprise のアクセスレベルデバイス信頼プロバイダと連携
GCP 内の住み分け

IAP は「誰が入口を通れるか」を担い、通った後の「誰が何をできるか」は Cloud IAM やアプリ側の認可が担当します。端末・場所などの条件は **Access Context Manager(BeyondCorp Enterprise)**が提供します。

ハンズオン / CLI例

# 1) Web アプリ保護: 特定ユーザーに「入れる」ロールを付与
#    (IAP は前段の外部 HTTP(S) ロードバランサーで有効化済みとする)
gcloud iap web add-iam-policy-binding \
  --resource-type=backend-services \
  --service=my-backend-service \
  --member="group:app-users@example.com" \
  --role="roles/iap.httpsResourceAccessor"

# 2) TCP 転送: VM へ SSH してよいユーザーにロールを付与
gcloud projects add-iam-policy-binding my-project \
  --member="user:alice@example.com" \
  --role="roles/iap.tunnelResourceAccessor"

# 3) 外部 IP なしの VM へ IAP トンネル経由で SSH する
gcloud compute ssh my-vm \
  --zone=asia-northeast1-a \
  --tunnel-through-iap

Google Cloud Service

Identity-Aware Proxy (IAP)を実務で読む

TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。

解決すること

セキュリティ・ID

比較で見る軸

クラウド: Google Cloud / カテゴリ: セキュリティ・ID / 難易度: intermediate

導入後に効く点

IAM の roles/iap で誰が入れるかを決め、アプリには本人情報を渡す。

先に潰すリスク

サービス単体ではなく、権限、ネットワーク、監視、課金、バックアップを含めて設計する必要がある。

数字・仕様の読み方
クラウド
Google Cloud
カテゴリ
セキュリティ・ID
難易度
intermediate
関連資格
設計柱
security

判断チェックリスト

  • 自社の用途が「セキュリティ・ID / security」に近いか確認する。
  • 強みである「VPN の代わりに ID で入口を守るゼロトラストのアクセスプロキシ。」が本当に評価軸になるか確認する。
  • 注意点の「サービス単体ではなく、権限、ネットワーク、監視、課金、バックアップを含めて設計する必要がある。」を運用で吸収できるか確認する。
  • 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
  • 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
  • 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。

次に確認する観点

セキュリティ・IDsecurity