Cloud Service
VPC Service Controls
IAM で許可されたデータでも組織の外へ持ち出させない仮想の境界線。BigQuery や Cloud Storage などマネージドサービスをサービス境界で囲い、認証情報が漏れても境界外からは読めないようにして情報漏えいを防ぐ。
- 1.マネージドサービスの周りに仮想の境界(サービス境界)を引き、境界外からの API アクセスを遮断するデータ漏えい対策。
- 2.IAM が誰に権限を与えるかを決めるのに対し、こちらは境界の外からは権限があっても触れないという面で守る。
- 3.認証情報が盗まれても、許可された境界の外からは保護対象データを読み書きできなくなる。
解決する課題
IAM だけでは、正しい認証情報さえあれば「どこからでも」データへアクセスできてしまいます。VPC Service Controls は、BigQuery や Cloud Storage などのマネージドサービスの周囲に仮想の境界を引き、境界の外からの API アクセスそのものを遮断することで、認証情報の漏えいや内部不正によるデータの持ち出しを防ぎます。
- IAM 権限を持つ認証情報が盗まれた場合でも、境界外から保護データを引き出されたくない
- 悪意ある内部者が、業務データを個人プロジェクトや外部の宛先にコピーするのを止めたい
- 認可されたネットワークや端末からのみ、BigQuery や Cloud Storage にアクセスさせたい
- VPC 内のリソースだけでなく、マネージドサービスの API レベルでデータの境界を引きたい
主要概念と用語
- サービス境界(Service Perimeter): 保護対象のプロジェクトと Google マネージドサービスを囲う仮想の境界。境界の中と外の通信を制御する基本単位
- 保護対象サービス(Restricted Services): 境界で守る対象に指定した Google API(例: BigQuery、Cloud Storage、Cloud KMS など)。指定したサービスへの境界外からの呼び出しが拒否される
- イングレス/エグレスルール: 境界をまたぐアクセスを例外的に許可する規則。境界外から中へ入る通信がイングレス、中から外へ出る通信がエグレス
- アクセスレベル(Access Level): Access Context Manager が提供する、IP 範囲・地域・端末状態などの条件。境界外からのアクセスを条件付きで許可する際に用いる
- 境界ブリッジ(Perimeter Bridge): 別々の境界に属するプロジェクト同士が、双方向に通信できるようにつなぐ仕組み
- ドライランモード(Dry Run): 実際には拒否せず、拒否されるはずだったアクセスをログにだけ記録する検証用モード
- VPC アクセス可能サービス(VPC Accessible Services): 境界内の VPC から到達してよい API を絞り込む設定
仕様・制限・クォータ
- VPC Service Controls は Access Context Manager を基盤とし、組織レベルのアクセスポリシー上にサービス境界を定義する。組織(Organization)リソースが前提となる
- 守れるのは Google マネージドサービスの API であり、対応サービスは順次拡張されている。利用前に対象サービスが保護対象に含まれるかを確認する
- 境界は IAM の置き換えではない。IAM が「誰に権限があるか」を決め、VPC Service Controls は「どこから触れるか」を制御する。両者は併用して多層で守る
- オンプレミスや別 VPC からマネージドサービスへ到達させるには、**Private Google Access(制限付き仮想 IP /
restricted.googleapis.com)**と DNS 設定を組み合わせるのが一般的 - 境界数やルール数などにはクォータの上限があるため、境界を細かく分割しすぎる設計には注意する
既存のプロジェクトをいきなり強制適用すると、正規のバッチやサービス間連携まで一斉に拒否され、業務が止まる恐れがあります。まずドライランモードで拒否されるアクセスを洗い出し、必要なイングレス/エグレスルールを整えてから強制適用してください。
内部の仕組み
境界は、対象サービスへの API リクエストが境界の内側から来たのか外側から来たのかを評価して許可・拒否を決めます。
- 保護対象サービス宛ての API 呼び出しに対し、呼び出し元が境界の内側か外側かを判定する
- 境界外からの呼び出しは原則として拒否される。これにより認証情報が漏れても境界外からは利用できない
- アクセスレベル(許可 IP・地域・端末状態など)を満たす境界外アクセスは、イングレスルールで例外的に通せる
- 境界内から境界外の宛先へデータを書き出す通信は、エグレスルールで許可した範囲だけに限定される
最終的にアクセスが成立するのは、IAM の権限と境界(VPC Service Controls)の許可の両方を満たしたときだけです。どちらか一方でも拒否すれば通りません。この「権限があっても境界外なら拒否」という重ね合わせが、認証情報漏えいへの防御になります。
設計パターン / ベストプラクティス
- 段階導入: 新規境界は必ずドライランから開始し、拒否ログを精査して例外ルールを整備してから強制適用する
- 境界は粗めに: プロジェクトごとに細分化するより、信頼境界が同じプロジェクト群をまとめて 1 つの境界にし、必要な連携だけ境界ブリッジでつなぐ
- アクセスレベルで入口を限定: 社内 IP・管理対象端末・特定地域などのアクセスレベルを定義し、境界外からの正規アクセスはこれを満たす場合のみ許可する
- エグレスを明示: 境界内から外部プロジェクトやサービスへデータを出す経路は、エグレスルールで宛先を限定して持ち出し面を絞る
- オンプレ連携は制限付き VIP: ハイブリッド構成では Private Google Access の制限付き仮想 IP と DNS を整え、境界対象 API のみへ到達させる
運用・監視
- ドライランの違反ログを定期的に確認し、想定外に拒否されている正規アクセスや、逆に通っている不審なアクセスを把握する
- Cloud Audit Logs で境界による拒否イベントを監査し、誰がどのサービスへ境界外からアクセスを試みたかを追跡する
- アクセス不可の切り分けは、**IAM 権限 → サービス境界(イングレス/エグレス)→ アクセスレベル → ネットワーク経路(Private Google Access・DNS)**の順で確認すると整理しやすい
- 新しいサービスを使い始めるときは、それが境界の保護対象に追加されているか、追加が必要かを点検する
コスト
VPC Service Controls および Access Context Manager の機能自体には、原則として追加の利用料金はかかりません。コストの中心は、境界を引いた先で利用する BigQuery・Cloud Storage・ネットワークなどの通常料金です。
| 項目 | 課金 | 備考 |
|---|---|---|
| サービス境界の機能 | 基本的に追加課金なし | 組織レベルのアクセス制御として提供 |
| 保護対象サービス | 通常料金 | BigQuery や Cloud Storage など各サービスの料金 |
| ネットワーク経路 | 通常料金 | Private Google Access やデータ転送に応じた費用 |
料金体系やエディションの区分は変わり得ます。最新の課金条件は必ず公式ドキュメントと料金ページで確認してください。
セキュリティ
- 多層防御: IAM で最小権限を付け、その上に境界を重ねて「権限があっても境界外なら拒否」を実現する
- 認証情報漏えい対策: 鍵やトークンが流出しても、境界外からは保護対象データへ到達できないため、被害を封じ込めやすい
- 持ち出し制御: エグレスルールで境界外への書き出し先を限定し、内部不正によるデータ持ち出しの経路を狭める
- 入口の条件化: アクセスレベルで IP・地域・端末状態を条件にし、認可された環境からのみ境界へ入れるようにする
- 継続監査: ドライランログと Audit Logs で、許可・拒否を継続的に観測する
検証なしに本番プロジェクトへ境界をいきなり強制適用するのは危険です。サービス間連携や CI/CD、分析バッチが一斉に拒否され、障害につながります。必ずドライランで違反を洗い出し、必要なイングレス/エグレスルールを整えてから強制適用してください。
関連サービス・比較
VPC Service Controls はしばしば IAM と対比されます。IAM が「誰にどの操作を許すか」という認可を担うのに対し、VPC Service Controls は「どこからアクセスできるか」という境界を担い、両者を重ねて多層で守ります。
| 観点 | VPC Service Controls | Cloud IAM |
|---|---|---|
| 守る面 | アクセス元の境界(どこから触れるか) | 権限(誰が何をできるか) |
| 主目的 | データ漏えい・持ち出しの防止 | 最小権限による認可 |
| 判定単位 | サービス境界とアクセスレベル | ロールとポリシーのバインディング |
| 対象 | Google マネージドサービスの API | ほぼ全ての GCP リソース |
| 関係 | IAM の上に重ねて使う多層防御 | アクセス制御の土台 |
「誰が何をできるか」は Cloud IAM、「どこから入れるか」の条件は Access Context Manager のアクセスレベル、そして「境界の外へ出さない」を担うのが VPC Service Controls です。組み合わせてゼロトラストのデータ保護を構成します。
ハンズオン / CLI例
# 1) アクセスポリシー(組織レベル)の ID を確認する
gcloud access-context-manager policies list \
--organization=123456789012
# 2) BigQuery と Cloud Storage を保護対象にしたサービス境界を作成する
# まずはドライランで影響を確認するのが安全
gcloud access-context-manager perimeters dry-run create my-perimeter \
--policy=POLICY_ID \
--title="my-perimeter" \
--resources=projects/PROJECT_NUMBER \
--restricted-services=bigquery.googleapis.com,storage.googleapis.com
# 3) ドライランの違反ログを精査し問題なければ強制適用へ昇格する
gcloud access-context-manager perimeters dry-run enforce my-perimeter \
--policy=POLICY_ID
Google Cloud Service
VPC Service Controlsを実務で読む
TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。
解決すること
セキュリティ・ID
比較で見る軸
クラウド: Google Cloud / カテゴリ: セキュリティ・ID / 難易度: intermediate
導入後に効く点
IAM が誰に権限を与えるかを決めるのに対し、こちらは境界の外からは権限があっても触れないという面で守る。
先に潰すリスク
サービス単体ではなく、権限、ネットワーク、監視、課金、バックアップを含めて設計する必要がある。
- クラウド
- Google Cloud
- カテゴリ
- セキュリティ・ID
- 難易度
- intermediate
- 関連資格
- —
- 設計柱
- security
判断チェックリスト
- 自社の用途が「セキュリティ・ID / security」に近いか確認する。
- 強みである「マネージドサービスの周りに仮想の境界(サービス境界)を引き、境界外からの API アクセスを遮断するデータ漏えい対策。」が本当に評価軸になるか確認する。
- 注意点の「サービス単体ではなく、権限、ネットワーク、監視、課金、バックアップを含めて設計する必要がある。」を運用で吸収できるか確認する。
- 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
- 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
- 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。