Security Command Center API の通知機能を有効にします。通知は Pub/Sub トピックに情報を送信して、数分以内に検出結果の更新と新しい検出結果を知らせます。Security Command Center API は組織レベルで機能するため、Security Command Center API の通知には Security Command Center ダッシュボードに表示されるすべての検出結果情報が含まれます。
Security Command Center Pub/Sub の通知を Cloud Functions のアクションに直接接続できます。レスポンス、拡張、修復に役立つセキュリティ関数の例については、Security Command Center ツールのアラートのサンプルアプリをご覧ください。
始める前に
- Security Command Center API の通知を有効にするには、セキュリティー センター管理者 の IAM ロールが必要です。
- Security Command Center ダッシュボードにアクセスするには、セキュリティ センター管理閲覧者の IAM ロールが必要です。
- 通知サービス アカウントまたは
gcloud
ツール アカウントに適切なロールを付与するには、組織管理者 の IAM ロールが必要です。
Security Command Center のロールの詳細を確認する。
Security Command Center API の通知の設定
通知を設定するには、まず Security Command Center API を有効にします。
Security Command Center API を有効にする
Security Command Center API を有効にする手順は次のとおりです。
- Cloud Console の API ライブラリ ページに移動します。
API ライブラリ ページに移動 - 通知 API を有効にするプロジェクトを選択します。
- [検索] ボックスに「
Security Command Center
」と入力し、検索結果で [Security Command Center] をクリックします。 - 表示された API ページで [有効にする] をクリックします。
これで、プロジェクトで Security Command Center API が有効になりました。次に、gcloud
ツールまたはクライアント ライブラリを使用して Pub/Sub トピックをサブスクライブし、権限を設定します。
Pub/Sub トピックの設定
この手順では、通知を送信する Pub/Sub トピックを作成してサブスクライブします。プログラムで API を呼び出す必要がない場合は、設定が容易な gcloud
ツールコマンドをおすすめします。
gcloud
gcloud
ツールを使用して Security Command Center API の通知機能を設定する手順は次のとおりです。
- Pub/Sub トピックとサブスクリプションを設定します。
gcloud
ツール アカウントの権限を設定します。
ステップ 1: Pub/Sub を設定する
Pub/Sub トピックを設定してサブスクライブする手順は次のとおりです。
- Google Cloud Console に移動します。
Google Cloud Console に移動 - Security Command Center API を有効にしたプロジェクトを選択します。
- 「Cloud Shell をアクティブにする」
をクリックします。
新しいトピックを作成するか、既存のトピックを再利用します。新しいトピックを作成するには、次のようにします。
gcloud pubsub topics create topic-id
環境変数を設定します。
トピック ID を設定します。
export TOPIC_ID=topic-id
トピックへのサブスクリプションを作成します。
gcloud pubsub subscriptions create subscription-id --topic topic-id
Pub/Sub の設定について詳しくは、トピックとサブスクリプションの管理をご覧ください。次にアカウントの権限をセットアップします
手順 2: gcloud
ツールのアカウント権限を設定する
NotificationConfig
を作成するには、gcloud
ツール アカウントに次の Identity and Access Management(IAM)ロールが必要です。
roles/securitycenter.admin
またはroles/securitycenter.notificationConfigEditor
- 通知を受け取る Pub/Sub トピックの
roles/pubsub.admin
これらの権限を付与する手順は次のとおりです。
- Google Cloud Console に移動します。
Google Cloud Console に移動 - Security Command Center API を有効にしたプロジェクトを選択します。
「Cloud Shell をアクティブにする」
をクリックします。
組織名を設定します。
export ORGANIZATION_ID=organization-id
Pub/Sub トピックが属するプロジェクトのプロジェクト ID を設定します。
export PUBSUB_PROJECT=project-id
使用している
gcloud
ツール アカウントを設定します。export GCLOUD_ACCOUNT=your-username@email.com
トピック ID を設定するか、ステップ 1 で設定したトピックを使用します。
export TOPIC_ID=topic-id
gcloud
ツール アカウントにpubsub.topics.setIamPolicy
権限を持つ Pub/Sub ロールを付与します。gcloud pubsub topics add-iam-policy-binding \ projects/$PUBSUB_PROJECT/topics/$TOPIC_ID \ --member="user:$GCLOUD_ACCOUNT" \ --role='roles/pubsub.admin'
gcloud
ツール アカウントに、roles/securitycenter.notificationConfigEditor
やroles/securitycenter.admin
など、すべてのsecuritycenter.notification
権限を含む組織のロールを付与します。gcloud organizations add-iam-policy-binding $ORGANIZATION_ID \ --member="user:$GCLOUD_ACCOUNT" \ --role='role-name'
次に、NotificationConfig を作成します。
クライアント ライブラリ
クライアント ライブラリを使用して Security Command Center API の通知機能を設定する手順は次のとおりです。
- サービス アカウントを設定します。
- API クライアント ライブラリをダウンロードします。
- 開発環境を設定します。
- Pub/Sub トピックとサブスクリプションを設定します。
ステップ 1: サービス アカウントを設定する
Security Command Center API の通知機能は、適切な権限を持つサービス アカウントを使用して通知を構成します。このサービス アカウントは、構成ファイルの初期設定にのみ使用します。後で追加の通知構成ファイルを作成するのに再利用することもできます。このサービス アカウントは、Security Command Center を設定したときに作成したサービス アカウントとは別のものです。
サービス アカウントを作成するには:
- Google Cloud Console に移動します。
Google Cloud Console に移動 - Security Command Center API を有効にしたプロジェクトを選択します。
- 「Cloud Shell をアクティブにする」
をクリックします。
環境変数を設定します。
組織名を設定します。
export ORGANIZATION_ID=organization-id
通知 API を有効にするプロジェクトのプロジェクト ID を設定します。
export PROJECT_ID=project-id
新しいサービス アカウントに使用するカスタム ID を設定します(
scc-notifications
など)。サービス アカウント名は 6 ~ 30 文字で、先頭は英字にします。すべて英小文字、数字とハイフンで指定してください。export SERVICE_ACCOUNT=custom-id
サービス アカウントキーを保存するパスを設定します(
export KEY_LOCATION=/home/$USER/mykeys/$SERVICE_ACCOUNT.json
など)。export KEY_LOCATION=full-key-location-path # This is used by client libraries to find the key export GOOGLE_APPLICATION_CREDENTIALS=$KEY_LOCATION
プロジェクト ID に関連付けられたサービス アカウントを作成します。
gcloud iam service-accounts create $SERVICE_ACCOUNT --display-name \ "Service Account for [USER]" --project $PROJECT_ID
サービス アカウントに関連付ける鍵を作成します。この鍵は
NotificationConfig
の作成時に使用され、前の手順で指定したKEY_LOCATION
に永続的に保存されます。gcloud iam service-accounts keys create $KEY_LOCATION --iam-account \ $SERVICE_ACCOUNT@$PROJECT_ID.iam.gserviceaccount.com
サービス アカウントに、
roles/securitycenter.notificationConfigEditor
やroles/securitycenter.admin
など、すべてのsecuritycenter.notification
権限を含む組織のロールを付与します。gcloud organizations add-iam-policy-binding $ORGANIZATION_ID \ --member="serviceAccount:$SERVICE_ACCOUNT@$PROJECT_ID.iam.gserviceaccount.com" \ --role='role-name'
これで、通知で使用できるようにサービス アカウントが設定され、サービス アカウントキーが指定した KEY_LOCATION に保存されました。サービス アカウントの詳細については、サービス アカウントキーの作成と管理をご覧ください。
ステップ 2: 開発環境の設定
Security Command Center API の通知機能を使用するには、gcloud
ツールを使用するか、クライアント ライブラリをダウンロードして、選択した言語で開発環境を設定します。
Python
省略可: Python ライブラリをインストールする前に、Virtualenv を使用して、隔離された Python 環境を作成することをおすすめします。
virtualenv your-env source your-env/bin/activate
Python ライブラリのインストールを管理するために、pip をインストールします。
次のコマンドを実行して、次の Python ライブラリをインストールします。
pip install google-cloud-securitycenter
Java
Security Command Center の Java ライブラリを依存関係としてプロジェクトに含めるには、Maven リポジトリからアーティファクトを選択します。通知は、ライブラリ バージョン 0.119.0
以降に含まれます。
Intellij を使用している場合は、GOOGLE_APPLICATION_CREDENTIALS
環境変数を、前の手順でダウンロードした通知サービス アカウントキーの絶対パスに設定します。
- Intellij で、[実行] > [構成を編集] の順にクリックします。
[Application] > [Run_Configuration_For_Sample] > [Environment Variables] で次の変数を設定します。
GOOGLE_APPLICATION_CREDENTIALS=absolute-path-to-service-account-key
Go
通知 API Go の依存関係をインストールするには、次のコマンドを実行します。
Go ライブラリをダウンロードするには、次のコマンドを実行します。
go get -u cloud.google.com/go/securitycenter/apiv1
Node.js
プロジェクト フォルダで、npm
を使用して必要な通知 API の依存関係をインストールします。
npm install --save @google-cloud/security-center/
ステップ 3: Pub/Sub の設定
Pub/Sub に通知を配信するには、Pub/Sub トピックをサブスクライブし、通知サービス アカウントに pubsub.topics.setIamPolicy
権限を含む IAM ロールを付与します。
新しいトピックを作成するか、既存のトピックを再利用します。新しいトピックを作成するには、次のようにします。
gcloud pubsub topics create topic-id
環境変数を設定します。
トピック ID を設定します。
export TOPIC_ID=topic-id
通知 API を有効にしたプロジェクトのプロジェクト ID を設定します。
export CONSUMER_PROJECT=project-id
前の手順で作成したサービス アカウントのメールアドレスを設定します。
export SERVICE_ACCOUNT_EMAIL=service-account-name@$CONSUMER_PROJECT.iam.gserviceaccount.com
トピックへのサブスクリプションを作成します。
gcloud pubsub subscriptions create subscription-id --topic topic-id
通知サービス アカウントに
pubsub.topics.setIamPolicy
権限を持つロールを付与します。gcloud pubsub topics add-iam-policy-binding \ projects/$CONSUMER_PROJECT/topics/$TOPIC_ID \ --member="serviceAccount:$SERVICE_ACCOUNT_EMAIL" \ --role='roles/pubsub.admin'
Pub/Sub の設定について詳しくは、トピックとサブスクリプションの管理をご覧ください。次のステップでは、NotificationConfig
を作成して設定を完了します。
NotificationConfig の作成
NotificationConfig
を作成する前に、次の点にご注意ください。
- 各組織で保持できる
NotificationConfig
ファイルの数には上限があります。詳細については、割り当てと上限をご覧ください。 - 通知サービス アカウントまたは
gcloud
ツール アカウントに適切なロールを付与するには、組織管理者の IAM ロールが必要です。
NotificationConfig
には、便利なイベントへの通知に限定する filter
フィールドが含まれています。このフィールドには、Security Command Center API の findings.list
メソッドで使用できるすべてのフィルタを受け入れます。
gcloud
コマンドライン ツールを使用して、セキュリティ センター通知構成の編集者の IAM ロールをアカウントに付与する手順は次のとおりです。
環境変数を設定します。
組織名を設定します。
export ORGANIZATION_ID=organization-id
検出結果通知を設定したときに作成したサービス アカウントのメールアドレスか、
gcloud
ツールコマンドの実行に使用しているアカウントのメールアドレスを設定します。gcloud
ツールコマンドの実行に使用するアカウントのメールアドレスを設定します。export EMAIL=your-username@email.com
または、サービス アカウントのメールアドレスを設定します。
export EMAIL=service-account-name@$CONSUMER_PROJECT.iam.gserviceaccount.com
必要なロールをサービス アカウントまたは
gcloud
ツールコマンドで使用したアカウントに付与します。gcloud
ツール コマンドの実行に使用したアカウントにロールを付与します。gcloud organizations add-iam-policy-binding \ $ORGANIZATION_ID \ --member="user:$EMAIL" \ --role='roles/securitycenter.notificationConfigEditor'
または、サービス アカウントにロールを付与します。
gcloud organizations add-iam-policy-binding \ $ORGANIZATION_ID \ --member="serviceAccount:$EMAIL" \ --role='roles/securitycenter.notificationConfigEditor'
サービス アカウントまたは gcloud
ツール アカウントに権限を付与したら、任意の言語またはプラットフォームを使用して NotificationConfig
を作成します。
gcloud
# The numeric ID of the organization
ORGANIZATION_ID=organization-id
# The topic to which the notifications are published
PUBSUB_TOPIC="projects/project-id/topics/topic-id"
# The description for the NotificationConfig
DESCRIPTION="Notifies for active findings"
# Filters for active findings
FILTER="state=\"ACTIVE\""
gcloud scc notifications create notification-name \
--organization "$ORGANIZATION_ID" \
--description "$DESCRIPTION" \
--pubsub-topic $PUBSUB_TOPIC \
--filter "$FILTER"
Python
Java
Go
Node.js
PHP
Ruby
C#
これで、指定した Pub/Sub トピックに通知が発行されるようになりました。通知を発行するために、Security Command Center は、ロール securitycenter.notificationServiceAgent
を持つ service-org-organization-id@gcp-sa-scc-notification.iam.gserviceaccount.com
の形式の組織レベルのサービス アカウントを使用します。通知を機能させるには、この組織レベルのサービス アカウントのロールが必要です。
前の手順では、プロジェクト レベルの通知サービス アカウントを service-account-id@project-id.iam.gserviceaccount.com
の形式で作成しているか、gcloud
ツールでユーザー アカウントを使用しました。このアカウントに付与した権限は、必要に応じて取り消すことができます。詳細は、IAM ドキュメントのアクセス権の付与、変更、取り消しをご覧ください。
次のステップ
- リアルタイム メールとチャット通知を有効にするを確認する。
- 通知 API を管理する方法を確認する。
- 通知のフィルタリングを確認する。