このページでは、Security Command Center API の通知を有効にする方法について説明します。
通知は、数分以内に、検出結果と検出結果の更新を Pub/Sub トピックに送信します。Security Command Center API の通知には、Security Command Center によって Google Cloud コンソールに表示されるすべての検出結果の情報が含まれます。
Pub/Sub の Security Command Center の通知は、直接 Cloud Run 関数 のアクションに接続できます。レスポンス、拡充、改善に役立つ関数の例については、Cloud Run 関数コードの Security Command Center のオープンソース リポジトリをご覧ください。このリポジトリには、セキュリティに関する検出結果に対する自動処置に役立つソリューションが含まれています。
また、検出結果を BigQuery にエクスポートするか、Google Cloud コンソールで Pub/Sub の継続的エクスポートを設定することもできます。
始める前に
-
Security Command Center API の通知の設定と構成に必要な権限を取得するには、次の IAM ロールを付与するよう管理者に依頼してください。
-
Security Command Center が有効になっている組織またはプロジェクトに対するセキュリティ センター管理者 (
roles/securitycenter.admin
) -
Pub/Sub トピックを作成するプロジェクトに対するプロジェクト IAM 管理者 (
roles/resourcemanager.projectIamAdmin
)
ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。
-
Security Command Center が有効になっている組織またはプロジェクトに対するセキュリティ センター管理者 (
-
Enable the Security Command Center API:
gcloud services enable securitycenter.googleapis.com
データ所在地と通知
Security Command Center でデータ所在地が有効になっている場合、Pub/Sub(notificationConfig
リソース)への継続的なエクスポートを定義する構成はデータの対象であり、Security Command Center のロケーションに保存されます。
Security Command Center のロケーションの検出結果を Pub/Sub にエクスポートするには、検出結果と同じ Security Command Center のロケーションに継続的なエクスポートを構成する必要があります。
継続的なエクスポートで使用されるフィルタには、所在地管理の対象となるデータが含まれる可能性があるため、作成する前に正しいロケーションを指定していることを確認してください。Security Command Center では、エクスポートを作成するロケーションは制限されません。
継続的エクスポートは作成場所にのみ保存され、他のロケーションで表示や編集はできません。
継続的なエクスポートを作成した後に、そのロケーションを変更することはできません。ロケーションを変更するには、継続的なエクスポートを削除して、新しいロケーションに再作成する必要があります。
API 呼び出しを使用して継続的なエクスポートを取得するには、notificationConfig
の完全なリソース名でロケーションを指定する必要があります。次に例を示します。
GET https://securitycenter.googleapis.com/v2/organizations/123/locations/eu/notificationConfigs/my-pubsub-export-01
同様に、gcloud CLI を使用して継続的なエクスポートを取得するには、--location
フラグを使用してロケーションを指定する必要があります。次に例を示します。
gcloud scc notifications describe myContinuousExport --organization=123 \ --location=us
Pub/Sub トピックを設定する
このタスクでは、通知を送信する Pub/Sub トピックを作成してサブスクライブします。
ステップ 1: Pub/Sub を設定する
Pub/Sub トピックを設定して登録するには、次のようにします。
Google Cloud Console に移動します。
Security Command Center API を有効にしたプロジェクトを選択します。
「Cloud Shell をアクティブにする」 をクリックします。
省略可: 新しい Pub/Sub トピックを作成するには、次のコマンドを実行します。
gcloud pubsub topics create TOPIC_ID
TOPIC_ID
は、トピック名に置き換えます。トピックへのサブスクリプションを作成します。
gcloud pubsub subscriptions create SUBSCRIPTION_ID --topic=TOPIC_ID
次のように置き換えます。
SUBSCRIPTION_ID
: サブスクリプション IDTOPIC_ID
: トピック ID
Pub/Sub の設定に関する詳細は、トピックとサブスクリプションの管理をご覧ください。
ステップ 2: Pub/Sub トピックに対するロールを付与する
NotificationConfig
を作成するには、サブスクリプションを作成した Pub/Sub トピックに対する Pub/Sub 管理者ロール(roles/pubsub.admin
)が必要です。
このロールを付与する手順は次のとおりです。
Google Cloud Console に移動します。
Security Command Center API を有効にしたプロジェクトを選択します。
「Cloud Shell をアクティブにする」 をクリックします。
Pub/Sub トピックで Google アカウントに必要なロールを付与します。
gcloud pubsub topics add-iam-policy-binding \ projects/PUBSUB_PROJECT/topics/TOPIC_ID \ --member="user:GOOGLE_ACCOUNT" \ --role="roles/pubsub.admin"
次のように置き換えます。
PUBSUB_PROJECT
: Pub/Sub トピックを含む Google Cloud プロジェクトTOPIC_ID
: トピック IDGOOGLE_ACCOUNT
: Google アカウントのメールアドレス
NotificationConfig の作成
NotificationConfig
を作成する前に、各組織で保持できる NotificationConfig
ファイルの数に上限があることを確認してください。詳細については、割り当てと上限をご覧ください。
NotificationConfig
には、通知を有用なイベントに限定する filter
フィールドが含まれています。このフィールドは、Security Command Center API の findings.list
メソッドで使用できるすべてのフィルタを受け入れます。
NotificationConfig
を作成する場合は、Google Cloud リソース階層(組織、フォルダ、プロジェクトのいずれか)から NotificationConfig
の親を指定します。後で NotificationConfig
を取得、更新、削除する必要がある場合は、参照時に親の組織、フォルダ、またはプロジェクトの数値 ID を指定する必要があります。
Google Cloud コンソールで、一部の NotificationConfig
リソースに [Legacy] ラベルが付いている場合があります。これは、v1 Security Command Center API で作成されたことを示します。これらの NotificationConfig
リソースは、Google Cloud コンソール、gcloud CLI、v1 Security Command Center API、または Security Command Center の v1 クライアント ライブラリで管理できます。
これらの NotificationConfig
リソースを gcloud CLI で管理するには、gcloud CLI コマンドを実行するときにロケーションを指定しないでください。
任意の言語やプラットフォームを使用して NotificationConfig
を作成するには:
gcloud
gcloud scc notifications create NOTIFICATION_NAME \ --PARENT=PARENT_ID \ --location=LOCATION --description="NOTIFICATION_DESCRIPTION" \ --pubsub-topic=PUBSUB_TOPIC \ --filter="FILTER"
次のように置き換えます。
NOTIFICATION_NAME
: 通知の名前。 1 ~ 128 文字で、英数字、アンダースコア、ハイフンのみを使用できます。PARENT
: 通知が適用されるリソース階層内の範囲(organization
、folder
、またはproject
)。PARENT_ID
: 親組織、フォルダ、またはプロジェクトの ID で、organizations/123
、folders/456
、またはprojects/789
の形式で指定されます。LOCATION
: データ所在地が有効になっている場合は、Security Command Center のロケーション。データ所在地が有効になっていない場合は、値global
を使用します。NOTIFICATION_DESCRIPTION
: 通知の説明(最大 1,024 文字)。PUBSUB_TOPIC
: 通知を受信する Pub/Sub トピック。形式はprojects/PROJECT_ID/topics/TOPIC
です。FILTER
: Pub/Sub に送信する検出結果を選択するために定義する式。例:state=\"ACTIVE\"
Go
Java
Node.js
Python
これで、指定した Pub/Sub トピックに通知がパブリッシュされるようになりました。
通知をパブリッシュするため、サービス アカウントが service-org-ORGANIZATION_ID@gcp-sa-scc-notification.iam.gserviceaccount.com
の形式で作成されます。このサービス アカウントは、最初の NotificationConfig
を作成するときに作成され、通知構成の作成時に PUBSUB_TOPIC の IAM ポリシーに対する securitycenter.notificationServiceAgent
ロールが自動的に付与されます。通知が機能するには、このサービス アカウントのロールが必要です。
VPC Service Controls で境界へのアクセス権を付与する
VPC Service Controls を使用していて、Pub/Sub トピックがサービス境界内のプロジェクトに含まれている場合、通知を作成するにはプロジェクトへのアクセス権を付与する必要があります。
プロジェクトへのアクセス権を付与するには、通知の作成に使用するプリンシパルとプロジェクトに上り(内向き)ルールと下り(外向き)ルールを作成します。このルールは、保護されたリソースへのアクセスを許可し、ユーザーが Pub/Sub トピックに対する setIamPolicy
権限を持っていることを Pub/Sub で確認できるようにします。
NotificationConfig を作成する前に
NotificationConfig の作成の手順を完了する前に、次の手順を行います。
Google Cloud Console の [VPC Service Controls] ページに移動します。
必要に応じて組織を選択します。
変更するサービス境界の名前をクリックします。
変更する必要があるサービス境界を確認するには、ログで
RESOURCES_NOT_IN_SAME_SERVICE_PERIMETER
違反を示すエントリを確認します。これらのエントリで、servicePerimeterName
フィールドaccessPolicies/ACCESS_POLICY_ID/servicePerimeters/SERVICE_PERIMETER_NAME
を確認します。[境界を編集] をクリックします。
ナビゲーション メニューで、[上り(内向き)ポリシー] をクリックします。
ユーザーやサービス アカウントの上り(内向き)ルールを構成するには、次のパラメータを使用します。
- API クライアントの FROM 属性:
- [ソース] プルダウン メニューで、[すべてのソース] を選択します。
- [ID] プルダウン メニューで [選択した ID] を選択します。
- [選択] をクリックして、Security Command Center API の呼び出しに使用するプリンシパルを入力します。
- Google Cloud サービス / リソースの TO 属性:
- [プロジェクト] プルダウン メニューで、[選択したプロジェクト] を選択します。
- [選択] をクリックしてから、Pub/Sub トピックを含むプロジェクトを入力します。
- [サービス] プルダウン メニューで [選択したサービス]、[Cloud Pub/Sub API] の順に選択します。
- [メソッド] プルダウン メニューで、[すべてのアクション] を選択します。
- API クライアントの FROM 属性:
[保存] をクリックします。
ナビゲーション メニューで、[下り(外向き)ポリシー] をクリックします。
[Add Rule] をクリックします。
ユーザー アカウントやサービス アカウントの下り(外向き)ルールを構成するには、次のパラメータを入力します。
- API クライアントの FROM 属性:
- [ID] プルダウン メニューで [選択した ID] を選択します。
- [選択] をクリックして、Security Command Center API の呼び出しに使用するプリンシパルを入力します。
- Google Cloud サービス / リソースの TO 属性:
- [プロジェクト] プルダウン メニューで、[すべてのプロジェクト] を選択します。
- [サービス] プルダウン メニューで [選択したサービス]、[Cloud Pub/Sub API] の順に選択します。
- [メソッド] プルダウン メニューで、[すべてのアクション] を選択します。
- API クライアントの FROM 属性:
[保存] をクリックします。
NotificationConfig の上り(内向き)ルールを作成する
NotificationConfig
の上り(内向き)ルールを作成するには、次のようにします。
- NotificationConfig の作成の手順を完了します。
- 前のセクションのサービス境界を再度開きます。
- [上り(内向き)ポリシー] をクリックします。
- [Add Rule] をクリックします。
- 作成した
NotificationConfig
サービス アカウントの上り(内向き)ルールを構成するには、次のパラメータを入力します。- API クライアントの FROM 属性:
- [ソース] プルダウン メニューで、[すべてのソース] を選択します。
- [ID] プルダウン メニューで [選択した ID] を選択します。
- [選択] をクリックして、
NotificationConfig
サービス アカウントの名前「service-org-ORGANIZATION_ID@gcp-sa-scc-notification.iam.gserviceaccount.com
」を入力します。
- GCP サービス / リソースの TO 属性:
- [プロジェクト] プルダウン メニューで、[選択したプロジェクト] を選択します。
- [選択] をクリックしてから、Pub/Sub トピックを含むプロジェクトを選択します。
- [サービス] プルダウン メニューで [選択したサービス]、[Cloud Pub/Sub API] の順に選択します。
- [メソッド] プルダウン メニューで、[すべてのアクション] を選択します。
- API クライアントの FROM 属性:
- ナビゲーション メニューで、[保存] をクリックします。
これで、選択したプロジェクト、ユーザー、サービス アカウントが保護されたリソースにアクセスし、通知を作成できるようになりました。
このガイドの手順をすべて完了していて、通知が正しく機能している場合、次のルールは削除できます。
- プリンシパルの上り(内向き)ルール
- プリンシパルの下り(外向き)ルール
これらのルールは、NotificationConfig
を構成するためだけに必要でした。ただし、通知が引き続き機能するには、NotificationConfig
の上り(内向き)ルールは維持する必要があります。このルールによって、サービス境界の背後にある Pub/Sub トピックに通知をパブリッシュできます。
次のステップ
- リアルタイム メールとチャット通知を有効にするを確認する。
- 通知 API を管理する方法を確認する。
- 通知のフィルタリングを確認する。