演示如何更新 NotificationConfig
深入探索
如需查看包含此代码示例的详细文档,请参阅以下内容:
代码示例
C#
如需向 Security Command Center 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
using Google.Cloud.SecurityCenter.V1;
using static Google.Cloud.SecurityCenter.V1.NotificationConfig.Types;
using Google.Protobuf.WellKnownTypes;
using System;
/// <summary>Snippet for UpdateNotificationConfig</summary>
public class UpdateNotificationConfigSnippets
{
public static NotificationConfig UpdateNotificationConfig(
string organizationId, string notificationConfigId, string projectId, string topicName)
{
// You can also use 'projectId' or 'folderId' instead of the 'organizationId'.
NotificationConfigName notificationConfigName = new NotificationConfigName(organizationId, notificationConfigId);
TopicName pubsubTopic = new TopicName(projectId, topicName);
NotificationConfig configToUpdate = new NotificationConfig
{
NotificationConfigName = notificationConfigName,
Description = "updated description",
PubsubTopicAsTopicName = pubsubTopic,
StreamingConfig = new StreamingConfig { Filter = "state = \"INACTIVE\"" }
};
FieldMask fieldMask = new FieldMask { Paths = { "description", "pubsub_topic", "streaming_config.filter" } };
SecurityCenterClient client = SecurityCenterClient.Create();
NotificationConfig updatedConfig = client.UpdateNotificationConfig(configToUpdate, fieldMask);
Console.WriteLine($"Notification config updated: {updatedConfig}");
return updatedConfig;
}
}
Go
如需向 Security Command Center 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
import (
"context"
"fmt"
"io"
securitycenter "cloud.google.com/go/securitycenter/apiv1"
"cloud.google.com/go/securitycenter/apiv1/securitycenterpb"
"google.golang.org/genproto/protobuf/field_mask"
)
func updateNotificationConfig(w io.Writer, orgID string, notificationConfigID string, updatedPubsubTopic string) error {
// orgID := "your-org-id"
// notificationConfigID := "your-config-id"
// updatedPubsubTopic := "projects/{new-project}/topics/{new-topic}"
ctx := context.Background()
client, err := securitycenter.NewClient(ctx)
if err != nil {
return fmt.Errorf("securitycenter.NewClient: %w", err)
}
defer client.Close()
updatedDescription := "Updated sample config"
updatedFilter := `state = "INACTIVE"`
// Parent must be in one of the following formats:
// "organizations/{orgId}"
// "projects/{projectId}"
// "folders/{folderId}"
parent := fmt.Sprintf("organizations/%s", orgID)
req := &securitycenterpb.UpdateNotificationConfigRequest{
NotificationConfig: &securitycenterpb.NotificationConfig{
Name: fmt.Sprintf("%s/notificationConfigs/%s", parent, notificationConfigID),
Description: updatedDescription,
PubsubTopic: updatedPubsubTopic,
NotifyConfig: &securitycenterpb.NotificationConfig_StreamingConfig_{
StreamingConfig: &securitycenterpb.NotificationConfig_StreamingConfig{
Filter: updatedFilter,
},
},
},
UpdateMask: &field_mask.FieldMask{
Paths: []string{"description", "pubsub_topic", "streaming_config.filter"},
},
}
notificationConfig, err := client.UpdateNotificationConfig(ctx, req)
if err != nil {
return fmt.Errorf("Failed to update notification config: %w", err)
}
fmt.Fprintln(w, "Updated NotificationConfig: ", notificationConfig)
return nil
}
Java
如需向 Security Command Center 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
import com.google.cloud.securitycenter.v1.NotificationConfig;
import com.google.cloud.securitycenter.v1.NotificationConfig.StreamingConfig;
import com.google.cloud.securitycenter.v1.SecurityCenterClient;
import com.google.protobuf.FieldMask;
import java.io.IOException;
public class UpdateNotificationConfigSnippets {
public static void main(String[] args) throws IOException {
// parentId: must be in one of the following formats:
// "organizations/{organization_id}"
// "projects/{project_id}"
// "folders/{folder_id}"
String parentId = String.format("organizations/%s", "ORG_ID");
String notificationConfigId = "{config-id}";
String projectId = "{your-project}";
String topicName = "{your-topic}";
updateNotificationConfig(parentId, notificationConfigId, projectId, topicName);
}
// Update an existing notification config.
// If updating a Pubsub Topic, ensure the ServiceAccount has the
// "pubsub.topics.setIamPolicy" permission on the new topic.
public static NotificationConfig updateNotificationConfig(
String parentId, String notificationConfigId, String projectId, String topicName)
throws IOException {
// Initialize client that will be used to send requests. This client only needs to be created
// once, and can be reused for multiple requests. After completing all of your requests, call
// the "close" method on the client to safely clean up any remaining background resources.
try (SecurityCenterClient client = SecurityCenterClient.create()) {
String notificationConfigName =
String.format(
"%s/notificationConfigs/%s", parentId, notificationConfigId);
// Ensure this ServiceAccount has the "pubsub.topics.setIamPolicy" permission on the topic.
String pubsubTopic = String.format("projects/%s/topics/%s", projectId, topicName);
NotificationConfig configToUpdate =
NotificationConfig.newBuilder()
.setName(notificationConfigName)
.setDescription("updated description")
.setPubsubTopic(pubsubTopic)
.setStreamingConfig(StreamingConfig.newBuilder().setFilter("state = \"ACTIVE\""))
.build();
FieldMask fieldMask =
FieldMask.newBuilder()
.addPaths("description")
.addPaths("pubsub_topic")
.addPaths("streaming_config.filter")
.build();
NotificationConfig updatedConfig = client.updateNotificationConfig(configToUpdate, fieldMask);
System.out.printf("Notification config: %s%n", updatedConfig);
return updatedConfig;
}
}
}
Node.js
如需向 Security Command Center 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
// npm install @google-cloud/security-center/
const {SecurityCenterClient} = require('@google-cloud/security-center');
const client = new SecurityCenterClient();
// formattedConfigName: You can also use
// `client.projectNotificationConfigPath(projectId, configId)` or
// `client.folderNotificationConfigPath(folderId, configId)`.
// configId = "your-config-id";
const formattedConfigName = client.organizationNotificationConfigPath(
organizationId,
configId
);
// pubsubTopic = "projects/{your-project}/topics/{your-topic}";
// Ensure this Service Account has the "pubsub.topics.setIamPolicy" permission on this topic.
async function updateNotificationConfig() {
const [response] = await client.updateNotificationConfig({
updateMask: {
paths: ['description', 'pubsub_topic', 'streaming_config.filter'],
},
notificationConfig: {
name: formattedConfigName,
description: 'Updated config description',
pubsubTopic: pubsubTopic,
streamingConfig: {filter: 'state = "INACTIVE"'},
},
});
console.log('notification config update succeeded: ', response);
}
updateNotificationConfig();
PHP
如需向 Security Command Center 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
use Google\Cloud\SecurityCenter\V1\Client\SecurityCenterClient;
use Google\Cloud\SecurityCenter\V1\NotificationConfig;
use Google\Cloud\SecurityCenter\V1\NotificationConfig\StreamingConfig;
use Google\Cloud\SecurityCenter\V1\UpdateNotificationConfigRequest;
use Google\Protobuf\FieldMask;
/**
* @param string $organizationId Your org ID
* @param string $notificationConfigId A unique identifier
* @param string $projectId Your Cloud Project ID
* @param string $topicName Your topic name
*/
function update_notification(
string $organizationId,
string $notificationConfigId,
string $projectId,
string $topicName
): void {
$securityCenterClient = new SecurityCenterClient();
// Ensure this ServiceAccount has the 'pubsub.topics.setIamPolicy' permission on the topic.
// https://cloud.google.com/pubsub/docs/reference/rest/v1/projects.topics/setIamPolicy
$pubsubTopic = $securityCenterClient::topicName($projectId, $topicName);
// You can also use 'projectId' or 'folderId' instead of the 'organizationId'.
$notificationConfigName = $securityCenterClient::notificationConfigName($organizationId, $notificationConfigId);
$streamingConfig = (new StreamingConfig())->setFilter('state = "ACTIVE"');
$fieldMask = (new FieldMask())->setPaths(['description', 'pubsub_topic', 'streaming_config.filter']);
$notificationConfig = (new NotificationConfig())
->setName($notificationConfigName)
->setDescription('Updated description.')
->setPubsubTopic($pubsubTopic)
->setStreamingConfig($streamingConfig);
$updateNotificationConfigRequest = (new UpdateNotificationConfigRequest())
->setNotificationConfig($notificationConfig);
$response = $securityCenterClient->updateNotificationConfig($updateNotificationConfigRequest);
printf('Notification config was updated: %s' . PHP_EOL, $response->getName());
}
Python
如需向 Security Command Center 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
def update_notification_config(parent_id, notification_config_id, pubsub_topic):
"""
Args:
parent_id: must be in one of the following formats:
"organizations/{organization_id}"
"projects/{project_id}"
"folders/{folder_id}"
notification_config_id: "config-id-to-update"
pubsub_topic: "projects/{new-project}/topics/{new-topic}"
If updating a pubsub_topic, ensure this ServiceAccount has the
"pubsub.topics.setIamPolicy" permission on the new topic.
"""
from google.cloud import securitycenter as securitycenter
from google.protobuf import field_mask_pb2
client = securitycenter.SecurityCenterClient()
notification_config_name = (
f"{parent_id}/notificationConfigs/{notification_config_id}"
)
updated_description = "New updated description"
updated_filter = 'state = "INACTIVE"'
# Only description and pubsub_topic can be updated.
field_mask = field_mask_pb2.FieldMask(
paths=["description", "pubsub_topic", "streaming_config.filter"]
)
updated_notification_config = client.update_notification_config(
request={
"notification_config": {
"name": notification_config_name,
"description": updated_description,
"pubsub_topic": pubsub_topic,
"streaming_config": {"filter": updated_filter},
},
"update_mask": field_mask,
}
)
print(updated_notification_config)
Ruby
如需向 Security Command Center 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
require "google/cloud/security_center"
# Your organization id. e.g. for "organizations/123", this would be "123".
# org_id = "YOUR_ORGANZATION_ID"
# Your notification config id. e.g. for
# "organizations/123/notificationConfigs/my-config" this would be "my-config".
# config_id = "YOUR_CONFIG_ID"
# Updated description of the notification config.
# description = "YOUR_DESCRIPTION"
# The PubSub topic where notifications will be published.
# pubsub_topic = "YOUR_TOPIC"
# Updated filter string for Notification config.
# filter = "UPDATED_FILTER"
client = Google::Cloud::SecurityCenter.security_center
# You can also use 'project_id' or 'folder_id' as a parent.
config_path = client.notification_config_path organization: org_id,
notification_config: config_id
notification_config = { name: config_path }
notification_config[:description] = description unless description.nil?
notification_config[:pubsub_topic] = pubsub_topic unless pubsub_topic.nil?
notification_config[:streaming_config][:filter] = filter unless filter.nil?
paths = []
paths.push "description" unless description.nil?
paths.push "pubsub_topic" unless pubsub_topic.nil?
paths.push "streaming_config.filter" unless filter.nil?
update_mask = { paths: paths }
response = client.update_notification_config(
notification_config: notification_config,
update_mask: update_mask
)
puts response
后续步骤
如需搜索和过滤其他 Google Cloud 产品的代码示例,请参阅 Google Cloud 示例浏览器。