VPC Service Controls を構成する
このガイドでは、Google Security Operations の VPC Service Controls を構成する方法について説明します。
VPC Service Controls を使用すると、データ漏洩を防ぐためのサービス境界を設定できます。Google SecOps がサービス境界外のリソースとサービスにアクセスできるように、VPC Service Controls を使用して Google Security Operations を構成します。
VPC Service Controls の詳細については、VPC Service Controls の概要をご覧ください。VPC Service Controls でサポートされているプロダクトの表の Google Security Operations エントリもご覧ください。
始める前に
- 組織レベルで VPC Service Controls を構成するために必要なロールがあることを確認します。
VPC Service Controls で Google SecOps を使用するには、VPC Service Controls 準拠の機能のみを使用できます。VPC Service Controls に準拠した機能は次のとおりです。
- VPC Service Controls を使用する Google SecOps は、 Google Cloud Identity 認証、サードパーティ ID プロバイダ、Workforce Identity 連携のみをサポートしています。
- Google SecOps で VPC Service Controls を使用するには、Google SecOps の機能 RBAC を有効にする必要があります。
VPC Service Controls を使用する Google SecOps は、次の一般公開 API のみをサポートしています。
chronicle.googleapis.comchronicleservicemanager.googleapis.com
VPC Service Controls にオンボーディングするには、対応するすべてのエンドポイントを
chronicle.googleapis.comAPI に移行する必要があります。VPC Service Controls を使用する Google SecOps は、セルフマネージド BigQuery プロジェクトまたは高度な BigQuery Export を使用して、Google SecOps 統合データモデル(UDM)データのエクスポートのみをサポートしています。
VPC Service Controls は、Google SecOps のダッシュボードのみをサポートしています。
Cloud Storage フィードは、v2 コネクタを使用して
GOOGLE_CLOUD_STORAGE_V2ソースタイプでのみ作成できます。Google SecOps が VPC Service Controls の境界内で制限されている場合に新しい Pub/Sub サブスクリプションを作成すると、Google SecOps では、ログを Cloud Storage に書き込み、CLOUD_PUB_SUB フィードではなく GOOGLE_CLOUD_STORAGE_V2 または GOOGLE_CLOUD_STORAGE_EVENT_DRIVEN を使用する必要があります。
顧客管理の暗号鍵(CMEK)を使用する Google SecOps インスタンスの場合、Cloud Key Management Service プロジェクトを Google SecOps にリンクされた Google Cloud プロジェクトと同じ境界内に保持するか、鍵を Google SecOps にリンクされた Google Cloud プロジェクト内に保持することを強くおすすめします。
プラットフォームの SOAR 側で、Google SecOps インスタンスが顧客管理の暗号鍵(CMEK)を使用している場合は、SOAR インスタンスが Google.com に移行されていることを確認します。
Looker やマネージド BigQuery Export など、BigQuery への以前の SOAR データ エクスポートを使用している場合は、代わりに Bring Your Own BigQuery(BYOBQ)機能を使用することをおすすめします。Looker ダッシュボードはレガシー機能であるため、代わりにダッシュボードを使用することをおすすめします。BigQuery への以前の SOAR データ エクスポートを引き続き使用する場合は、VPC Service Controls サービス境界に専用の下り(外向き)ルールを構成する必要があります。
SOAR_TENANT_PROJECT_IDやBQ_TLA_PROJECT_NUMBERなどの必要なルールとプロジェクト情報を取得するには、カスタマー エンジニア(CE)にお問い合わせいただくか、サポートケースを開いてください。
制限事項
Google SecOps Chronicle API エンドポイント
ImportPushLogsは、VPC Service Controls をサポートしていません。ただし、ImportPushLogsエンドポイントは Google SecOps インスタンスへのデータの push にのみ使用され、データへのアクセスには使用されないため、この制限によってデータ漏洩のリスクが生じることはありません。VPC Service Controls を使用する Google SecOps は、Looker ダッシュボードをサポートしていません。
Google Cloud Pub/Sub は、Chronicle API エンドポイントを使用してログを取り込む新しい Pub/Sub サブスクリプションの作成をサポートしていません(VPC Service Controls でサポートされているプロダクトの表の Pub/Sub エントリ)。ただし、既存の Pub/Sub サブスクリプション(VPC Service Controls 境界内に Google Cloud プロジェクトを移動する前に作成されたもの)は、引き続き想定どおりにログを取り込みます。
VPC Service Controls を使用する Google SecOps は、以前のクラウド バケットとサードパーティ API フィード コネクタをサポートしていません。
上り(内向き)ルールと下り(外向き)ルールを構成する
サービス境界の構成に基づいて、上り(内向き)ルールと下り(外向き)ルールを構成します。詳細については、サービス境界の概要をご覧ください。
VPC Service Controls で問題が発生した場合は、VPC Service Controls 違反分析ツールを使用して問題をデバッグして分析します。詳細については、違反分析ツールでアクセス拒否を診断するをご覧ください。
SOAR の上り(内向き)ルールを構成する
このセクションでは、プラットフォームの SOAR 側で VPC Service Controls を構成する方法について説明します。
Google SecOps の設定時に指定した Google Cloud ユーザー アカウントに、次の上り(内向き)ルールを構成します。
- ingressFrom:
identityType: ANY_SERVICE_ACCOUNT
sources:
- accessLevel: "*"
ingressTo:
operations:
- serviceName: secretmanager.googleapis.com
methodSelectors:
- method: "*"
resources:
- projects/PROJECT_NUMBER
PROJECT_NUMBER は、Google SecOps にリンクされた Google Cloud プロジェクト番号に置き換えます。
SIEM のルールを構成する
このセクションでは、プラットフォームの SIEM 側で VPC Service Controls を構成する方法について説明します。
Cloud Storage ベースの V2 フィードの上り(内向き)ルールと下り(外向き)ルール
サービス境界の構成に基づいて、上り(内向き)ルールと下り(外向き)ルールを構成します。詳細については、サービス境界の概要をご覧ください。ソース Cloud Storage バケットをホストする Google Cloud プロジェクトまたは Google SecOps にリンクされた Google Cloud プロジェクト(BYOP)で VPC Service Controls が有効になっている場合は、境界の設定に基づいて、必要な上り(内向き)ルールと下り(外向き)ルールを構成します。
| ケース | ソースバケット プロジェクト | Google SecOps にリンクされたプロジェクト(BYOP) | ソース境界のルール | BYOP 境界のルール |
|---|---|---|---|---|
| ケース 1 | 境界内 | 同じ境界内 | なし | なし |
| ケース 2 | あと CUSTOMER_SOURCE_PERIMETER | CUSTOMER_BYOP_PERIMETER(別の境界) | ルール A1(上り(内向き))とルール A2(下り(外向き)) | ルール B1(下り(外向き)) |
| ケース 3 | あと CUSTOMER_SOURCE_PERIMETER | 境界内にない | ルール A1(上り(内向き))とルール A2(下り(外向き)) | なし |
| ケース 4 | 境界内にない | あと CUSTOMER_BYOP_PERIMETER | なし | ルール B1(下り(外向き)) |
次の上り(内向き)ルールと下り(外向き)ルールのプレースホルダを置き換えます。
CUSTOMER_SOURCE_PROJECT_NUMBER: ソース Cloud Storage バケットをホストする Google Cloud プロジェクトの数値プロジェクト ID。CUSTOMER_SOURCE_PERIMETER: 転送元バケット プロジェクトを保護する VPC-SC 境界。CUSTOMER_BYOP_PROJECT_NUMBER: Google SecOps にリンクされた Google Cloud プロジェクト(BYOP)の数値プロジェクト ID。CUSTOMER_BYOP_PERIMETER: BYOP プロジェクトを保護する VPC-SC 境界。CHRONICLE_STS_SERVICE_AGENT: Cloud Storage V2 フィードの構成時に Google SecOps に表示される Storage Transfer Service(STS)サービス アカウント(例: project-123456789@storage-transfer-service.)。
A. ソースバケット プロジェクトの境界のルール(CUSTOMER_SOURCE_PERIMETER)
上記の表で定義されているケース 2 とケース 3 にこれらのルールを適用します。
ルール A1: 上り(内向き)ルール
{
"ingressFrom": {
"identities": [
"serviceAccount:<CHRONICLE_STS_SERVICE_AGENT>"
],
"sources": [
{
"accessLevel": "*"
}
]
},
"ingressTo": {
"operations": [
{
"serviceName": "storage.googleapis.com",
"methodSelectors": [
{ "method": "*" }
]
}
],
"resources": [
"projects/<CUSTOMER_SOURCE_PROJECT_NUMBER>"
]
}
}
ルール A2: 下り(外向き)ルール
{
"egressFrom": {
"identities": [
"serviceAccount:<CHRONICLE_STS_SERVICE_AGENT>"
]
},
"egressTo": {
"operations": [
{
"serviceName": "storage.googleapis.com",
"methodSelectors": [
{ "method": "google.storage.objects.create" },
{ "method": "google.storage.objects.delete" }
]
}
],
"resources": [
"projects/<CUSTOMER_BYOP_PROJECT_NUMBER>"
]
}
}
B. BYOP プロジェクト境界のルール(CUSTOMER_BYOP_PERIMETER)
このルールは、前の表で定義されているケース 2 とケース 4 に適用します。
ルール B1: 下り(外向き)ルール
{
"egressFrom": {
"identities": [
"serviceAccount:<CHRONICLE_STS_SERVICE_AGENT>"
]
},
"egressTo": {
"operations": [
{
"serviceName": "storage.googleapis.com",
"methodSelectors": [
{ "method": "*" }
]
}
],
"resources": [
"projects/<CUSTOMER_SOURCE_PROJECT_NUMBER>"
]
}
}
VPC Service Controls で問題が発生した場合は、VPC Service Controls 違反分析ツールを使用して問題をデバッグして分析します。詳細については、違反分析ツールでアクセス拒否を診断するをご覧ください。
高度な BigQuery Export の上り(内向き)ルール
高度な BigQuery Export 機能を使用している場合は、Google SecOps の設定時に指定した Google Cloud ユーザー アカウントに次のルールを構成します。
- ingressFrom:
identities:
- serviceAccount:malachite-bq-export-entity-graph-batch-adv-bq@
- serviceAccount:malachite-customer-monitoring-exporter@
sources:
- accessLevel: "*"
ingressTo:
operations:
- serviceName: bigquery.googleapis.com
methodSelectors:
- method: "*"
resources:
- projects/PROJECT_NUMBER
PROJECT_NUMBER は、Google SecOps にリンクされた Google Cloud プロジェクト番号に置き換えます。
データテーブルの上り(内向き)ルール
データテーブルを使用している場合は、Google SecOps の設定時に指定した Google Cloud ユーザー アカウントに次のルールを構成します。
- ingressFrom:
identities:
- user:malachite-data-plane-api@prod.google.com
sources:
- accessLevel: "*"
ingressTo:
operations:
- serviceName: storage.googleapis.com
methodSelectors:
- method: "*"
resources:
- projects/PROJECT_NUMBER
PROJECT_NUMBER は、Google SecOps にリンクされた Google Cloud プロジェクト番号に置き換えます。
Security Command Center で Google SecOps のルールを構成する
このセクションでは、Security Command Center で Google SecOps の VPC Service Controls を構成する方法について説明します。
次のルールのサービス アカウントは、Google SecOps のプロビジョニング中にのみ作成されます。そのため、プロビジョニング後、Security Command Center の使用を開始する前に、Security Command Center のルールを構成する必要があります。
Google SecOps の設定時に指定した Google Cloud ユーザー アカウントに対して、次のタスクを完了します。
次の上り(内向き)ルールを構成します。
- ingressFrom: identities: - serviceAccount: service-org-GOOGLE_ORGANIZATION_NUMBER@gcp-sa-chronicle-soar. - serviceAccount: service-org-GOOGLE_ORGANIZATION_NUMBER@security-center-api. - serviceAccount: service-org-GOOGLE_ORGANIZATION_NUMBER@gcp-sa-csc-hpsa. - serviceAccount: service-org-GOOGLE_ORGANIZATION_NUMBER@gcp-sa-asm-hpsa. sources: - accessLevel: "*" ingressTo: operations: - serviceName: chronicle.googleapis.com methodSelectors: - method: "*" - serviceName: securitycenter.googleapis.com methodSelectors: - method: "*" - serviceName: compute.googleapis.com methodSelectors: - method: "*" - serviceName: cloudasset.googleapis.com methodSelectors: - method: "*" - serviceName: monitoring.googleapis.com methodSelectors: - method: "*" - serviceName: iam.googleapis.com methodSelectors: - method: "*" - serviceName: orgpolicy.googleapis.com methodSelectors: - method: "*" - serviceName: serviceusage.googleapis.com methodSelectors: - method: "*" - serviceName: dns.googleapis.com methodSelectors: - method: "*" resources: - projects/PROJECT_NUMBER次のように置き換えます。
GOOGLE_ORGANIZATION_NUMBER: Google Cloud 組織番号PROJECT_NUMBER: Google SecOps にリンクされた Google Cloud プロジェクト番号
次の下り(外向き)ルールを構成します。
- egressTo: operations: - serviceName: pubsub.googleapis.com methodSelectors: - method: "*" - serviceName: securitycenter.googleapis.com methodSelectors: - method: "*" - serviceName: cloudasset.googleapis.com methodSelectors: - method: "*" - serviceName: iam.googleapis.com methodSelectors: - method: "*" - serviceName: compute.googleapis.com methodSelectors: - method: "*" resources: - "*" egressFrom: identities: - serviceAccount: service-org-GOOGLE_ORGANIZATION_NUMBER@gcp-sa-chronicle-soar. - serviceAccount: service-org-GOOGLE_ORGANIZATION_NUMBER@security-center-api. sources: - resource: projects/PROJECT_NUMBER次のように置き換えます。
GOOGLE_ORGANIZATION_NUMBER: Google Cloud 組織番号PROJECT_NUMBER: Google SecOps にリンクされた Google Cloud プロジェクト番号
顧客管理の暗号鍵(CMEK)の上り(内向き)ルールを構成する
このセクションでは、顧客管理の暗号鍵(CMEK)を使用して Google SecOps の VPC Service Controls を構成する方法について説明します。CMEK は、Cloud Key Management Service で所有、管理、保存する暗号鍵です。
次の上り(内向き)ルールを構成します。
- ingressFrom:
identities:
- serviceAccount: service-SECRET_MANAGER_PROJECT_NUMBER@gcp-sa-secretmanager.
- serviceAccount: service-GOOGLE_MANAGED_BIGQUERY_PROJECT_NUMBER@gs-project-accounts.
- serviceAccount: bq-GOOGLE_MANAGED_BIGQUERY_PROJECT_NUMBER@bigquery-encryption.
sources:
- accessLevel: "*"
ingressTo:
operations:
- serviceName: secretmanager.googleapis.com
methodSelectors:
- method: "*"
- serviceName: cloudkms.googleapis.com
methodSelectors:
- method: "*"
resources:
- projects/CMEK_PROJECT_NUMBER
次のように置き換えます。
SECRET_MANAGER_PROJECT_NUMBER: Google が一部の取り込み機能のシークレットを保存するために使用するプロジェクト。Google SecOps の担当者から取得できます。GOOGLE_MANAGED_BIGQUERY_PROJECT_NUMBER: Google が一部のエクスポート機能の BigQuery リソースを保存するために使用するプロジェクト。Google SecOps の担当者から取得できます。CMEK_PROJECT_NUMBER: CMEK を保存するプロジェクトの番号