From a8fe3dfd4fc9f797f791a45ccd21c7c7f565a511 Mon Sep 17 00:00:00 2001 From: SitaLakshmi Date: Tue, 21 Dec 2021 12:52:23 +0530 Subject: [PATCH 01/25] docs(scc-samples): init add CRUD mute config samples --- samples/snippets/pom.xml | 1 + .../snippets/muteconfig/CreateMuteConfig.java | 66 +++++++++++++++++++ .../snippets/muteconfig/DeleteMuteConfig.java | 51 ++++++++++++++ .../snippets/muteconfig/GetMuteConfig.java | 52 +++++++++++++++ .../snippets/muteconfig/ListMuteConfigs.java | 55 ++++++++++++++++ .../snippets/muteconfig/UpdateMuteConfig.java | 65 ++++++++++++++++++ 6 files changed, 290 insertions(+) create mode 100644 samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/CreateMuteConfig.java create mode 100644 samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/DeleteMuteConfig.java create mode 100644 samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/GetMuteConfig.java create mode 100644 samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/ListMuteConfigs.java create mode 100644 samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/UpdateMuteConfig.java diff --git a/samples/snippets/pom.xml b/samples/snippets/pom.xml index 4b07aae26..f43d46b83 100644 --- a/samples/snippets/pom.xml +++ b/samples/snippets/pom.xml @@ -41,6 +41,7 @@ com.google.cloud google-cloud-securitycenter + 2.3.1 diff --git a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/CreateMuteConfig.java b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/CreateMuteConfig.java new file mode 100644 index 000000000..cc4b2ca23 --- /dev/null +++ b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/CreateMuteConfig.java @@ -0,0 +1,66 @@ +/* + * Copyright 2021 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.cloud.examples.securitycenter.snippets.muteconfig; + +// [START securitycenter_create_mute_config] + +import com.google.cloud.securitycenter.v1.CreateMuteConfigRequest; +import com.google.cloud.securitycenter.v1.MuteConfig; +import com.google.cloud.securitycenter.v1.SecurityCenterClient; +import java.io.IOException; + +public class CreateMuteConfig { + + public static void main(String[] args) throws IOException { + // Use any one of the following three options as a parent to create mute config: + // organizations/{organization}/muteConfigs/{config_id} or + // folders/{folder}/muteConfigs/{config_id} or + // projects/{project}/muteConfigs/{config_id} + // TODO: Replace the variables within {} + String parentPath = "{parent_path}"; + String projectId = "projects/{project_id}"; + createMuteConfig(parentPath, projectId); + } + + // Creates a mute configuration under a given scope that will mute + // all new finding creates/updates which match the filter. + // Existing findings will NOT BE muted. + public static void createMuteConfig(String parentPath, String projectId) throws IOException { + try (SecurityCenterClient client = SecurityCenterClient.create()) { + + CreateMuteConfigRequest request = CreateMuteConfigRequest.newBuilder() + .setParent(parentPath) + .setMuteConfig(MuteConfig.newBuilder() + .setDescription("Mute low-medium IAM grants excluding 'compute' ") + // Set SQL config rule. + // For all supported properties for mute rules, see: + // https://cloud.google.com/security-command-center/docs/how-to-mute-findings?hl=en#supported_properties + .setFilter(String.format( + "severity=\"LOW\" OR severity=\"MEDIUM\" AND " + + "category=\"Persistence: IAM Anomalous Grant\" AND " + + "resource.project_display_name=\"%s\" AND " + + "-resource.type:\"compute\"", + projectId)) + .build()).build(); + + MuteConfig response = client.createMuteConfig(request); + System.out.println("Mute Config Rule created successfully: " + response.getName()); + } + } + +} +// [END securitycenter_create_mute_config] \ No newline at end of file diff --git a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/DeleteMuteConfig.java b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/DeleteMuteConfig.java new file mode 100644 index 000000000..5fd72e6e7 --- /dev/null +++ b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/DeleteMuteConfig.java @@ -0,0 +1,51 @@ +/* + * Copyright 2021 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.cloud.examples.securitycenter.snippets.muteconfig; + +// [START securitycenter_delete_mute_config] + +import com.google.cloud.securitycenter.v1.MuteConfigName; +import com.google.cloud.securitycenter.v1.SecurityCenterClient; +import java.io.IOException; + +public class DeleteMuteConfig { + + public static void main(String[] args) throws IOException { + // Specify the name of the mute config to delete. + // Its format is: + // organizations/{organization}/muteConfigs/{config_id} or + // folders/{folder}/muteConfigs/{config_id} or + // projects/{project}/muteConfigs/{config_id} + // TODO: Replace the variables within {} + String muteConfigName = "{any-one-of-the-above-formats}"; + + deleteMuteConfig(muteConfigName); + } + + // Deletes a mute configuration given its resource name. + // Note: Already muted findings are not affected when a mute config is deleted. + public static void deleteMuteConfig(String muteConfigName) throws IOException { + try (SecurityCenterClient client = SecurityCenterClient.create()) { + + client.deleteMuteConfig(MuteConfigName.newBuilder() + .setMuteConfig(muteConfigName).build()); + + System.out.println("Mute Config Rule deleted successfully: " + muteConfigName); + } + } +} +// [END securitycenter_delete_mute_config] \ No newline at end of file diff --git a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/GetMuteConfig.java b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/GetMuteConfig.java new file mode 100644 index 000000000..e72a7a518 --- /dev/null +++ b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/GetMuteConfig.java @@ -0,0 +1,52 @@ +/* + * Copyright 2021 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.cloud.examples.securitycenter.snippets.muteconfig; + +// [START securitycenter_get_mute_config] + +import com.google.cloud.securitycenter.v1.MuteConfig; +import com.google.cloud.securitycenter.v1.MuteConfigName; +import com.google.cloud.securitycenter.v1.SecurityCenterClient; +import java.io.IOException; + +public class GetMuteConfig { + + public static void main(String[] args) throws IOException { + // Name of the mute config to retrieve. + // Its format is: + // organizations/{organization}/muteConfigs/{config_id} or + // folders/{folder}/muteConfigs/{config_id} or + // projects/{project}/muteConfigs/{config_id} + // TODO: Replace the variables within {} + String muteConfigName = "{any-one-of-the-above-formats}"; + + getMuteConfig(muteConfigName); + } + + // Retrieves mute configuration given its resource name. + public static void getMuteConfig(String muteConfigName) throws IOException { + try (SecurityCenterClient client = SecurityCenterClient.create()) { + + MuteConfig muteConfig = client.getMuteConfig(MuteConfigName.newBuilder() + .setMuteConfig(muteConfigName).build()); + + System.out.println("Retrieved the mute config: Description: " + muteConfig.getDescription()); + } + } + +} +// [END securitycenter_get_mute_config] \ No newline at end of file diff --git a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/ListMuteConfigs.java b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/ListMuteConfigs.java new file mode 100644 index 000000000..d3d5bd4b6 --- /dev/null +++ b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/ListMuteConfigs.java @@ -0,0 +1,55 @@ +/* + * Copyright 2021 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.cloud.examples.securitycenter.snippets.muteconfig; + +// [START securitycenter_list_mute_configs] + +import com.google.cloud.securitycenter.v1.ListMuteConfigsRequest; +import com.google.cloud.securitycenter.v1.MuteConfig; +import com.google.cloud.securitycenter.v1.SecurityCenterClient; +import java.io.IOException; + +public class ListMuteConfigs { + + public static void main(String[] args) throws IOException { + // Use any one of the following three resource paths to list mute configurations. + // "organizations/{organization_id}" or + // "folders/{folder_id}" or + // "projects/{project_id}" + // TODO: Replace variables enclosed within {} + String parent = "projects/{project_id}"; + listMuteConfigs(parent); + } + + // Listing mute configs at organization level will give all the configs + // at org, folder and project levels. + // Similarly, listing configs at folder level will list all the configs + // at folder + projects (within that folder) level. + public static void listMuteConfigs(String parent) throws IOException { + try (SecurityCenterClient client = SecurityCenterClient.create()) { + + ListMuteConfigsRequest listMuteConfigsRequest = ListMuteConfigsRequest.newBuilder() + .setParent(parent).build(); + + // List all Mute Configs present in the resource. + for (MuteConfig muteConfig : client.listMuteConfigs(listMuteConfigsRequest).iterateAll()) { + System.out.println(muteConfig.getName()); + } + } + } +} +// [END securitycenter_list_mute_configs] \ No newline at end of file diff --git a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/UpdateMuteConfig.java b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/UpdateMuteConfig.java new file mode 100644 index 000000000..5882f34a0 --- /dev/null +++ b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/UpdateMuteConfig.java @@ -0,0 +1,65 @@ +/* + * Copyright 2021 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.cloud.examples.securitycenter.snippets.muteconfig; + +// [START securitycenter_update_mute_config] + +import com.google.cloud.securitycenter.v1.MuteConfig; +import com.google.cloud.securitycenter.v1.SecurityCenterClient; +import com.google.cloud.securitycenter.v1.UpdateMuteConfigRequest; +import com.google.protobuf.FieldMask; +import java.io.IOException; + +public class UpdateMuteConfig { + + public static void main(String[] args) throws IOException { + // Specify the name of the mute config to delete. + // Its format is: + // organizations/{organization}/muteConfigs/{config_id} or + // folders/{folder}/muteConfigs/{config_id} or + // projects/{project}/muteConfigs/{config_id} + // TODO: Replace the variables within {} + String muteConfigName = "{any-one-of-the-above-formats}"; + updateMuteConfig(muteConfigName); + } + + // Updates an existing mute configuration. + // The following can be updated in a mute config: description, and filter. + public static void updateMuteConfig(String muteConfigName) throws IOException { + try (SecurityCenterClient securityCenterClient = SecurityCenterClient.create()) { + + MuteConfig updateMuteConfig = MuteConfig.newBuilder() + .setName(muteConfigName) + .setDescription("Updated mute config description").build(); + + UpdateMuteConfigRequest updateMuteConfigRequest = UpdateMuteConfigRequest.newBuilder() + .setMuteConfig(updateMuteConfig) + // Set the update mask to specify which properties of the Mute Config should be updated. + // If empty all mutable fields will be updated. + // Make sure that the mask fields match the properties changed in 'updateMuteConfig'. + // For more info on constructing update mask path, see the proto or: + // https://cloud.google.com/security-command-center/docs/reference/rest/v1/folders.muteConfigs/patch?hl=en#query-parameters + .setUpdateMask(FieldMask.newBuilder().addPaths("mute_config.description").build()) + .build(); + + MuteConfig response = securityCenterClient.updateMuteConfig(updateMuteConfigRequest); + System.out.println(response); + } + } + +} +// [END securitycenter_update_mute_config] From 91c6e730cb23a3d64c9a5805ccb9a8c27958bd49 Mon Sep 17 00:00:00 2001 From: SitaLakshmi Date: Tue, 21 Dec 2021 14:03:53 +0530 Subject: [PATCH 02/25] added bulk mute and mute/unmute samples --- .../snippets/muteconfig/BulkMuteFindings.java | 61 +++++++++++++++++++ .../muteconfig/SetMuteUnmuteFinding.java | 56 +++++++++++++++++ 2 files changed, 117 insertions(+) create mode 100644 samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/BulkMuteFindings.java create mode 100644 samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/SetMuteUnmuteFinding.java diff --git a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/BulkMuteFindings.java b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/BulkMuteFindings.java new file mode 100644 index 000000000..b131609ec --- /dev/null +++ b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/BulkMuteFindings.java @@ -0,0 +1,61 @@ +/* + * Copyright 2021 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.cloud.examples.securitycenter.snippets.muteconfig; + +// [START securitycenter_bulk_mute] + +import com.google.cloud.securitycenter.v1.BulkMuteFindingsRequest; +import com.google.cloud.securitycenter.v1.BulkMuteFindingsResponse; +import com.google.cloud.securitycenter.v1.SecurityCenterClient; +import java.io.IOException; +import java.util.concurrent.ExecutionException; + +public class BulkMuteFindings { + + public static void main(String[] args) + throws IOException, ExecutionException, InterruptedException { + // parentPath: use any one of the following three options + // organizations/{organization} or + // folders/{folder} or + // projects/{project} + // muteRule: Expression that identifies findings that should be updated. + // TODO: Replace the variables within {} + String parentPath = "{parent_path}"; + String muteRule = "{filter-condition}"; + bulkMute(parentPath, muteRule); + } + + // Kicks off an LRO (Long-Running-Operation) to bulk mute findings for a parent based on a filter. + // The parent can be either an organization, folder or project. The findings + // matched by the filter will be muted after the LRO is done. + public static void bulkMute(String parentPath, String muteRule) + throws IOException, ExecutionException, InterruptedException { + try (SecurityCenterClient client = SecurityCenterClient.create()) { + + BulkMuteFindingsRequest bulkMuteFindingsRequest = BulkMuteFindingsRequest.newBuilder() + .setParent(parentPath) + // To create mute rules, see: + // https://cloud.google.com/security-command-center/docs/how-to-mute-findings#create_mute_rules + .setFilter(muteRule).build(); + + BulkMuteFindingsResponse response = client.bulkMuteFindingsAsync(bulkMuteFindingsRequest) + .get(); + System.out.println("Bulk mute findings completed successfully ! " + response); + } + } +} +// [END securitycenter_bulk_mute] \ No newline at end of file diff --git a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/SetMuteUnmuteFinding.java b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/SetMuteUnmuteFinding.java new file mode 100644 index 000000000..27880d4d1 --- /dev/null +++ b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/SetMuteUnmuteFinding.java @@ -0,0 +1,56 @@ +/* + * Copyright 2021 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.cloud.examples.securitycenter.snippets.muteconfig; + +// [START securitycenter_set_mute_unmute] + +import com.google.cloud.securitycenter.v1.Finding; +import com.google.cloud.securitycenter.v1.Finding.Mute; +import com.google.cloud.securitycenter.v1.SecurityCenterClient; +import com.google.cloud.securitycenter.v1.SetMuteRequest; +import java.io.IOException; + +public class SetMuteUnmuteFinding { + + public static void main(String[] args) throws IOException { + // findingPath: The relative resource name of the finding. See: + // https://cloud.google.com/apis/design/resource_names#relative_resource_name + // Example: + // "organizations/{organization_id}/sources/{source_id}/finding/{finding_id}", + // "folders/{folder_id}/sources/{source_id}/finding/{finding_id}", + // "projects/{project_id}/sources/{source_id}/finding/{finding_id}". + // TODO: Replace the variables within {} + String findingPath = "{path-to-the-finding}"; + setMute(findingPath); + } + + // Mute/unmute an individual finding. + // If a finding is already muted, muting it again (or vice versa) is a no-op. + // Various mute states are: MUTE_UNSPECIFIED/ MUTE/ UNMUTE. + public static void setMute(String findingPath) throws IOException { + try (SecurityCenterClient client = SecurityCenterClient.create()) { + + SetMuteRequest setMuteRequest = SetMuteRequest.newBuilder() + .setName(findingPath) + .setMute(Mute.MUTED).build(); + + Finding finding = client.setMute(setMuteRequest); + System.out.println("Mute value for the finding: " + finding.getMute()); + } + } +} +// [END securitycenter_set_mute_unmute] \ No newline at end of file From 65061cd2b5281311571ab09076a958a5c4a0dd1b Mon Sep 17 00:00:00 2001 From: SitaLakshmi Date: Tue, 21 Dec 2021 16:08:17 +0530 Subject: [PATCH 03/25] refactor(samples): modified class name --- .../{DeleteMuteConfig.java => DeleteMuteRule.java} | 6 +++--- .../muteconfig/{GetMuteConfig.java => GetMuteRule.java} | 7 +++---- .../{ListMuteConfigs.java => ListMuteRules.java} | 6 +++--- .../{UpdateMuteConfig.java => UpdateMuteRule.java} | 8 ++++---- 4 files changed, 13 insertions(+), 14 deletions(-) rename samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/{DeleteMuteConfig.java => DeleteMuteRule.java} (91%) rename samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/{GetMuteConfig.java => GetMuteRule.java} (92%) rename samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/{ListMuteConfigs.java => ListMuteRules.java} (93%) rename samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/{UpdateMuteConfig.java => UpdateMuteRule.java} (93%) diff --git a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/DeleteMuteConfig.java b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/DeleteMuteRule.java similarity index 91% rename from samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/DeleteMuteConfig.java rename to samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/DeleteMuteRule.java index 5fd72e6e7..aa87d011c 100644 --- a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/DeleteMuteConfig.java +++ b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/DeleteMuteRule.java @@ -22,7 +22,7 @@ import com.google.cloud.securitycenter.v1.SecurityCenterClient; import java.io.IOException; -public class DeleteMuteConfig { +public class DeleteMuteRule { public static void main(String[] args) throws IOException { // Specify the name of the mute config to delete. @@ -33,12 +33,12 @@ public static void main(String[] args) throws IOException { // TODO: Replace the variables within {} String muteConfigName = "{any-one-of-the-above-formats}"; - deleteMuteConfig(muteConfigName); + deleteMuteRule(muteConfigName); } // Deletes a mute configuration given its resource name. // Note: Already muted findings are not affected when a mute config is deleted. - public static void deleteMuteConfig(String muteConfigName) throws IOException { + public static void deleteMuteRule(String muteConfigName) throws IOException { try (SecurityCenterClient client = SecurityCenterClient.create()) { client.deleteMuteConfig(MuteConfigName.newBuilder() diff --git a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/GetMuteConfig.java b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/GetMuteRule.java similarity index 92% rename from samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/GetMuteConfig.java rename to samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/GetMuteRule.java index e72a7a518..7b6328024 100644 --- a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/GetMuteConfig.java +++ b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/GetMuteRule.java @@ -23,7 +23,7 @@ import com.google.cloud.securitycenter.v1.SecurityCenterClient; import java.io.IOException; -public class GetMuteConfig { +public class GetMuteRule { public static void main(String[] args) throws IOException { // Name of the mute config to retrieve. @@ -33,12 +33,11 @@ public static void main(String[] args) throws IOException { // projects/{project}/muteConfigs/{config_id} // TODO: Replace the variables within {} String muteConfigName = "{any-one-of-the-above-formats}"; - - getMuteConfig(muteConfigName); + getMuteRule(muteConfigName); } // Retrieves mute configuration given its resource name. - public static void getMuteConfig(String muteConfigName) throws IOException { + public static void getMuteRule(String muteConfigName) throws IOException { try (SecurityCenterClient client = SecurityCenterClient.create()) { MuteConfig muteConfig = client.getMuteConfig(MuteConfigName.newBuilder() diff --git a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/ListMuteConfigs.java b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/ListMuteRules.java similarity index 93% rename from samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/ListMuteConfigs.java rename to samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/ListMuteRules.java index d3d5bd4b6..199a159aa 100644 --- a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/ListMuteConfigs.java +++ b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/ListMuteRules.java @@ -23,7 +23,7 @@ import com.google.cloud.securitycenter.v1.SecurityCenterClient; import java.io.IOException; -public class ListMuteConfigs { +public class ListMuteRules { public static void main(String[] args) throws IOException { // Use any one of the following three resource paths to list mute configurations. @@ -32,14 +32,14 @@ public static void main(String[] args) throws IOException { // "projects/{project_id}" // TODO: Replace variables enclosed within {} String parent = "projects/{project_id}"; - listMuteConfigs(parent); + listMuteRules(parent); } // Listing mute configs at organization level will give all the configs // at org, folder and project levels. // Similarly, listing configs at folder level will list all the configs // at folder + projects (within that folder) level. - public static void listMuteConfigs(String parent) throws IOException { + public static void listMuteRules(String parent) throws IOException { try (SecurityCenterClient client = SecurityCenterClient.create()) { ListMuteConfigsRequest listMuteConfigsRequest = ListMuteConfigsRequest.newBuilder() diff --git a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/UpdateMuteConfig.java b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/UpdateMuteRule.java similarity index 93% rename from samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/UpdateMuteConfig.java rename to samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/UpdateMuteRule.java index 5882f34a0..bb9cb3ef1 100644 --- a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/UpdateMuteConfig.java +++ b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/UpdateMuteRule.java @@ -24,7 +24,7 @@ import com.google.protobuf.FieldMask; import java.io.IOException; -public class UpdateMuteConfig { +public class UpdateMuteRule { public static void main(String[] args) throws IOException { // Specify the name of the mute config to delete. @@ -34,12 +34,12 @@ public static void main(String[] args) throws IOException { // projects/{project}/muteConfigs/{config_id} // TODO: Replace the variables within {} String muteConfigName = "{any-one-of-the-above-formats}"; - updateMuteConfig(muteConfigName); + updateMuteRule(muteConfigName); } // Updates an existing mute configuration. - // The following can be updated in a mute config: description, and filter. - public static void updateMuteConfig(String muteConfigName) throws IOException { + // The following can be updated in a mute config: description, and filter/ mute rule. + public static void updateMuteRule(String muteConfigName) throws IOException { try (SecurityCenterClient securityCenterClient = SecurityCenterClient.create()) { MuteConfig updateMuteConfig = MuteConfig.newBuilder() From 9d106d7c3783aa15cc10cc7c42e9b6b92908df68 Mon Sep 17 00:00:00 2001 From: SitaLakshmi Date: Tue, 21 Dec 2021 16:08:51 +0530 Subject: [PATCH 04/25] refactor(samples): added muteConfigId and refactored class name --- ...ateMuteConfig.java => CreateMuteRule.java} | 45 ++++++++++--------- 1 file changed, 23 insertions(+), 22 deletions(-) rename samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/{CreateMuteConfig.java => CreateMuteRule.java} (55%) diff --git a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/CreateMuteConfig.java b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/CreateMuteRule.java similarity index 55% rename from samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/CreateMuteConfig.java rename to samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/CreateMuteRule.java index cc4b2ca23..4ba704156 100644 --- a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/CreateMuteConfig.java +++ b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/CreateMuteRule.java @@ -22,45 +22,46 @@ import com.google.cloud.securitycenter.v1.MuteConfig; import com.google.cloud.securitycenter.v1.SecurityCenterClient; import java.io.IOException; +import java.util.UUID; -public class CreateMuteConfig { +public class CreateMuteRule { public static void main(String[] args) throws IOException { - // Use any one of the following three options as a parent to create mute config: - // organizations/{organization}/muteConfigs/{config_id} or - // folders/{folder}/muteConfigs/{config_id} or - // projects/{project}/muteConfigs/{config_id} + // parentPath: use any one of the following three options, + // organizations/{organization} or + // folders/{folder} or + // projects/{project} // TODO: Replace the variables within {} String parentPath = "{parent_path}"; - String projectId = "projects/{project_id}"; - createMuteConfig(parentPath, projectId); + createMuteRule(parentPath); } // Creates a mute configuration under a given scope that will mute - // all new finding creates/updates which match the filter. + // all new finding which match the filter/ mute rule. // Existing findings will NOT BE muted. - public static void createMuteConfig(String parentPath, String projectId) throws IOException { + public static void createMuteRule(String parentPath) throws IOException { try (SecurityCenterClient client = SecurityCenterClient.create()) { + MuteConfig muteConfig = MuteConfig.newBuilder() + .setDescription("Mute low-medium IAM grants excluding 'compute' ") + // Set mute rule(s). + // To construct mute rules and for supported properties, see: + // https://cloud.google.com/security-command-center/docs/how-to-mute-findings#console_3 + .setFilter( + "severity=\"LOW\" OR severity=\"MEDIUM\" AND " + + "category=\"Persistence: IAM Anomalous Grant\" AND " + + "-resource.type:\"compute\"") + .build(); + CreateMuteConfigRequest request = CreateMuteConfigRequest.newBuilder() .setParent(parentPath) - .setMuteConfig(MuteConfig.newBuilder() - .setDescription("Mute low-medium IAM grants excluding 'compute' ") - // Set SQL config rule. - // For all supported properties for mute rules, see: - // https://cloud.google.com/security-command-center/docs/how-to-mute-findings?hl=en#supported_properties - .setFilter(String.format( - "severity=\"LOW\" OR severity=\"MEDIUM\" AND " - + "category=\"Persistence: IAM Anomalous Grant\" AND " - + "resource.project_display_name=\"%s\" AND " - + "-resource.type:\"compute\"", - projectId)) - .build()).build(); + // Set a random id; max of 63 chars. + .setMuteConfigId("random-mute-id-" + UUID.randomUUID()) + .setMuteConfig(muteConfig).build(); MuteConfig response = client.createMuteConfig(request); System.out.println("Mute Config Rule created successfully: " + response.getName()); } } - } // [END securitycenter_create_mute_config] \ No newline at end of file From 035f6eddaafef3e20d8182415e944998402f1313 Mon Sep 17 00:00:00 2001 From: SitaLakshmi Date: Wed, 22 Dec 2021 12:15:00 +0530 Subject: [PATCH 05/25] test(samples): added tests for mute config samples --- .../snippets/muteconfig/CreateMuteRule.java | 7 +- .../snippets/muteconfig/GetMuteRule.java | 2 +- .../snippets/MuteFindingIT.java | 219 ++++++++++++++++++ 3 files changed, 224 insertions(+), 4 deletions(-) create mode 100644 samples/snippets/src/test/java/com/google/cloud/examples/securitycenter/snippets/MuteFindingIT.java diff --git a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/CreateMuteRule.java b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/CreateMuteRule.java index 4ba704156..47d65e146 100644 --- a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/CreateMuteRule.java +++ b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/CreateMuteRule.java @@ -33,13 +33,14 @@ public static void main(String[] args) throws IOException { // projects/{project} // TODO: Replace the variables within {} String parentPath = "{parent_path}"; - createMuteRule(parentPath); + String muteConfigId = "random-mute-id-" + UUID.randomUUID(); + createMuteRule(parentPath, muteConfigId); } // Creates a mute configuration under a given scope that will mute // all new finding which match the filter/ mute rule. // Existing findings will NOT BE muted. - public static void createMuteRule(String parentPath) throws IOException { + public static void createMuteRule(String parentPath, String muteConfigId) throws IOException { try (SecurityCenterClient client = SecurityCenterClient.create()) { MuteConfig muteConfig = MuteConfig.newBuilder() @@ -56,7 +57,7 @@ public static void createMuteRule(String parentPath) throws IOException { CreateMuteConfigRequest request = CreateMuteConfigRequest.newBuilder() .setParent(parentPath) // Set a random id; max of 63 chars. - .setMuteConfigId("random-mute-id-" + UUID.randomUUID()) + .setMuteConfigId(muteConfigId) .setMuteConfig(muteConfig).build(); MuteConfig response = client.createMuteConfig(request); diff --git a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/GetMuteRule.java b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/GetMuteRule.java index 7b6328024..17560a10f 100644 --- a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/GetMuteRule.java +++ b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/GetMuteRule.java @@ -43,7 +43,7 @@ public static void getMuteRule(String muteConfigName) throws IOException { MuteConfig muteConfig = client.getMuteConfig(MuteConfigName.newBuilder() .setMuteConfig(muteConfigName).build()); - System.out.println("Retrieved the mute config: Description: " + muteConfig.getDescription()); + System.out.println("Retrieved the mute config: " + muteConfig); } } diff --git a/samples/snippets/src/test/java/com/google/cloud/examples/securitycenter/snippets/MuteFindingIT.java b/samples/snippets/src/test/java/com/google/cloud/examples/securitycenter/snippets/MuteFindingIT.java new file mode 100644 index 000000000..d2b9394d6 --- /dev/null +++ b/samples/snippets/src/test/java/com/google/cloud/examples/securitycenter/snippets/MuteFindingIT.java @@ -0,0 +1,219 @@ +/* + * Copyright 2021 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.cloud.examples.securitycenter.snippets; + +import static com.google.common.truth.Truth.assertThat; +import static com.google.common.truth.Truth.assertWithMessage; + +import com.google.cloud.examples.securitycenter.snippets.muteconfig.BulkMuteFindings; +import com.google.cloud.examples.securitycenter.snippets.muteconfig.CreateMuteRule; +import com.google.cloud.examples.securitycenter.snippets.muteconfig.DeleteMuteRule; +import com.google.cloud.examples.securitycenter.snippets.muteconfig.GetMuteRule; +import com.google.cloud.examples.securitycenter.snippets.muteconfig.ListMuteRules; +import com.google.cloud.examples.securitycenter.snippets.muteconfig.SetMuteUnmuteFinding; +import com.google.cloud.examples.securitycenter.snippets.muteconfig.UpdateMuteRule; +import com.google.cloud.securitycenter.v1.CreateSourceRequest; +import com.google.cloud.securitycenter.v1.Finding; +import com.google.cloud.securitycenter.v1.Finding.FindingClass; +import com.google.cloud.securitycenter.v1.Finding.Mute; +import com.google.cloud.securitycenter.v1.Finding.Severity; +import com.google.cloud.securitycenter.v1.Finding.State; +import com.google.cloud.securitycenter.v1.ListFindingsRequest; +import com.google.cloud.securitycenter.v1.ListFindingsResponse.ListFindingsResult; +import com.google.cloud.securitycenter.v1.SecurityCenterClient; +import com.google.cloud.securitycenter.v1.SecurityCenterClient.ListFindingsPagedResponse; +import com.google.cloud.securitycenter.v1.Source; +import com.google.cloud.securitycenter.v1.SourceName; +import com.google.protobuf.Timestamp; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.PrintStream; +import java.time.Instant; +import java.util.UUID; +import java.util.concurrent.ExecutionException; +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Assert; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.JUnit4; + +@RunWith(JUnit4.class) +public class MuteFindingIT { + + private static final String PROJECT_ID = System.getenv("GOOGLE_CLOUD_PROJECT"); + private static final String ORGANIZATION_ID = System.getenv("GCLOUD_ORGANIZATION"); + private static final String MUTE_RULE_CREATE = "random-mute-id-" + UUID.randomUUID(); + private static final String MUTE_RULE_UPDATE = "random-mute-id-" + UUID.randomUUID(); + private static Source SOURCE; + private static Finding FINDING_1; + private static Finding FINDING_2; + private static Finding FINDING_3; + + private ByteArrayOutputStream stdOut; + + // Check if the required environment variables are set. + public static void requireEnvVar(String envVarName) { + assertWithMessage(String.format("Missing environment variable '%s' ", envVarName)) + .that(System.getenv(envVarName)).isNotEmpty(); + } + + @BeforeClass + public static void setUp() throws IOException { + requireEnvVar("GOOGLE_APPLICATION_CREDENTIALS"); + requireEnvVar("GOOGLE_CLOUD_PROJECT"); + requireEnvVar("GCLOUD_ORGANIZATION"); + + // Create Mute Rules. + CreateMuteRule.createMuteRule(String.format("projects/%s", PROJECT_ID), MUTE_RULE_CREATE); + CreateMuteRule.createMuteRule(String.format("projects/%s", PROJECT_ID), MUTE_RULE_UPDATE); + // Create Source. + SOURCE = createSource(ORGANIZATION_ID); + SourceName sourceName = SourceName.of(ORGANIZATION_ID, SOURCE.getName()); + // Create Findings within the source. + FINDING_1 = createFinding(sourceName, UUID.randomUUID().toString()); + FINDING_2 = createFinding(sourceName, UUID.randomUUID().toString()); + FINDING_3 = createFinding(sourceName, UUID.randomUUID().toString()); + } + + @AfterClass + public static void cleanUp() throws IOException { + DeleteMuteRule.deleteMuteRule( + String.format("projects/%s/muteConfigs/%s", PROJECT_ID, MUTE_RULE_CREATE)); + DeleteMuteRule.deleteMuteRule( + String.format("projects/%s/muteConfigs/%s", PROJECT_ID, MUTE_RULE_UPDATE)); + } + + public static Source createSource(String organizationId) throws IOException { + try (SecurityCenterClient client = SecurityCenterClient.create()) { + + Source source = Source.newBuilder() + .setDisplayName("Custom display name") + .setDescription("A source that does X").build(); + + CreateSourceRequest createSourceRequest = CreateSourceRequest.newBuilder() + .setParent(String.format("organizations/%s", organizationId)) + .setSource(source).build(); + + return client.createSource(createSourceRequest); + } + } + + public static Finding createFinding(SourceName sourceName, String findingId) throws IOException { + try (SecurityCenterClient client = SecurityCenterClient.create()) { + + Instant eventTime = Instant.now(); + + // The resource this finding applies to. The Cloud Security Command Center UI can link + // the findings for a resource to the corresponding Asset of a resource + // if there are matches. + // TODO(Developer): Replace the below sample resource name + String resourceName = "//cloudresourcemanager.googleapis.com/organizations/00001"; + + // Start setting up a request to create a finding in a source. + Finding finding = + Finding.newBuilder() + .setParent(sourceName.toString()) + .setState(State.ACTIVE) + .setSeverity(Severity.LOW) + .setMute(Mute.UNMUTED) + .setFindingClass(FindingClass.OBSERVATION) + .setResourceName(resourceName) + .setEventTime( + Timestamp.newBuilder() + .setSeconds(eventTime.getEpochSecond()) + .setNanos(eventTime.getNano())) + .setCategory("LOW_RISK_ONE") + .build(); + + Finding response = client.createFinding(sourceName, findingId, finding); + + System.out.println("Created Finding: " + response); + return response; + } + } + + public static ListFindingsPagedResponse getAllFindings(SourceName sourceName) throws IOException { + try (SecurityCenterClient client = SecurityCenterClient.create()) { + + ListFindingsRequest request = ListFindingsRequest.newBuilder() + .setParent(sourceName.toString()).build(); + + return client.listFindings(request); + } + } + + @Before + public void beforeEach() { + stdOut = new ByteArrayOutputStream(); + System.setOut(new PrintStream(stdOut)); + } + + @After + public void afterEach() { + stdOut = null; + System.setOut(null); + } + + @Test + public void testGetMuteRule() throws IOException { + GetMuteRule.getMuteRule( + String.format("projects/%s/muteConfigs/%s", PROJECT_ID, MUTE_RULE_CREATE)); + assertThat(stdOut.toString()).contains("Retrieved the mute config: "); + assertThat(stdOut.toString()).contains(MUTE_RULE_CREATE); + } + + @Test + public void testListMuteRules() throws IOException { + ListMuteRules.listMuteRules(String.format("projects/%s", PROJECT_ID)); + assertThat(stdOut.toString()).contains(MUTE_RULE_CREATE); + assertThat(stdOut.toString()).contains(MUTE_RULE_UPDATE); + } + + @Test + public void testUpdateMuteRules() throws IOException { + UpdateMuteRule.updateMuteRule( + String.format("projects/%s/muteConfigs/%s", PROJECT_ID, MUTE_RULE_UPDATE)); + GetMuteRule.getMuteRule( + String.format("projects/%s/muteConfigs/%s", PROJECT_ID, MUTE_RULE_UPDATE)); + assertThat(stdOut.toString()).contains("Updated mute config description"); + } + + @Test + public void testSetMuteFinding() throws IOException { + SetMuteUnmuteFinding.setMute( + String.format("projects/%s/sources/%s/finding/%s", PROJECT_ID, SOURCE.getName(), + FINDING_1.getName())); + assertThat(stdOut.toString()).contains("Mute value for the finding: MUTED"); + } + + @Test + public void testBulkMuteFindings() throws IOException, ExecutionException, InterruptedException { + // Mute findings that belong to this project. + BulkMuteFindings.bulkMute(String.format("projects/%s", PROJECT_ID), + String.format("resource.project_display_name=%s", PROJECT_ID)); + // Get all findings in the source to check if they are muted. + ListFindingsPagedResponse response = getAllFindings( + SourceName.of(PROJECT_ID, SOURCE.getName())); + for (ListFindingsResult finding : response.iterateAll()) { + Assert.assertEquals(finding.getFinding().getMute(), Mute.MUTED); + } + } + +} From 78a1073d945b7e647edf77d637db730aa158a538 Mon Sep 17 00:00:00 2001 From: Owl Bot Date: Wed, 22 Dec 2021 06:53:56 +0000 Subject: [PATCH 06/25] =?UTF-8?q?=F0=9F=A6=89=20Updates=20from=20OwlBot?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md --- README.md | 10 +++++- .../snippets/muteconfig/BulkMuteFindings.java | 20 ++++++----- .../snippets/muteconfig/CreateMuteRule.java | 35 +++++++++--------- .../snippets/muteconfig/DeleteMuteRule.java | 5 ++- .../snippets/muteconfig/GetMuteRule.java | 7 ++-- .../snippets/muteconfig/ListMuteRules.java | 6 ++-- .../muteconfig/SetMuteUnmuteFinding.java | 7 ++-- .../snippets/muteconfig/UpdateMuteRule.java | 29 ++++++++------- .../snippets/MuteFindingIT.java | 36 +++++++++++-------- 9 files changed, 87 insertions(+), 68 deletions(-) diff --git a/README.md b/README.md index 604a1adc1..5bd09a475 100644 --- a/README.md +++ b/README.md @@ -30,6 +30,7 @@ If you are using Maven with [BOM][libraries-bom], add this to your pom.xml file com.google.cloud google-cloud-securitycenter + 2.3.1 @@ -54,7 +55,7 @@ If you are using Maven without BOM, add this to your dependencies: If you are using Gradle 5.x or later, add this to your dependencies ```Groovy -implementation platform('com.google.cloud:libraries-bom:24.0.0') +implementation platform('com.google.cloud:libraries-bom:24.1.0') implementation 'com.google.cloud:google-cloud-securitycenter' ``` @@ -117,6 +118,13 @@ Samples are in the [`samples/`](https://github.com/googleapis/java-securitycente | List Notification Config Snippets | [source code](https://github.com/googleapis/java-securitycenter/blob/main/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/ListNotificationConfigSnippets.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-securitycenter&page=editor&open_in_editor=samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/ListNotificationConfigSnippets.java) | | Notification Receiver | [source code](https://github.com/googleapis/java-securitycenter/blob/main/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/NotificationReceiver.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-securitycenter&page=editor&open_in_editor=samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/NotificationReceiver.java) | | Update Notification Config Snippets | [source code](https://github.com/googleapis/java-securitycenter/blob/main/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/UpdateNotificationConfigSnippets.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-securitycenter&page=editor&open_in_editor=samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/UpdateNotificationConfigSnippets.java) | +| Bulk Mute Findings | [source code](https://github.com/googleapis/java-securitycenter/blob/main/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/BulkMuteFindings.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-securitycenter&page=editor&open_in_editor=samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/BulkMuteFindings.java) | +| Create Mute Rule | [source code](https://github.com/googleapis/java-securitycenter/blob/main/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/CreateMuteRule.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-securitycenter&page=editor&open_in_editor=samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/CreateMuteRule.java) | +| Delete Mute Rule | [source code](https://github.com/googleapis/java-securitycenter/blob/main/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/DeleteMuteRule.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-securitycenter&page=editor&open_in_editor=samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/DeleteMuteRule.java) | +| Get Mute Rule | [source code](https://github.com/googleapis/java-securitycenter/blob/main/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/GetMuteRule.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-securitycenter&page=editor&open_in_editor=samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/GetMuteRule.java) | +| List Mute Rules | [source code](https://github.com/googleapis/java-securitycenter/blob/main/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/ListMuteRules.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-securitycenter&page=editor&open_in_editor=samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/ListMuteRules.java) | +| Set Mute Unmute Finding | [source code](https://github.com/googleapis/java-securitycenter/blob/main/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/SetMuteUnmuteFinding.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-securitycenter&page=editor&open_in_editor=samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/SetMuteUnmuteFinding.java) | +| Update Mute Rule | [source code](https://github.com/googleapis/java-securitycenter/blob/main/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/UpdateMuteRule.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-securitycenter&page=editor&open_in_editor=samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/UpdateMuteRule.java) | diff --git a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/BulkMuteFindings.java b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/BulkMuteFindings.java index b131609ec..fe4f25f55 100644 --- a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/BulkMuteFindings.java +++ b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/BulkMuteFindings.java @@ -46,16 +46,18 @@ public static void bulkMute(String parentPath, String muteRule) throws IOException, ExecutionException, InterruptedException { try (SecurityCenterClient client = SecurityCenterClient.create()) { - BulkMuteFindingsRequest bulkMuteFindingsRequest = BulkMuteFindingsRequest.newBuilder() - .setParent(parentPath) - // To create mute rules, see: - // https://cloud.google.com/security-command-center/docs/how-to-mute-findings#create_mute_rules - .setFilter(muteRule).build(); - - BulkMuteFindingsResponse response = client.bulkMuteFindingsAsync(bulkMuteFindingsRequest) - .get(); + BulkMuteFindingsRequest bulkMuteFindingsRequest = + BulkMuteFindingsRequest.newBuilder() + .setParent(parentPath) + // To create mute rules, see: + // https://cloud.google.com/security-command-center/docs/how-to-mute-findings#create_mute_rules + .setFilter(muteRule) + .build(); + + BulkMuteFindingsResponse response = + client.bulkMuteFindingsAsync(bulkMuteFindingsRequest).get(); System.out.println("Bulk mute findings completed successfully ! " + response); } } } -// [END securitycenter_bulk_mute] \ No newline at end of file +// [END securitycenter_bulk_mute] diff --git a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/CreateMuteRule.java b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/CreateMuteRule.java index 47d65e146..877a6f780 100644 --- a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/CreateMuteRule.java +++ b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/CreateMuteRule.java @@ -43,26 +43,29 @@ public static void main(String[] args) throws IOException { public static void createMuteRule(String parentPath, String muteConfigId) throws IOException { try (SecurityCenterClient client = SecurityCenterClient.create()) { - MuteConfig muteConfig = MuteConfig.newBuilder() - .setDescription("Mute low-medium IAM grants excluding 'compute' ") - // Set mute rule(s). - // To construct mute rules and for supported properties, see: - // https://cloud.google.com/security-command-center/docs/how-to-mute-findings#console_3 - .setFilter( - "severity=\"LOW\" OR severity=\"MEDIUM\" AND " - + "category=\"Persistence: IAM Anomalous Grant\" AND " - + "-resource.type:\"compute\"") - .build(); + MuteConfig muteConfig = + MuteConfig.newBuilder() + .setDescription("Mute low-medium IAM grants excluding 'compute' ") + // Set mute rule(s). + // To construct mute rules and for supported properties, see: + // https://cloud.google.com/security-command-center/docs/how-to-mute-findings#console_3 + .setFilter( + "severity=\"LOW\" OR severity=\"MEDIUM\" AND " + + "category=\"Persistence: IAM Anomalous Grant\" AND " + + "-resource.type:\"compute\"") + .build(); - CreateMuteConfigRequest request = CreateMuteConfigRequest.newBuilder() - .setParent(parentPath) - // Set a random id; max of 63 chars. - .setMuteConfigId(muteConfigId) - .setMuteConfig(muteConfig).build(); + CreateMuteConfigRequest request = + CreateMuteConfigRequest.newBuilder() + .setParent(parentPath) + // Set a random id; max of 63 chars. + .setMuteConfigId(muteConfigId) + .setMuteConfig(muteConfig) + .build(); MuteConfig response = client.createMuteConfig(request); System.out.println("Mute Config Rule created successfully: " + response.getName()); } } } -// [END securitycenter_create_mute_config] \ No newline at end of file +// [END securitycenter_create_mute_config] diff --git a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/DeleteMuteRule.java b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/DeleteMuteRule.java index aa87d011c..bc18b5743 100644 --- a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/DeleteMuteRule.java +++ b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/DeleteMuteRule.java @@ -41,11 +41,10 @@ public static void main(String[] args) throws IOException { public static void deleteMuteRule(String muteConfigName) throws IOException { try (SecurityCenterClient client = SecurityCenterClient.create()) { - client.deleteMuteConfig(MuteConfigName.newBuilder() - .setMuteConfig(muteConfigName).build()); + client.deleteMuteConfig(MuteConfigName.newBuilder().setMuteConfig(muteConfigName).build()); System.out.println("Mute Config Rule deleted successfully: " + muteConfigName); } } } -// [END securitycenter_delete_mute_config] \ No newline at end of file +// [END securitycenter_delete_mute_config] diff --git a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/GetMuteRule.java b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/GetMuteRule.java index 17560a10f..cb7c8b675 100644 --- a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/GetMuteRule.java +++ b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/GetMuteRule.java @@ -40,12 +40,11 @@ public static void main(String[] args) throws IOException { public static void getMuteRule(String muteConfigName) throws IOException { try (SecurityCenterClient client = SecurityCenterClient.create()) { - MuteConfig muteConfig = client.getMuteConfig(MuteConfigName.newBuilder() - .setMuteConfig(muteConfigName).build()); + MuteConfig muteConfig = + client.getMuteConfig(MuteConfigName.newBuilder().setMuteConfig(muteConfigName).build()); System.out.println("Retrieved the mute config: " + muteConfig); } } - } -// [END securitycenter_get_mute_config] \ No newline at end of file +// [END securitycenter_get_mute_config] diff --git a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/ListMuteRules.java b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/ListMuteRules.java index 199a159aa..635bbafa9 100644 --- a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/ListMuteRules.java +++ b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/ListMuteRules.java @@ -42,8 +42,8 @@ public static void main(String[] args) throws IOException { public static void listMuteRules(String parent) throws IOException { try (SecurityCenterClient client = SecurityCenterClient.create()) { - ListMuteConfigsRequest listMuteConfigsRequest = ListMuteConfigsRequest.newBuilder() - .setParent(parent).build(); + ListMuteConfigsRequest listMuteConfigsRequest = + ListMuteConfigsRequest.newBuilder().setParent(parent).build(); // List all Mute Configs present in the resource. for (MuteConfig muteConfig : client.listMuteConfigs(listMuteConfigsRequest).iterateAll()) { @@ -52,4 +52,4 @@ public static void listMuteRules(String parent) throws IOException { } } } -// [END securitycenter_list_mute_configs] \ No newline at end of file +// [END securitycenter_list_mute_configs] diff --git a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/SetMuteUnmuteFinding.java b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/SetMuteUnmuteFinding.java index 27880d4d1..e010dd81c 100644 --- a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/SetMuteUnmuteFinding.java +++ b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/SetMuteUnmuteFinding.java @@ -44,13 +44,12 @@ public static void main(String[] args) throws IOException { public static void setMute(String findingPath) throws IOException { try (SecurityCenterClient client = SecurityCenterClient.create()) { - SetMuteRequest setMuteRequest = SetMuteRequest.newBuilder() - .setName(findingPath) - .setMute(Mute.MUTED).build(); + SetMuteRequest setMuteRequest = + SetMuteRequest.newBuilder().setName(findingPath).setMute(Mute.MUTED).build(); Finding finding = client.setMute(setMuteRequest); System.out.println("Mute value for the finding: " + finding.getMute()); } } } -// [END securitycenter_set_mute_unmute] \ No newline at end of file +// [END securitycenter_set_mute_unmute] diff --git a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/UpdateMuteRule.java b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/UpdateMuteRule.java index bb9cb3ef1..2c234c038 100644 --- a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/UpdateMuteRule.java +++ b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/UpdateMuteRule.java @@ -42,24 +42,27 @@ public static void main(String[] args) throws IOException { public static void updateMuteRule(String muteConfigName) throws IOException { try (SecurityCenterClient securityCenterClient = SecurityCenterClient.create()) { - MuteConfig updateMuteConfig = MuteConfig.newBuilder() - .setName(muteConfigName) - .setDescription("Updated mute config description").build(); + MuteConfig updateMuteConfig = + MuteConfig.newBuilder() + .setName(muteConfigName) + .setDescription("Updated mute config description") + .build(); - UpdateMuteConfigRequest updateMuteConfigRequest = UpdateMuteConfigRequest.newBuilder() - .setMuteConfig(updateMuteConfig) - // Set the update mask to specify which properties of the Mute Config should be updated. - // If empty all mutable fields will be updated. - // Make sure that the mask fields match the properties changed in 'updateMuteConfig'. - // For more info on constructing update mask path, see the proto or: - // https://cloud.google.com/security-command-center/docs/reference/rest/v1/folders.muteConfigs/patch?hl=en#query-parameters - .setUpdateMask(FieldMask.newBuilder().addPaths("mute_config.description").build()) - .build(); + UpdateMuteConfigRequest updateMuteConfigRequest = + UpdateMuteConfigRequest.newBuilder() + .setMuteConfig(updateMuteConfig) + // Set the update mask to specify which properties of the Mute Config should be + // updated. + // If empty all mutable fields will be updated. + // Make sure that the mask fields match the properties changed in 'updateMuteConfig'. + // For more info on constructing update mask path, see the proto or: + // https://cloud.google.com/security-command-center/docs/reference/rest/v1/folders.muteConfigs/patch?hl=en#query-parameters + .setUpdateMask(FieldMask.newBuilder().addPaths("mute_config.description").build()) + .build(); MuteConfig response = securityCenterClient.updateMuteConfig(updateMuteConfigRequest); System.out.println(response); } } - } // [END securitycenter_update_mute_config] diff --git a/samples/snippets/src/test/java/com/google/cloud/examples/securitycenter/snippets/MuteFindingIT.java b/samples/snippets/src/test/java/com/google/cloud/examples/securitycenter/snippets/MuteFindingIT.java index d2b9394d6..dbfe18009 100644 --- a/samples/snippets/src/test/java/com/google/cloud/examples/securitycenter/snippets/MuteFindingIT.java +++ b/samples/snippets/src/test/java/com/google/cloud/examples/securitycenter/snippets/MuteFindingIT.java @@ -71,7 +71,8 @@ public class MuteFindingIT { // Check if the required environment variables are set. public static void requireEnvVar(String envVarName) { assertWithMessage(String.format("Missing environment variable '%s' ", envVarName)) - .that(System.getenv(envVarName)).isNotEmpty(); + .that(System.getenv(envVarName)) + .isNotEmpty(); } @BeforeClass @@ -103,13 +104,17 @@ public static void cleanUp() throws IOException { public static Source createSource(String organizationId) throws IOException { try (SecurityCenterClient client = SecurityCenterClient.create()) { - Source source = Source.newBuilder() - .setDisplayName("Custom display name") - .setDescription("A source that does X").build(); + Source source = + Source.newBuilder() + .setDisplayName("Custom display name") + .setDescription("A source that does X") + .build(); - CreateSourceRequest createSourceRequest = CreateSourceRequest.newBuilder() - .setParent(String.format("organizations/%s", organizationId)) - .setSource(source).build(); + CreateSourceRequest createSourceRequest = + CreateSourceRequest.newBuilder() + .setParent(String.format("organizations/%s", organizationId)) + .setSource(source) + .build(); return client.createSource(createSourceRequest); } @@ -152,8 +157,8 @@ public static Finding createFinding(SourceName sourceName, String findingId) thr public static ListFindingsPagedResponse getAllFindings(SourceName sourceName) throws IOException { try (SecurityCenterClient client = SecurityCenterClient.create()) { - ListFindingsRequest request = ListFindingsRequest.newBuilder() - .setParent(sourceName.toString()).build(); + ListFindingsRequest request = + ListFindingsRequest.newBuilder().setParent(sourceName.toString()).build(); return client.listFindings(request); } @@ -198,22 +203,23 @@ public void testUpdateMuteRules() throws IOException { @Test public void testSetMuteFinding() throws IOException { SetMuteUnmuteFinding.setMute( - String.format("projects/%s/sources/%s/finding/%s", PROJECT_ID, SOURCE.getName(), - FINDING_1.getName())); + String.format( + "projects/%s/sources/%s/finding/%s", + PROJECT_ID, SOURCE.getName(), FINDING_1.getName())); assertThat(stdOut.toString()).contains("Mute value for the finding: MUTED"); } @Test public void testBulkMuteFindings() throws IOException, ExecutionException, InterruptedException { // Mute findings that belong to this project. - BulkMuteFindings.bulkMute(String.format("projects/%s", PROJECT_ID), + BulkMuteFindings.bulkMute( + String.format("projects/%s", PROJECT_ID), String.format("resource.project_display_name=%s", PROJECT_ID)); // Get all findings in the source to check if they are muted. - ListFindingsPagedResponse response = getAllFindings( - SourceName.of(PROJECT_ID, SOURCE.getName())); + ListFindingsPagedResponse response = + getAllFindings(SourceName.of(PROJECT_ID, SOURCE.getName())); for (ListFindingsResult finding : response.iterateAll()) { Assert.assertEquals(finding.getFinding().getMute(), Mute.MUTED); } } - } From be3f0705852af1b41789d183fa8afc95a9459a08 Mon Sep 17 00:00:00 2001 From: SitaLakshmi Date: Tue, 1 Feb 2022 15:08:18 +0530 Subject: [PATCH 07/25] docs(samples): updated samples and test files --- .../snippets/muteconfig/BulkMuteFindings.java | 3 +- .../snippets/muteconfig/CreateMuteRule.java | 3 +- .../snippets/muteconfig/DeleteMuteRule.java | 28 ++++---- .../snippets/muteconfig/GetMuteRule.java | 26 +++---- .../snippets/muteconfig/ListMuteRules.java | 3 +- .../muteconfig/SetMuteUnmuteFinding.java | 3 +- .../snippets/muteconfig/UpdateMuteRule.java | 10 ++- .../snippets/MuteFindingIT.java | 70 +++++++++++-------- 8 files changed, 81 insertions(+), 65 deletions(-) diff --git a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/BulkMuteFindings.java b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/BulkMuteFindings.java index b131609ec..4cdba48e9 100644 --- a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/BulkMuteFindings.java +++ b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/BulkMuteFindings.java @@ -50,7 +50,8 @@ public static void bulkMute(String parentPath, String muteRule) .setParent(parentPath) // To create mute rules, see: // https://cloud.google.com/security-command-center/docs/how-to-mute-findings#create_mute_rules - .setFilter(muteRule).build(); + .setFilter(muteRule) + .build(); BulkMuteFindingsResponse response = client.bulkMuteFindingsAsync(bulkMuteFindingsRequest) .get(); diff --git a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/CreateMuteRule.java b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/CreateMuteRule.java index 47d65e146..d1c1be487 100644 --- a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/CreateMuteRule.java +++ b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/CreateMuteRule.java @@ -58,7 +58,8 @@ public static void createMuteRule(String parentPath, String muteConfigId) throws .setParent(parentPath) // Set a random id; max of 63 chars. .setMuteConfigId(muteConfigId) - .setMuteConfig(muteConfig).build(); + .setMuteConfig(muteConfig) + .build(); MuteConfig response = client.createMuteConfig(request); System.out.println("Mute Config Rule created successfully: " + response.getName()); diff --git a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/DeleteMuteRule.java b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/DeleteMuteRule.java index aa87d011c..85f6a0b51 100644 --- a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/DeleteMuteRule.java +++ b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/DeleteMuteRule.java @@ -1,5 +1,5 @@ /* - * Copyright 2021 Google LLC + * Copyright 2022 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -25,26 +25,24 @@ public class DeleteMuteRule { public static void main(String[] args) throws IOException { - // Specify the name of the mute config to delete. - // Its format is: - // organizations/{organization}/muteConfigs/{config_id} or - // folders/{folder}/muteConfigs/{config_id} or - // projects/{project}/muteConfigs/{config_id} - // TODO: Replace the variables within {} - String muteConfigName = "{any-one-of-the-above-formats}"; - - deleteMuteRule(muteConfigName); + // muteConfigId: Specify the name of the mute config to delete. + // TODO(Developer): Replace the below variables + String parentPath = "{project-id | folder | organization}"; + String muteConfigId = "{any-one-of-the-above-formats}"; + deleteMuteRule(parentPath, muteConfigId); } // Deletes a mute configuration given its resource name. // Note: Already muted findings are not affected when a mute config is deleted. - public static void deleteMuteRule(String muteConfigName) throws IOException { + public static void deleteMuteRule(String projectId, String muteConfigId) throws IOException { try (SecurityCenterClient client = SecurityCenterClient.create()) { + // Use appropriate MuteConfigName methods depending upon the type of parent. + // (org -> MuteConfigName.ofOrganizationMuteConfigName() + // folder -> MuteConfigName.ofFolderMuteConfigName() + // project -> MuteConfigName.ofProjectMuteConfigName) + client.deleteMuteConfig(MuteConfigName.ofProjectMuteConfigName(projectId, muteConfigId)); - client.deleteMuteConfig(MuteConfigName.newBuilder() - .setMuteConfig(muteConfigName).build()); - - System.out.println("Mute Config Rule deleted successfully: " + muteConfigName); + System.out.println("Mute Config Rule deleted successfully: " + muteConfigId); } } } diff --git a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/GetMuteRule.java b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/GetMuteRule.java index 17560a10f..3e3e1d6e8 100644 --- a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/GetMuteRule.java +++ b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/GetMuteRule.java @@ -1,5 +1,5 @@ /* - * Copyright 2021 Google LLC + * Copyright 2022 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -26,22 +26,22 @@ public class GetMuteRule { public static void main(String[] args) throws IOException { - // Name of the mute config to retrieve. - // Its format is: - // organizations/{organization}/muteConfigs/{config_id} or - // folders/{folder}/muteConfigs/{config_id} or - // projects/{project}/muteConfigs/{config_id} - // TODO: Replace the variables within {} - String muteConfigName = "{any-one-of-the-above-formats}"; - getMuteRule(muteConfigName); + // muteConfigId: Name of the mute config to retrieve. + // TODO(Developer): Replace the below variables + String parentPath = "{project-id | folder | organization}"; + String muteConfigId = "{any-one-of-the-above-formats}"; + getMuteRule(parentPath, muteConfigId); } // Retrieves mute configuration given its resource name. - public static void getMuteRule(String muteConfigName) throws IOException { + public static void getMuteRule(String projectId, String muteConfigId) throws IOException { try (SecurityCenterClient client = SecurityCenterClient.create()) { - - MuteConfig muteConfig = client.getMuteConfig(MuteConfigName.newBuilder() - .setMuteConfig(muteConfigName).build()); + // Use appropriate MuteConfigName methods depending upon the type of parent. + // (org -> MuteConfigName.ofOrganizationMuteConfigName() + // folder -> MuteConfigName.ofFolderMuteConfigName() + // project -> MuteConfigName.ofProjectMuteConfigName) + MuteConfig muteConfig = client.getMuteConfig( + MuteConfigName.ofProjectMuteConfigName(projectId, muteConfigId)); System.out.println("Retrieved the mute config: " + muteConfig); } diff --git a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/ListMuteRules.java b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/ListMuteRules.java index 199a159aa..37f8245cf 100644 --- a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/ListMuteRules.java +++ b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/ListMuteRules.java @@ -43,7 +43,8 @@ public static void listMuteRules(String parent) throws IOException { try (SecurityCenterClient client = SecurityCenterClient.create()) { ListMuteConfigsRequest listMuteConfigsRequest = ListMuteConfigsRequest.newBuilder() - .setParent(parent).build(); + .setParent(parent) + .build(); // List all Mute Configs present in the resource. for (MuteConfig muteConfig : client.listMuteConfigs(listMuteConfigsRequest).iterateAll()) { diff --git a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/SetMuteUnmuteFinding.java b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/SetMuteUnmuteFinding.java index 27880d4d1..a36bb945a 100644 --- a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/SetMuteUnmuteFinding.java +++ b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/SetMuteUnmuteFinding.java @@ -46,7 +46,8 @@ public static void setMute(String findingPath) throws IOException { SetMuteRequest setMuteRequest = SetMuteRequest.newBuilder() .setName(findingPath) - .setMute(Mute.MUTED).build(); + .setMute(Mute.MUTED) + .build(); Finding finding = client.setMute(setMuteRequest); System.out.println("Mute value for the finding: " + finding.getMute()); diff --git a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/UpdateMuteRule.java b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/UpdateMuteRule.java index bb9cb3ef1..7e5c2ee0a 100644 --- a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/UpdateMuteRule.java +++ b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/UpdateMuteRule.java @@ -1,5 +1,5 @@ /* - * Copyright 2021 Google LLC + * Copyright 2022 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -44,7 +44,8 @@ public static void updateMuteRule(String muteConfigName) throws IOException { MuteConfig updateMuteConfig = MuteConfig.newBuilder() .setName(muteConfigName) - .setDescription("Updated mute config description").build(); + .setDescription("Updated mute config description") + .build(); UpdateMuteConfigRequest updateMuteConfigRequest = UpdateMuteConfigRequest.newBuilder() .setMuteConfig(updateMuteConfig) @@ -53,7 +54,10 @@ public static void updateMuteRule(String muteConfigName) throws IOException { // Make sure that the mask fields match the properties changed in 'updateMuteConfig'. // For more info on constructing update mask path, see the proto or: // https://cloud.google.com/security-command-center/docs/reference/rest/v1/folders.muteConfigs/patch?hl=en#query-parameters - .setUpdateMask(FieldMask.newBuilder().addPaths("mute_config.description").build()) + .setUpdateMask( + FieldMask.newBuilder() + .addPaths("description") + .build()) .build(); MuteConfig response = securityCenterClient.updateMuteConfig(updateMuteConfigRequest); diff --git a/samples/snippets/src/test/java/com/google/cloud/examples/securitycenter/snippets/MuteFindingIT.java b/samples/snippets/src/test/java/com/google/cloud/examples/securitycenter/snippets/MuteFindingIT.java index d2b9394d6..64b989df7 100644 --- a/samples/snippets/src/test/java/com/google/cloud/examples/securitycenter/snippets/MuteFindingIT.java +++ b/samples/snippets/src/test/java/com/google/cloud/examples/securitycenter/snippets/MuteFindingIT.java @@ -1,5 +1,5 @@ /* - * Copyright 2021 Google LLC + * Copyright 2022 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -37,7 +37,6 @@ import com.google.cloud.securitycenter.v1.SecurityCenterClient; import com.google.cloud.securitycenter.v1.SecurityCenterClient.ListFindingsPagedResponse; import com.google.cloud.securitycenter.v1.Source; -import com.google.cloud.securitycenter.v1.SourceName; import com.google.protobuf.Timestamp; import java.io.ByteArrayOutputStream; import java.io.IOException; @@ -57,16 +56,19 @@ @RunWith(JUnit4.class) public class MuteFindingIT { - private static final String PROJECT_ID = System.getenv("GOOGLE_CLOUD_PROJECT"); - private static final String ORGANIZATION_ID = System.getenv("GCLOUD_ORGANIZATION"); + // TODO(Developer): Replace the below variables. + private static final String PROJECT_ID = getProject(); + private static final String ORGANIZATION_ID = getOrganizationId(); + private static final String MUTE_RULE_CREATE = "random-mute-id-" + UUID.randomUUID(); private static final String MUTE_RULE_UPDATE = "random-mute-id-" + UUID.randomUUID(); private static Source SOURCE; + // The findings will be used to test bulk mute. private static Finding FINDING_1; private static Finding FINDING_2; private static Finding FINDING_3; - private ByteArrayOutputStream stdOut; + private static ByteArrayOutputStream stdOut; // Check if the required environment variables are set. public static void requireEnvVar(String envVarName) { @@ -77,27 +79,28 @@ public static void requireEnvVar(String envVarName) { @BeforeClass public static void setUp() throws IOException { requireEnvVar("GOOGLE_APPLICATION_CREDENTIALS"); - requireEnvVar("GOOGLE_CLOUD_PROJECT"); - requireEnvVar("GCLOUD_ORGANIZATION"); // Create Mute Rules. CreateMuteRule.createMuteRule(String.format("projects/%s", PROJECT_ID), MUTE_RULE_CREATE); CreateMuteRule.createMuteRule(String.format("projects/%s", PROJECT_ID), MUTE_RULE_UPDATE); // Create Source. SOURCE = createSource(ORGANIZATION_ID); - SourceName sourceName = SourceName.of(ORGANIZATION_ID, SOURCE.getName()); // Create Findings within the source. - FINDING_1 = createFinding(sourceName, UUID.randomUUID().toString()); - FINDING_2 = createFinding(sourceName, UUID.randomUUID().toString()); - FINDING_3 = createFinding(sourceName, UUID.randomUUID().toString()); + String uuid = UUID.randomUUID().toString().split("-")[0]; + FINDING_1 = createFinding(SOURCE.getName(), "1testingscc" + uuid); + FINDING_2 = createFinding(SOURCE.getName(), "2testingscc" + uuid); + FINDING_3 = createFinding(SOURCE.getName(), "3testingscc" + uuid); } @AfterClass public static void cleanUp() throws IOException { - DeleteMuteRule.deleteMuteRule( - String.format("projects/%s/muteConfigs/%s", PROJECT_ID, MUTE_RULE_CREATE)); - DeleteMuteRule.deleteMuteRule( - String.format("projects/%s/muteConfigs/%s", PROJECT_ID, MUTE_RULE_UPDATE)); + PrintStream out = System.out; + stdOut = new ByteArrayOutputStream(); + System.setOut(new PrintStream(stdOut)); + DeleteMuteRule.deleteMuteRule(PROJECT_ID, MUTE_RULE_CREATE); + DeleteMuteRule.deleteMuteRule(PROJECT_ID, MUTE_RULE_UPDATE); + stdOut = null; + System.setOut(out); } public static Source createSource(String organizationId) throws IOException { @@ -111,11 +114,13 @@ public static Source createSource(String organizationId) throws IOException { .setParent(String.format("organizations/%s", organizationId)) .setSource(source).build(); - return client.createSource(createSourceRequest); + Source response = client.createSource(createSourceRequest); + System.out.println("Created source : " + response.getName()); + return response; } } - public static Finding createFinding(SourceName sourceName, String findingId) throws IOException { + public static Finding createFinding(String sourceName, String findingId) throws IOException { try (SecurityCenterClient client = SecurityCenterClient.create()) { Instant eventTime = Instant.now(); @@ -124,12 +129,12 @@ public static Finding createFinding(SourceName sourceName, String findingId) thr // the findings for a resource to the corresponding Asset of a resource // if there are matches. // TODO(Developer): Replace the below sample resource name - String resourceName = "//cloudresourcemanager.googleapis.com/organizations/00001"; + String resourceName = "//cloudresourcemanager.googleapis.com/organizations/11232"; // Start setting up a request to create a finding in a source. Finding finding = Finding.newBuilder() - .setParent(sourceName.toString()) + .setParent(sourceName) .setState(State.ACTIVE) .setSeverity(Severity.LOW) .setMute(Mute.UNMUTED) @@ -149,16 +154,24 @@ public static Finding createFinding(SourceName sourceName, String findingId) thr } } - public static ListFindingsPagedResponse getAllFindings(SourceName sourceName) throws IOException { + public static ListFindingsPagedResponse getAllFindings(String sourceName) throws IOException { try (SecurityCenterClient client = SecurityCenterClient.create()) { ListFindingsRequest request = ListFindingsRequest.newBuilder() - .setParent(sourceName.toString()).build(); + .setParent(sourceName).build(); return client.listFindings(request); } } + private static String getOrganizationId() { + return "1081635000895"; + } + + private static String getProject() { + return "project-a-id"; + } + @Before public void beforeEach() { stdOut = new ByteArrayOutputStream(); @@ -173,8 +186,7 @@ public void afterEach() { @Test public void testGetMuteRule() throws IOException { - GetMuteRule.getMuteRule( - String.format("projects/%s/muteConfigs/%s", PROJECT_ID, MUTE_RULE_CREATE)); + GetMuteRule.getMuteRule(PROJECT_ID, MUTE_RULE_CREATE); assertThat(stdOut.toString()).contains("Retrieved the mute config: "); assertThat(stdOut.toString()).contains(MUTE_RULE_CREATE); } @@ -190,16 +202,13 @@ public void testListMuteRules() throws IOException { public void testUpdateMuteRules() throws IOException { UpdateMuteRule.updateMuteRule( String.format("projects/%s/muteConfigs/%s", PROJECT_ID, MUTE_RULE_UPDATE)); - GetMuteRule.getMuteRule( - String.format("projects/%s/muteConfigs/%s", PROJECT_ID, MUTE_RULE_UPDATE)); + GetMuteRule.getMuteRule(PROJECT_ID, MUTE_RULE_UPDATE); assertThat(stdOut.toString()).contains("Updated mute config description"); } @Test public void testSetMuteFinding() throws IOException { - SetMuteUnmuteFinding.setMute( - String.format("projects/%s/sources/%s/finding/%s", PROJECT_ID, SOURCE.getName(), - FINDING_1.getName())); + SetMuteUnmuteFinding.setMute(FINDING_1.getName()); assertThat(stdOut.toString()).contains("Mute value for the finding: MUTED"); } @@ -207,10 +216,11 @@ public void testSetMuteFinding() throws IOException { public void testBulkMuteFindings() throws IOException, ExecutionException, InterruptedException { // Mute findings that belong to this project. BulkMuteFindings.bulkMute(String.format("projects/%s", PROJECT_ID), - String.format("resource.project_display_name=%s", PROJECT_ID)); + String.format("resource.project_display_name=\"%s\"", PROJECT_ID)); + // Get all findings in the source to check if they are muted. ListFindingsPagedResponse response = getAllFindings( - SourceName.of(PROJECT_ID, SOURCE.getName())); + String.format("projects/%s/sources/%s", PROJECT_ID, SOURCE.getName().split("/")[3])); for (ListFindingsResult finding : response.iterateAll()) { Assert.assertEquals(finding.getFinding().getMute(), Mute.MUTED); } From a1eaeaf7f474a19d1ddf669666e53b8aef0b2c7d Mon Sep 17 00:00:00 2001 From: Owl Bot Date: Tue, 1 Feb 2022 09:43:03 +0000 Subject: [PATCH 08/25] =?UTF-8?q?=F0=9F=A6=89=20Updates=20from=20OwlBot?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md --- README.md | 6 ++-- .../snippets/muteconfig/BulkMuteFindings.java | 21 +++++------ .../snippets/muteconfig/CreateMuteRule.java | 36 ++++++++++--------- .../snippets/muteconfig/DeleteMuteRule.java | 2 +- .../snippets/muteconfig/GetMuteRule.java | 7 ++-- .../snippets/muteconfig/ListMuteRules.java | 7 ++-- .../muteconfig/SetMuteUnmuteFinding.java | 8 ++--- .../snippets/muteconfig/UpdateMuteRule.java | 33 +++++++++-------- .../snippets/MuteFindingIT.java | 31 +++++++++------- 9 files changed, 77 insertions(+), 74 deletions(-) diff --git a/README.md b/README.md index 5bd09a475..efb0c665c 100644 --- a/README.md +++ b/README.md @@ -55,20 +55,20 @@ If you are using Maven without BOM, add this to your dependencies: If you are using Gradle 5.x or later, add this to your dependencies ```Groovy -implementation platform('com.google.cloud:libraries-bom:24.1.0') +implementation platform('com.google.cloud:libraries-bom:24.2.0') implementation 'com.google.cloud:google-cloud-securitycenter' ``` If you are using Gradle without BOM, add this to your dependencies ```Groovy -implementation 'com.google.cloud:google-cloud-securitycenter:2.3.1' +implementation 'com.google.cloud:google-cloud-securitycenter:2.3.2' ``` If you are using SBT, add this to your dependencies ```Scala -libraryDependencies += "com.google.cloud" % "google-cloud-securitycenter" % "2.3.1" +libraryDependencies += "com.google.cloud" % "google-cloud-securitycenter" % "2.3.2" ``` ## Authentication diff --git a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/BulkMuteFindings.java b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/BulkMuteFindings.java index 4cdba48e9..fe4f25f55 100644 --- a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/BulkMuteFindings.java +++ b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/BulkMuteFindings.java @@ -46,17 +46,18 @@ public static void bulkMute(String parentPath, String muteRule) throws IOException, ExecutionException, InterruptedException { try (SecurityCenterClient client = SecurityCenterClient.create()) { - BulkMuteFindingsRequest bulkMuteFindingsRequest = BulkMuteFindingsRequest.newBuilder() - .setParent(parentPath) - // To create mute rules, see: - // https://cloud.google.com/security-command-center/docs/how-to-mute-findings#create_mute_rules - .setFilter(muteRule) - .build(); - - BulkMuteFindingsResponse response = client.bulkMuteFindingsAsync(bulkMuteFindingsRequest) - .get(); + BulkMuteFindingsRequest bulkMuteFindingsRequest = + BulkMuteFindingsRequest.newBuilder() + .setParent(parentPath) + // To create mute rules, see: + // https://cloud.google.com/security-command-center/docs/how-to-mute-findings#create_mute_rules + .setFilter(muteRule) + .build(); + + BulkMuteFindingsResponse response = + client.bulkMuteFindingsAsync(bulkMuteFindingsRequest).get(); System.out.println("Bulk mute findings completed successfully ! " + response); } } } -// [END securitycenter_bulk_mute] \ No newline at end of file +// [END securitycenter_bulk_mute] diff --git a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/CreateMuteRule.java b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/CreateMuteRule.java index d1c1be487..877a6f780 100644 --- a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/CreateMuteRule.java +++ b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/CreateMuteRule.java @@ -43,27 +43,29 @@ public static void main(String[] args) throws IOException { public static void createMuteRule(String parentPath, String muteConfigId) throws IOException { try (SecurityCenterClient client = SecurityCenterClient.create()) { - MuteConfig muteConfig = MuteConfig.newBuilder() - .setDescription("Mute low-medium IAM grants excluding 'compute' ") - // Set mute rule(s). - // To construct mute rules and for supported properties, see: - // https://cloud.google.com/security-command-center/docs/how-to-mute-findings#console_3 - .setFilter( - "severity=\"LOW\" OR severity=\"MEDIUM\" AND " - + "category=\"Persistence: IAM Anomalous Grant\" AND " - + "-resource.type:\"compute\"") - .build(); + MuteConfig muteConfig = + MuteConfig.newBuilder() + .setDescription("Mute low-medium IAM grants excluding 'compute' ") + // Set mute rule(s). + // To construct mute rules and for supported properties, see: + // https://cloud.google.com/security-command-center/docs/how-to-mute-findings#console_3 + .setFilter( + "severity=\"LOW\" OR severity=\"MEDIUM\" AND " + + "category=\"Persistence: IAM Anomalous Grant\" AND " + + "-resource.type:\"compute\"") + .build(); - CreateMuteConfigRequest request = CreateMuteConfigRequest.newBuilder() - .setParent(parentPath) - // Set a random id; max of 63 chars. - .setMuteConfigId(muteConfigId) - .setMuteConfig(muteConfig) - .build(); + CreateMuteConfigRequest request = + CreateMuteConfigRequest.newBuilder() + .setParent(parentPath) + // Set a random id; max of 63 chars. + .setMuteConfigId(muteConfigId) + .setMuteConfig(muteConfig) + .build(); MuteConfig response = client.createMuteConfig(request); System.out.println("Mute Config Rule created successfully: " + response.getName()); } } } -// [END securitycenter_create_mute_config] \ No newline at end of file +// [END securitycenter_create_mute_config] diff --git a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/DeleteMuteRule.java b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/DeleteMuteRule.java index 85f6a0b51..f718637c3 100644 --- a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/DeleteMuteRule.java +++ b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/DeleteMuteRule.java @@ -46,4 +46,4 @@ public static void deleteMuteRule(String projectId, String muteConfigId) throws } } } -// [END securitycenter_delete_mute_config] \ No newline at end of file +// [END securitycenter_delete_mute_config] diff --git a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/GetMuteRule.java b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/GetMuteRule.java index 3e3e1d6e8..ac1be21e1 100644 --- a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/GetMuteRule.java +++ b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/GetMuteRule.java @@ -40,12 +40,11 @@ public static void getMuteRule(String projectId, String muteConfigId) throws IOE // (org -> MuteConfigName.ofOrganizationMuteConfigName() // folder -> MuteConfigName.ofFolderMuteConfigName() // project -> MuteConfigName.ofProjectMuteConfigName) - MuteConfig muteConfig = client.getMuteConfig( - MuteConfigName.ofProjectMuteConfigName(projectId, muteConfigId)); + MuteConfig muteConfig = + client.getMuteConfig(MuteConfigName.ofProjectMuteConfigName(projectId, muteConfigId)); System.out.println("Retrieved the mute config: " + muteConfig); } } - } -// [END securitycenter_get_mute_config] \ No newline at end of file +// [END securitycenter_get_mute_config] diff --git a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/ListMuteRules.java b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/ListMuteRules.java index 37f8245cf..635bbafa9 100644 --- a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/ListMuteRules.java +++ b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/ListMuteRules.java @@ -42,9 +42,8 @@ public static void main(String[] args) throws IOException { public static void listMuteRules(String parent) throws IOException { try (SecurityCenterClient client = SecurityCenterClient.create()) { - ListMuteConfigsRequest listMuteConfigsRequest = ListMuteConfigsRequest.newBuilder() - .setParent(parent) - .build(); + ListMuteConfigsRequest listMuteConfigsRequest = + ListMuteConfigsRequest.newBuilder().setParent(parent).build(); // List all Mute Configs present in the resource. for (MuteConfig muteConfig : client.listMuteConfigs(listMuteConfigsRequest).iterateAll()) { @@ -53,4 +52,4 @@ public static void listMuteRules(String parent) throws IOException { } } } -// [END securitycenter_list_mute_configs] \ No newline at end of file +// [END securitycenter_list_mute_configs] diff --git a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/SetMuteUnmuteFinding.java b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/SetMuteUnmuteFinding.java index a36bb945a..e010dd81c 100644 --- a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/SetMuteUnmuteFinding.java +++ b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/SetMuteUnmuteFinding.java @@ -44,14 +44,12 @@ public static void main(String[] args) throws IOException { public static void setMute(String findingPath) throws IOException { try (SecurityCenterClient client = SecurityCenterClient.create()) { - SetMuteRequest setMuteRequest = SetMuteRequest.newBuilder() - .setName(findingPath) - .setMute(Mute.MUTED) - .build(); + SetMuteRequest setMuteRequest = + SetMuteRequest.newBuilder().setName(findingPath).setMute(Mute.MUTED).build(); Finding finding = client.setMute(setMuteRequest); System.out.println("Mute value for the finding: " + finding.getMute()); } } } -// [END securitycenter_set_mute_unmute] \ No newline at end of file +// [END securitycenter_set_mute_unmute] diff --git a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/UpdateMuteRule.java b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/UpdateMuteRule.java index 7e5c2ee0a..3a2ae6eb7 100644 --- a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/UpdateMuteRule.java +++ b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/UpdateMuteRule.java @@ -42,28 +42,27 @@ public static void main(String[] args) throws IOException { public static void updateMuteRule(String muteConfigName) throws IOException { try (SecurityCenterClient securityCenterClient = SecurityCenterClient.create()) { - MuteConfig updateMuteConfig = MuteConfig.newBuilder() - .setName(muteConfigName) - .setDescription("Updated mute config description") - .build(); + MuteConfig updateMuteConfig = + MuteConfig.newBuilder() + .setName(muteConfigName) + .setDescription("Updated mute config description") + .build(); - UpdateMuteConfigRequest updateMuteConfigRequest = UpdateMuteConfigRequest.newBuilder() - .setMuteConfig(updateMuteConfig) - // Set the update mask to specify which properties of the Mute Config should be updated. - // If empty all mutable fields will be updated. - // Make sure that the mask fields match the properties changed in 'updateMuteConfig'. - // For more info on constructing update mask path, see the proto or: - // https://cloud.google.com/security-command-center/docs/reference/rest/v1/folders.muteConfigs/patch?hl=en#query-parameters - .setUpdateMask( - FieldMask.newBuilder() - .addPaths("description") - .build()) - .build(); + UpdateMuteConfigRequest updateMuteConfigRequest = + UpdateMuteConfigRequest.newBuilder() + .setMuteConfig(updateMuteConfig) + // Set the update mask to specify which properties of the Mute Config should be + // updated. + // If empty all mutable fields will be updated. + // Make sure that the mask fields match the properties changed in 'updateMuteConfig'. + // For more info on constructing update mask path, see the proto or: + // https://cloud.google.com/security-command-center/docs/reference/rest/v1/folders.muteConfigs/patch?hl=en#query-parameters + .setUpdateMask(FieldMask.newBuilder().addPaths("description").build()) + .build(); MuteConfig response = securityCenterClient.updateMuteConfig(updateMuteConfigRequest); System.out.println(response); } } - } // [END securitycenter_update_mute_config] diff --git a/samples/snippets/src/test/java/com/google/cloud/examples/securitycenter/snippets/MuteFindingIT.java b/samples/snippets/src/test/java/com/google/cloud/examples/securitycenter/snippets/MuteFindingIT.java index 64b989df7..f1a25e8ca 100644 --- a/samples/snippets/src/test/java/com/google/cloud/examples/securitycenter/snippets/MuteFindingIT.java +++ b/samples/snippets/src/test/java/com/google/cloud/examples/securitycenter/snippets/MuteFindingIT.java @@ -73,7 +73,8 @@ public class MuteFindingIT { // Check if the required environment variables are set. public static void requireEnvVar(String envVarName) { assertWithMessage(String.format("Missing environment variable '%s' ", envVarName)) - .that(System.getenv(envVarName)).isNotEmpty(); + .that(System.getenv(envVarName)) + .isNotEmpty(); } @BeforeClass @@ -106,13 +107,17 @@ public static void cleanUp() throws IOException { public static Source createSource(String organizationId) throws IOException { try (SecurityCenterClient client = SecurityCenterClient.create()) { - Source source = Source.newBuilder() - .setDisplayName("Custom display name") - .setDescription("A source that does X").build(); + Source source = + Source.newBuilder() + .setDisplayName("Custom display name") + .setDescription("A source that does X") + .build(); - CreateSourceRequest createSourceRequest = CreateSourceRequest.newBuilder() - .setParent(String.format("organizations/%s", organizationId)) - .setSource(source).build(); + CreateSourceRequest createSourceRequest = + CreateSourceRequest.newBuilder() + .setParent(String.format("organizations/%s", organizationId)) + .setSource(source) + .build(); Source response = client.createSource(createSourceRequest); System.out.println("Created source : " + response.getName()); @@ -157,8 +162,7 @@ public static Finding createFinding(String sourceName, String findingId) throws public static ListFindingsPagedResponse getAllFindings(String sourceName) throws IOException { try (SecurityCenterClient client = SecurityCenterClient.create()) { - ListFindingsRequest request = ListFindingsRequest.newBuilder() - .setParent(sourceName).build(); + ListFindingsRequest request = ListFindingsRequest.newBuilder().setParent(sourceName).build(); return client.listFindings(request); } @@ -215,15 +219,16 @@ public void testSetMuteFinding() throws IOException { @Test public void testBulkMuteFindings() throws IOException, ExecutionException, InterruptedException { // Mute findings that belong to this project. - BulkMuteFindings.bulkMute(String.format("projects/%s", PROJECT_ID), + BulkMuteFindings.bulkMute( + String.format("projects/%s", PROJECT_ID), String.format("resource.project_display_name=\"%s\"", PROJECT_ID)); // Get all findings in the source to check if they are muted. - ListFindingsPagedResponse response = getAllFindings( - String.format("projects/%s/sources/%s", PROJECT_ID, SOURCE.getName().split("/")[3])); + ListFindingsPagedResponse response = + getAllFindings( + String.format("projects/%s/sources/%s", PROJECT_ID, SOURCE.getName().split("/")[3])); for (ListFindingsResult finding : response.iterateAll()) { Assert.assertEquals(finding.getFinding().getMute(), Mute.MUTED); } } - } From 0347a16034c3a14073a8044dae8e98da05c1905f Mon Sep 17 00:00:00 2001 From: SitaLakshmi Date: Tue, 1 Feb 2022 15:14:01 +0530 Subject: [PATCH 09/25] docs(samples): lint fix --- .../cloud/examples/securitycenter/snippets/MuteFindingIT.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/samples/snippets/src/test/java/com/google/cloud/examples/securitycenter/snippets/MuteFindingIT.java b/samples/snippets/src/test/java/com/google/cloud/examples/securitycenter/snippets/MuteFindingIT.java index 64b989df7..d3005634d 100644 --- a/samples/snippets/src/test/java/com/google/cloud/examples/securitycenter/snippets/MuteFindingIT.java +++ b/samples/snippets/src/test/java/com/google/cloud/examples/securitycenter/snippets/MuteFindingIT.java @@ -94,7 +94,7 @@ public static void setUp() throws IOException { @AfterClass public static void cleanUp() throws IOException { - PrintStream out = System.out; + final PrintStream out = System.out; stdOut = new ByteArrayOutputStream(); System.setOut(new PrintStream(stdOut)); DeleteMuteRule.deleteMuteRule(PROJECT_ID, MUTE_RULE_CREATE); From 3983db00aef9a1e3407f671c4b28de4718a00751 Mon Sep 17 00:00:00 2001 From: Owl Bot Date: Tue, 1 Feb 2022 09:44:39 +0000 Subject: [PATCH 10/25] =?UTF-8?q?=F0=9F=A6=89=20Updates=20from=20OwlBot?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md --- .../snippets/muteconfig/BulkMuteFindings.java | 21 +++++------ .../snippets/muteconfig/CreateMuteRule.java | 36 ++++++++++--------- .../snippets/muteconfig/DeleteMuteRule.java | 2 +- .../snippets/muteconfig/GetMuteRule.java | 7 ++-- .../snippets/muteconfig/ListMuteRules.java | 7 ++-- .../muteconfig/SetMuteUnmuteFinding.java | 8 ++--- .../snippets/muteconfig/UpdateMuteRule.java | 33 +++++++++-------- .../snippets/MuteFindingIT.java | 31 +++++++++------- 8 files changed, 74 insertions(+), 71 deletions(-) diff --git a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/BulkMuteFindings.java b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/BulkMuteFindings.java index 4cdba48e9..fe4f25f55 100644 --- a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/BulkMuteFindings.java +++ b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/BulkMuteFindings.java @@ -46,17 +46,18 @@ public static void bulkMute(String parentPath, String muteRule) throws IOException, ExecutionException, InterruptedException { try (SecurityCenterClient client = SecurityCenterClient.create()) { - BulkMuteFindingsRequest bulkMuteFindingsRequest = BulkMuteFindingsRequest.newBuilder() - .setParent(parentPath) - // To create mute rules, see: - // https://cloud.google.com/security-command-center/docs/how-to-mute-findings#create_mute_rules - .setFilter(muteRule) - .build(); - - BulkMuteFindingsResponse response = client.bulkMuteFindingsAsync(bulkMuteFindingsRequest) - .get(); + BulkMuteFindingsRequest bulkMuteFindingsRequest = + BulkMuteFindingsRequest.newBuilder() + .setParent(parentPath) + // To create mute rules, see: + // https://cloud.google.com/security-command-center/docs/how-to-mute-findings#create_mute_rules + .setFilter(muteRule) + .build(); + + BulkMuteFindingsResponse response = + client.bulkMuteFindingsAsync(bulkMuteFindingsRequest).get(); System.out.println("Bulk mute findings completed successfully ! " + response); } } } -// [END securitycenter_bulk_mute] \ No newline at end of file +// [END securitycenter_bulk_mute] diff --git a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/CreateMuteRule.java b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/CreateMuteRule.java index d1c1be487..877a6f780 100644 --- a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/CreateMuteRule.java +++ b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/CreateMuteRule.java @@ -43,27 +43,29 @@ public static void main(String[] args) throws IOException { public static void createMuteRule(String parentPath, String muteConfigId) throws IOException { try (SecurityCenterClient client = SecurityCenterClient.create()) { - MuteConfig muteConfig = MuteConfig.newBuilder() - .setDescription("Mute low-medium IAM grants excluding 'compute' ") - // Set mute rule(s). - // To construct mute rules and for supported properties, see: - // https://cloud.google.com/security-command-center/docs/how-to-mute-findings#console_3 - .setFilter( - "severity=\"LOW\" OR severity=\"MEDIUM\" AND " - + "category=\"Persistence: IAM Anomalous Grant\" AND " - + "-resource.type:\"compute\"") - .build(); + MuteConfig muteConfig = + MuteConfig.newBuilder() + .setDescription("Mute low-medium IAM grants excluding 'compute' ") + // Set mute rule(s). + // To construct mute rules and for supported properties, see: + // https://cloud.google.com/security-command-center/docs/how-to-mute-findings#console_3 + .setFilter( + "severity=\"LOW\" OR severity=\"MEDIUM\" AND " + + "category=\"Persistence: IAM Anomalous Grant\" AND " + + "-resource.type:\"compute\"") + .build(); - CreateMuteConfigRequest request = CreateMuteConfigRequest.newBuilder() - .setParent(parentPath) - // Set a random id; max of 63 chars. - .setMuteConfigId(muteConfigId) - .setMuteConfig(muteConfig) - .build(); + CreateMuteConfigRequest request = + CreateMuteConfigRequest.newBuilder() + .setParent(parentPath) + // Set a random id; max of 63 chars. + .setMuteConfigId(muteConfigId) + .setMuteConfig(muteConfig) + .build(); MuteConfig response = client.createMuteConfig(request); System.out.println("Mute Config Rule created successfully: " + response.getName()); } } } -// [END securitycenter_create_mute_config] \ No newline at end of file +// [END securitycenter_create_mute_config] diff --git a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/DeleteMuteRule.java b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/DeleteMuteRule.java index 85f6a0b51..f718637c3 100644 --- a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/DeleteMuteRule.java +++ b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/DeleteMuteRule.java @@ -46,4 +46,4 @@ public static void deleteMuteRule(String projectId, String muteConfigId) throws } } } -// [END securitycenter_delete_mute_config] \ No newline at end of file +// [END securitycenter_delete_mute_config] diff --git a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/GetMuteRule.java b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/GetMuteRule.java index 3e3e1d6e8..ac1be21e1 100644 --- a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/GetMuteRule.java +++ b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/GetMuteRule.java @@ -40,12 +40,11 @@ public static void getMuteRule(String projectId, String muteConfigId) throws IOE // (org -> MuteConfigName.ofOrganizationMuteConfigName() // folder -> MuteConfigName.ofFolderMuteConfigName() // project -> MuteConfigName.ofProjectMuteConfigName) - MuteConfig muteConfig = client.getMuteConfig( - MuteConfigName.ofProjectMuteConfigName(projectId, muteConfigId)); + MuteConfig muteConfig = + client.getMuteConfig(MuteConfigName.ofProjectMuteConfigName(projectId, muteConfigId)); System.out.println("Retrieved the mute config: " + muteConfig); } } - } -// [END securitycenter_get_mute_config] \ No newline at end of file +// [END securitycenter_get_mute_config] diff --git a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/ListMuteRules.java b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/ListMuteRules.java index 37f8245cf..635bbafa9 100644 --- a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/ListMuteRules.java +++ b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/ListMuteRules.java @@ -42,9 +42,8 @@ public static void main(String[] args) throws IOException { public static void listMuteRules(String parent) throws IOException { try (SecurityCenterClient client = SecurityCenterClient.create()) { - ListMuteConfigsRequest listMuteConfigsRequest = ListMuteConfigsRequest.newBuilder() - .setParent(parent) - .build(); + ListMuteConfigsRequest listMuteConfigsRequest = + ListMuteConfigsRequest.newBuilder().setParent(parent).build(); // List all Mute Configs present in the resource. for (MuteConfig muteConfig : client.listMuteConfigs(listMuteConfigsRequest).iterateAll()) { @@ -53,4 +52,4 @@ public static void listMuteRules(String parent) throws IOException { } } } -// [END securitycenter_list_mute_configs] \ No newline at end of file +// [END securitycenter_list_mute_configs] diff --git a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/SetMuteUnmuteFinding.java b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/SetMuteUnmuteFinding.java index a36bb945a..e010dd81c 100644 --- a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/SetMuteUnmuteFinding.java +++ b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/SetMuteUnmuteFinding.java @@ -44,14 +44,12 @@ public static void main(String[] args) throws IOException { public static void setMute(String findingPath) throws IOException { try (SecurityCenterClient client = SecurityCenterClient.create()) { - SetMuteRequest setMuteRequest = SetMuteRequest.newBuilder() - .setName(findingPath) - .setMute(Mute.MUTED) - .build(); + SetMuteRequest setMuteRequest = + SetMuteRequest.newBuilder().setName(findingPath).setMute(Mute.MUTED).build(); Finding finding = client.setMute(setMuteRequest); System.out.println("Mute value for the finding: " + finding.getMute()); } } } -// [END securitycenter_set_mute_unmute] \ No newline at end of file +// [END securitycenter_set_mute_unmute] diff --git a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/UpdateMuteRule.java b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/UpdateMuteRule.java index 7e5c2ee0a..3a2ae6eb7 100644 --- a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/UpdateMuteRule.java +++ b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/UpdateMuteRule.java @@ -42,28 +42,27 @@ public static void main(String[] args) throws IOException { public static void updateMuteRule(String muteConfigName) throws IOException { try (SecurityCenterClient securityCenterClient = SecurityCenterClient.create()) { - MuteConfig updateMuteConfig = MuteConfig.newBuilder() - .setName(muteConfigName) - .setDescription("Updated mute config description") - .build(); + MuteConfig updateMuteConfig = + MuteConfig.newBuilder() + .setName(muteConfigName) + .setDescription("Updated mute config description") + .build(); - UpdateMuteConfigRequest updateMuteConfigRequest = UpdateMuteConfigRequest.newBuilder() - .setMuteConfig(updateMuteConfig) - // Set the update mask to specify which properties of the Mute Config should be updated. - // If empty all mutable fields will be updated. - // Make sure that the mask fields match the properties changed in 'updateMuteConfig'. - // For more info on constructing update mask path, see the proto or: - // https://cloud.google.com/security-command-center/docs/reference/rest/v1/folders.muteConfigs/patch?hl=en#query-parameters - .setUpdateMask( - FieldMask.newBuilder() - .addPaths("description") - .build()) - .build(); + UpdateMuteConfigRequest updateMuteConfigRequest = + UpdateMuteConfigRequest.newBuilder() + .setMuteConfig(updateMuteConfig) + // Set the update mask to specify which properties of the Mute Config should be + // updated. + // If empty all mutable fields will be updated. + // Make sure that the mask fields match the properties changed in 'updateMuteConfig'. + // For more info on constructing update mask path, see the proto or: + // https://cloud.google.com/security-command-center/docs/reference/rest/v1/folders.muteConfigs/patch?hl=en#query-parameters + .setUpdateMask(FieldMask.newBuilder().addPaths("description").build()) + .build(); MuteConfig response = securityCenterClient.updateMuteConfig(updateMuteConfigRequest); System.out.println(response); } } - } // [END securitycenter_update_mute_config] diff --git a/samples/snippets/src/test/java/com/google/cloud/examples/securitycenter/snippets/MuteFindingIT.java b/samples/snippets/src/test/java/com/google/cloud/examples/securitycenter/snippets/MuteFindingIT.java index 64b989df7..f1a25e8ca 100644 --- a/samples/snippets/src/test/java/com/google/cloud/examples/securitycenter/snippets/MuteFindingIT.java +++ b/samples/snippets/src/test/java/com/google/cloud/examples/securitycenter/snippets/MuteFindingIT.java @@ -73,7 +73,8 @@ public class MuteFindingIT { // Check if the required environment variables are set. public static void requireEnvVar(String envVarName) { assertWithMessage(String.format("Missing environment variable '%s' ", envVarName)) - .that(System.getenv(envVarName)).isNotEmpty(); + .that(System.getenv(envVarName)) + .isNotEmpty(); } @BeforeClass @@ -106,13 +107,17 @@ public static void cleanUp() throws IOException { public static Source createSource(String organizationId) throws IOException { try (SecurityCenterClient client = SecurityCenterClient.create()) { - Source source = Source.newBuilder() - .setDisplayName("Custom display name") - .setDescription("A source that does X").build(); + Source source = + Source.newBuilder() + .setDisplayName("Custom display name") + .setDescription("A source that does X") + .build(); - CreateSourceRequest createSourceRequest = CreateSourceRequest.newBuilder() - .setParent(String.format("organizations/%s", organizationId)) - .setSource(source).build(); + CreateSourceRequest createSourceRequest = + CreateSourceRequest.newBuilder() + .setParent(String.format("organizations/%s", organizationId)) + .setSource(source) + .build(); Source response = client.createSource(createSourceRequest); System.out.println("Created source : " + response.getName()); @@ -157,8 +162,7 @@ public static Finding createFinding(String sourceName, String findingId) throws public static ListFindingsPagedResponse getAllFindings(String sourceName) throws IOException { try (SecurityCenterClient client = SecurityCenterClient.create()) { - ListFindingsRequest request = ListFindingsRequest.newBuilder() - .setParent(sourceName).build(); + ListFindingsRequest request = ListFindingsRequest.newBuilder().setParent(sourceName).build(); return client.listFindings(request); } @@ -215,15 +219,16 @@ public void testSetMuteFinding() throws IOException { @Test public void testBulkMuteFindings() throws IOException, ExecutionException, InterruptedException { // Mute findings that belong to this project. - BulkMuteFindings.bulkMute(String.format("projects/%s", PROJECT_ID), + BulkMuteFindings.bulkMute( + String.format("projects/%s", PROJECT_ID), String.format("resource.project_display_name=\"%s\"", PROJECT_ID)); // Get all findings in the source to check if they are muted. - ListFindingsPagedResponse response = getAllFindings( - String.format("projects/%s/sources/%s", PROJECT_ID, SOURCE.getName().split("/")[3])); + ListFindingsPagedResponse response = + getAllFindings( + String.format("projects/%s/sources/%s", PROJECT_ID, SOURCE.getName().split("/")[3])); for (ListFindingsResult finding : response.iterateAll()) { Assert.assertEquals(finding.getFinding().getMute(), Mute.MUTED); } } - } From b52adf5f8cffe3a3a7782df1b643ae262fb3c3bd Mon Sep 17 00:00:00 2001 From: SitaLakshmi Date: Thu, 3 Feb 2022 02:09:51 +0530 Subject: [PATCH 11/25] docs(samples): applied documentation review comments --- .../snippets/muteconfig/BulkMuteFindings.java | 14 +++++++------- .../snippets/muteconfig/CreateMuteRule.java | 14 +++++++------- .../snippets/muteconfig/DeleteMuteRule.java | 4 ++-- .../snippets/muteconfig/GetMuteRule.java | 2 +- .../snippets/muteconfig/ListMuteRules.java | 14 +++++++------- .../snippets/muteconfig/SetMuteUnmuteFinding.java | 13 +++++++------ .../snippets/muteconfig/UpdateMuteRule.java | 10 +++++----- 7 files changed, 36 insertions(+), 35 deletions(-) diff --git a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/BulkMuteFindings.java b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/BulkMuteFindings.java index fe4f25f55..f730bf604 100644 --- a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/BulkMuteFindings.java +++ b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/BulkMuteFindings.java @@ -28,10 +28,10 @@ public class BulkMuteFindings { public static void main(String[] args) throws IOException, ExecutionException, InterruptedException { - // parentPath: use any one of the following three options - // organizations/{organization} or - // folders/{folder} or - // projects/{project} + // parentPath: use any one of the following options: + // - organizations/{organization_id} + // - folders/{folder_id} + // - projects/{project_id} // muteRule: Expression that identifies findings that should be updated. // TODO: Replace the variables within {} String parentPath = "{parent_path}"; @@ -39,8 +39,8 @@ public static void main(String[] args) bulkMute(parentPath, muteRule); } - // Kicks off an LRO (Long-Running-Operation) to bulk mute findings for a parent based on a filter. - // The parent can be either an organization, folder or project. The findings + // Kicks off a long-running operation (LRO) to bulk mute findings for a parent based on a filter. + // The parent can be either an organization, folder, or project. The findings // matched by the filter will be muted after the LRO is done. public static void bulkMute(String parentPath, String muteRule) throws IOException, ExecutionException, InterruptedException { @@ -56,7 +56,7 @@ public static void bulkMute(String parentPath, String muteRule) BulkMuteFindingsResponse response = client.bulkMuteFindingsAsync(bulkMuteFindingsRequest).get(); - System.out.println("Bulk mute findings completed successfully ! " + response); + System.out.println("Bulk mute findings completed successfully! " + response); } } } diff --git a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/CreateMuteRule.java b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/CreateMuteRule.java index 877a6f780..2a431de4b 100644 --- a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/CreateMuteRule.java +++ b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/CreateMuteRule.java @@ -27,10 +27,10 @@ public class CreateMuteRule { public static void main(String[] args) throws IOException { - // parentPath: use any one of the following three options, - // organizations/{organization} or - // folders/{folder} or - // projects/{project} + // parentPath: use any one of the following options: + // - organizations/{organization_id} + // - folders/{folder_id} + // - projects/{project_id} // TODO: Replace the variables within {} String parentPath = "{parent_path}"; String muteConfigId = "random-mute-id-" + UUID.randomUUID(); @@ -38,7 +38,7 @@ public static void main(String[] args) throws IOException { } // Creates a mute configuration under a given scope that will mute - // all new finding which match the filter/ mute rule. + // all new findings that match a given filter. // Existing findings will NOT BE muted. public static void createMuteRule(String parentPath, String muteConfigId) throws IOException { try (SecurityCenterClient client = SecurityCenterClient.create()) { @@ -48,7 +48,7 @@ public static void createMuteRule(String parentPath, String muteConfigId) throws .setDescription("Mute low-medium IAM grants excluding 'compute' ") // Set mute rule(s). // To construct mute rules and for supported properties, see: - // https://cloud.google.com/security-command-center/docs/how-to-mute-findings#console_3 + // https://cloud.google.com/security-command-center/docs/how-to-mute-findings#create_mute_rules .setFilter( "severity=\"LOW\" OR severity=\"MEDIUM\" AND " + "category=\"Persistence: IAM Anomalous Grant\" AND " @@ -64,7 +64,7 @@ public static void createMuteRule(String parentPath, String muteConfigId) throws .build(); MuteConfig response = client.createMuteConfig(request); - System.out.println("Mute Config Rule created successfully: " + response.getName()); + System.out.println("Mute rule created successfully: " + response.getName()); } } } diff --git a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/DeleteMuteRule.java b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/DeleteMuteRule.java index f718637c3..e8033b005 100644 --- a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/DeleteMuteRule.java +++ b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/DeleteMuteRule.java @@ -33,7 +33,7 @@ public static void main(String[] args) throws IOException { } // Deletes a mute configuration given its resource name. - // Note: Already muted findings are not affected when a mute config is deleted. + // Note: Previously muted findings are not affected when a mute config is deleted. public static void deleteMuteRule(String projectId, String muteConfigId) throws IOException { try (SecurityCenterClient client = SecurityCenterClient.create()) { // Use appropriate MuteConfigName methods depending upon the type of parent. @@ -42,7 +42,7 @@ public static void deleteMuteRule(String projectId, String muteConfigId) throws // project -> MuteConfigName.ofProjectMuteConfigName) client.deleteMuteConfig(MuteConfigName.ofProjectMuteConfigName(projectId, muteConfigId)); - System.out.println("Mute Config Rule deleted successfully: " + muteConfigId); + System.out.println("Mute rule deleted successfully: " + muteConfigId); } } } diff --git a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/GetMuteRule.java b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/GetMuteRule.java index ac1be21e1..8321c354b 100644 --- a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/GetMuteRule.java +++ b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/GetMuteRule.java @@ -33,7 +33,7 @@ public static void main(String[] args) throws IOException { getMuteRule(parentPath, muteConfigId); } - // Retrieves mute configuration given its resource name. + // Retrieves a mute configuration given its resource name. public static void getMuteRule(String projectId, String muteConfigId) throws IOException { try (SecurityCenterClient client = SecurityCenterClient.create()) { // Use appropriate MuteConfigName methods depending upon the type of parent. diff --git a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/ListMuteRules.java b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/ListMuteRules.java index 635bbafa9..5c79ab3bf 100644 --- a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/ListMuteRules.java +++ b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/ListMuteRules.java @@ -26,19 +26,19 @@ public class ListMuteRules { public static void main(String[] args) throws IOException { - // Use any one of the following three resource paths to list mute configurations. - // "organizations/{organization_id}" or - // "folders/{folder_id}" or - // "projects/{project_id}" + // parent: Use any one of the following resource paths to list mute configurations: + // - organizations/{organization_id} + // - folders/{folder_id} + // - projects/{project_id} // TODO: Replace variables enclosed within {} String parent = "projects/{project_id}"; listMuteRules(parent); } - // Listing mute configs at organization level will give all the configs - // at org, folder and project levels. + // Listing mute configs at organization level will return all the configs + // at the org, folder and project levels. // Similarly, listing configs at folder level will list all the configs - // at folder + projects (within that folder) level. + // at the folder and project levels. public static void listMuteRules(String parent) throws IOException { try (SecurityCenterClient client = SecurityCenterClient.create()) { diff --git a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/SetMuteUnmuteFinding.java b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/SetMuteUnmuteFinding.java index e010dd81c..a065a1b33 100644 --- a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/SetMuteUnmuteFinding.java +++ b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/SetMuteUnmuteFinding.java @@ -29,18 +29,19 @@ public class SetMuteUnmuteFinding { public static void main(String[] args) throws IOException { // findingPath: The relative resource name of the finding. See: // https://cloud.google.com/apis/design/resource_names#relative_resource_name - // Example: - // "organizations/{organization_id}/sources/{source_id}/finding/{finding_id}", - // "folders/{folder_id}/sources/{source_id}/finding/{finding_id}", - // "projects/{project_id}/sources/{source_id}/finding/{finding_id}". + // Use any one of the following formats: + // - organizations/{organization_id}/sources/{source_id}/finding/{finding_id} + // - folders/{folder_id}/sources/{source_id}/finding/{finding_id} + // - projects/{project_id}/sources/{source_id}/finding/{finding_id} // TODO: Replace the variables within {} String findingPath = "{path-to-the-finding}"; setMute(findingPath); } // Mute/unmute an individual finding. - // If a finding is already muted, muting it again (or vice versa) is a no-op. - // Various mute states are: MUTE_UNSPECIFIED/ MUTE/ UNMUTE. + // If a finding is already muted, muting it again has no effect. + // Similarly, unmuting a finding that isn't muted has no effect. + // Various mute states are: MUTE_UNSPECIFIED/MUTE/UNMUTE. public static void setMute(String findingPath) throws IOException { try (SecurityCenterClient client = SecurityCenterClient.create()) { diff --git a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/UpdateMuteRule.java b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/UpdateMuteRule.java index 3a2ae6eb7..58b81a926 100644 --- a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/UpdateMuteRule.java +++ b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/UpdateMuteRule.java @@ -28,10 +28,10 @@ public class UpdateMuteRule { public static void main(String[] args) throws IOException { // Specify the name of the mute config to delete. - // Its format is: - // organizations/{organization}/muteConfigs/{config_id} or - // folders/{folder}/muteConfigs/{config_id} or - // projects/{project}/muteConfigs/{config_id} + // Use any one of the following formats: + // - organizations/{organization}/muteConfigs/{config_id} + // - folders/{folder}/muteConfigs/{config_id} + // - projects/{project}/muteConfigs/{config_id} // TODO: Replace the variables within {} String muteConfigName = "{any-one-of-the-above-formats}"; updateMuteRule(muteConfigName); @@ -53,7 +53,7 @@ public static void updateMuteRule(String muteConfigName) throws IOException { .setMuteConfig(updateMuteConfig) // Set the update mask to specify which properties of the Mute Config should be // updated. - // If empty all mutable fields will be updated. + // If empty, all mutable fields will be updated. // Make sure that the mask fields match the properties changed in 'updateMuteConfig'. // For more info on constructing update mask path, see the proto or: // https://cloud.google.com/security-command-center/docs/reference/rest/v1/folders.muteConfigs/patch?hl=en#query-parameters From 5d0c7d4203e5f12090773e89efa3e5b9290254ca Mon Sep 17 00:00:00 2001 From: SitaLakshmi Date: Thu, 24 Feb 2022 15:48:52 +0530 Subject: [PATCH 12/25] docs(samples): applied review comments --- .../snippets/muteconfig/BulkMuteFindings.java | 4 +++- .../snippets/muteconfig/CreateMuteRule.java | 5 +++-- .../snippets/muteconfig/DeleteMuteRule.java | 4 ++-- .../snippets/muteconfig/GetMuteRule.java | 4 ++-- .../snippets/muteconfig/ListMuteRules.java | 4 ++-- .../snippets/muteconfig/UpdateMuteRule.java | 4 ++-- .../securitycenter/snippets/MuteFindingIT.java | 12 +++++++----- 7 files changed, 21 insertions(+), 16 deletions(-) diff --git a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/BulkMuteFindings.java b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/BulkMuteFindings.java index f730bf604..9050e2a41 100644 --- a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/BulkMuteFindings.java +++ b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/BulkMuteFindings.java @@ -28,11 +28,12 @@ public class BulkMuteFindings { public static void main(String[] args) throws IOException, ExecutionException, InterruptedException { - // parentPath: use any one of the following options: + // parentPath: Use any one of the following options: // - organizations/{organization_id} // - folders/{folder_id} // - projects/{project_id} // muteRule: Expression that identifies findings that should be updated. + // eg: "resource.project_display_name=\"PROJECT_ID\"" // TODO: Replace the variables within {} String parentPath = "{parent_path}"; String muteRule = "{filter-condition}"; @@ -54,6 +55,7 @@ public static void bulkMute(String parentPath, String muteRule) .setFilter(muteRule) .build(); + // ExecutionException is thrown if the below call fails. BulkMuteFindingsResponse response = client.bulkMuteFindingsAsync(bulkMuteFindingsRequest).get(); System.out.println("Bulk mute findings completed successfully! " + response); diff --git a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/CreateMuteRule.java b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/CreateMuteRule.java index 2a431de4b..f4b70adbf 100644 --- a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/CreateMuteRule.java +++ b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/CreateMuteRule.java @@ -27,7 +27,7 @@ public class CreateMuteRule { public static void main(String[] args) throws IOException { - // parentPath: use any one of the following options: + // parentPath: Use any one of the following options: // - organizations/{organization_id} // - folders/{folder_id} // - projects/{project_id} @@ -39,7 +39,7 @@ public static void main(String[] args) throws IOException { // Creates a mute configuration under a given scope that will mute // all new findings that match a given filter. - // Existing findings will NOT BE muted. + // Existing findings will not be muted. public static void createMuteRule(String parentPath, String muteConfigId) throws IOException { try (SecurityCenterClient client = SecurityCenterClient.create()) { @@ -63,6 +63,7 @@ public static void createMuteRule(String parentPath, String muteConfigId) throws .setMuteConfig(muteConfig) .build(); + // ExecutionException is thrown if the below call fails. MuteConfig response = client.createMuteConfig(request); System.out.println("Mute rule created successfully: " + response.getName()); } diff --git a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/DeleteMuteRule.java b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/DeleteMuteRule.java index e8033b005..ca6f4d521 100644 --- a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/DeleteMuteRule.java +++ b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/DeleteMuteRule.java @@ -26,7 +26,7 @@ public class DeleteMuteRule { public static void main(String[] args) throws IOException { // muteConfigId: Specify the name of the mute config to delete. - // TODO(Developer): Replace the below variables + // TODO(Developer): Replace the following variables String parentPath = "{project-id | folder | organization}"; String muteConfigId = "{any-one-of-the-above-formats}"; deleteMuteRule(parentPath, muteConfigId); @@ -36,7 +36,7 @@ public static void main(String[] args) throws IOException { // Note: Previously muted findings are not affected when a mute config is deleted. public static void deleteMuteRule(String projectId, String muteConfigId) throws IOException { try (SecurityCenterClient client = SecurityCenterClient.create()) { - // Use appropriate MuteConfigName methods depending upon the type of parent. + // Use appropriate MuteConfigName methods depending on the type of parent. // (org -> MuteConfigName.ofOrganizationMuteConfigName() // folder -> MuteConfigName.ofFolderMuteConfigName() // project -> MuteConfigName.ofProjectMuteConfigName) diff --git a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/GetMuteRule.java b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/GetMuteRule.java index 8321c354b..50beac631 100644 --- a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/GetMuteRule.java +++ b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/GetMuteRule.java @@ -27,7 +27,7 @@ public class GetMuteRule { public static void main(String[] args) throws IOException { // muteConfigId: Name of the mute config to retrieve. - // TODO(Developer): Replace the below variables + // TODO(Developer): Replace the following variables String parentPath = "{project-id | folder | organization}"; String muteConfigId = "{any-one-of-the-above-formats}"; getMuteRule(parentPath, muteConfigId); @@ -36,7 +36,7 @@ public static void main(String[] args) throws IOException { // Retrieves a mute configuration given its resource name. public static void getMuteRule(String projectId, String muteConfigId) throws IOException { try (SecurityCenterClient client = SecurityCenterClient.create()) { - // Use appropriate MuteConfigName methods depending upon the type of parent. + // Use appropriate MuteConfigName methods depending on the type of parent. // (org -> MuteConfigName.ofOrganizationMuteConfigName() // folder -> MuteConfigName.ofFolderMuteConfigName() // project -> MuteConfigName.ofProjectMuteConfigName) diff --git a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/ListMuteRules.java b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/ListMuteRules.java index 5c79ab3bf..258907e59 100644 --- a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/ListMuteRules.java +++ b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/ListMuteRules.java @@ -35,7 +35,7 @@ public static void main(String[] args) throws IOException { listMuteRules(parent); } - // Listing mute configs at organization level will return all the configs + // Listing mute configs at the organization level will return all the configs // at the org, folder and project levels. // Similarly, listing configs at folder level will list all the configs // at the folder and project levels. @@ -45,7 +45,7 @@ public static void listMuteRules(String parent) throws IOException { ListMuteConfigsRequest listMuteConfigsRequest = ListMuteConfigsRequest.newBuilder().setParent(parent).build(); - // List all Mute Configs present in the resource. + // List all mute configs present in the resource. for (MuteConfig muteConfig : client.listMuteConfigs(listMuteConfigsRequest).iterateAll()) { System.out.println(muteConfig.getName()); } diff --git a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/UpdateMuteRule.java b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/UpdateMuteRule.java index 58b81a926..bd28456cb 100644 --- a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/UpdateMuteRule.java +++ b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/UpdateMuteRule.java @@ -38,7 +38,7 @@ public static void main(String[] args) throws IOException { } // Updates an existing mute configuration. - // The following can be updated in a mute config: description, and filter/ mute rule. + // The following can be updated in a mute config: description and filter. public static void updateMuteRule(String muteConfigName) throws IOException { try (SecurityCenterClient securityCenterClient = SecurityCenterClient.create()) { @@ -51,7 +51,7 @@ public static void updateMuteRule(String muteConfigName) throws IOException { UpdateMuteConfigRequest updateMuteConfigRequest = UpdateMuteConfigRequest.newBuilder() .setMuteConfig(updateMuteConfig) - // Set the update mask to specify which properties of the Mute Config should be + // Set the update mask to specify which properties of the mute config should be // updated. // If empty, all mutable fields will be updated. // Make sure that the mask fields match the properties changed in 'updateMuteConfig'. diff --git a/samples/snippets/src/test/java/com/google/cloud/examples/securitycenter/snippets/MuteFindingIT.java b/samples/snippets/src/test/java/com/google/cloud/examples/securitycenter/snippets/MuteFindingIT.java index 958c80c92..41aa43de7 100644 --- a/samples/snippets/src/test/java/com/google/cloud/examples/securitycenter/snippets/MuteFindingIT.java +++ b/samples/snippets/src/test/java/com/google/cloud/examples/securitycenter/snippets/MuteFindingIT.java @@ -57,8 +57,8 @@ public class MuteFindingIT { // TODO(Developer): Replace the below variables. - private static final String PROJECT_ID = getProject(); - private static final String ORGANIZATION_ID = getOrganizationId(); + private static final String PROJECT_ID = System.getenv("SCC_PROJECT_ID"); + private static final String ORGANIZATION_ID = System.getenv("SCC_PROJECT_ORG_ID"); private static final String MUTE_RULE_CREATE = "random-mute-id-" + UUID.randomUUID(); private static final String MUTE_RULE_UPDATE = "random-mute-id-" + UUID.randomUUID(); @@ -80,8 +80,10 @@ public static void requireEnvVar(String envVarName) { @BeforeClass public static void setUp() throws IOException { requireEnvVar("GOOGLE_APPLICATION_CREDENTIALS"); + requireEnvVar("SCC_PROJECT_ID"); + requireEnvVar("SCC_PROJECT_ORG_ID"); - // Create Mute Rules. + // Create mute rules. CreateMuteRule.createMuteRule(String.format("projects/%s", PROJECT_ID), MUTE_RULE_CREATE); CreateMuteRule.createMuteRule(String.format("projects/%s", PROJECT_ID), MUTE_RULE_UPDATE); // Create Source. @@ -130,13 +132,13 @@ public static Finding createFinding(String sourceName, String findingId) throws Instant eventTime = Instant.now(); - // The resource this finding applies to. The Cloud Security Command Center UI can link + // The resource this finding applies to. The Cloud Security Command Center UI can link // the findings for a resource to the corresponding Asset of a resource // if there are matches. // TODO(Developer): Replace the below sample resource name String resourceName = "//cloudresourcemanager.googleapis.com/organizations/11232"; - // Start setting up a request to create a finding in a source. + // Set up a request to create a finding in a source. Finding finding = Finding.newBuilder() .setParent(sourceName) From 8a62abdbe791967ff8847d91a7ab8813b771f2b8 Mon Sep 17 00:00:00 2001 From: Owl Bot Date: Thu, 24 Feb 2022 10:21:18 +0000 Subject: [PATCH 13/25] =?UTF-8?q?=F0=9F=A6=89=20Updates=20from=20OwlBot=20?= =?UTF-8?q?post-processor?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index b27894d57..7500c14f4 100644 --- a/README.md +++ b/README.md @@ -55,20 +55,20 @@ If you are using Maven without BOM, add this to your dependencies: If you are using Gradle 5.x or later, add this to your dependencies ```Groovy -implementation platform('com.google.cloud:libraries-bom:24.2.0') +implementation platform('com.google.cloud:libraries-bom:24.3.0') implementation 'com.google.cloud:google-cloud-securitycenter' ``` If you are using Gradle without BOM, add this to your dependencies ```Groovy -implementation 'com.google.cloud:google-cloud-securitycenter:2.3.2' +implementation 'com.google.cloud:google-cloud-securitycenter:2.4.0' ``` If you are using SBT, add this to your dependencies ```Scala -libraryDependencies += "com.google.cloud" % "google-cloud-securitycenter" % "2.3.2" +libraryDependencies += "com.google.cloud" % "google-cloud-securitycenter" % "2.4.0" ``` ## Authentication From 6ef35fd46e1350c22ab16b689178f9e4c8136d14 Mon Sep 17 00:00:00 2001 From: SitaLakshmi Date: Fri, 25 Feb 2022 00:58:18 +0530 Subject: [PATCH 14/25] docs(samples): added test env variables --- .kokoro/presubmit/samples.cfg | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/.kokoro/presubmit/samples.cfg b/.kokoro/presubmit/samples.cfg index 01e096004..d40cc0ca7 100644 --- a/.kokoro/presubmit/samples.cfg +++ b/.kokoro/presubmit/samples.cfg @@ -30,4 +30,14 @@ env_vars: { env_vars: { key: "SECRET_MANAGER_KEYS" value: "java-docs-samples-service-account" +} + +env_vars: { + key: "SCC_PROJECT_ID" + value: "secret_manager/java-scc-samples-secrets" +} + +env_vars: { + key: "SCC_PROJECT_ORG_ID" + value: "secret_manager/java-scc-samples-secretst" } \ No newline at end of file From 76c782dc3cc9b91e94c32ac62d7c704029219227 Mon Sep 17 00:00:00 2001 From: Owl Bot Date: Thu, 24 Feb 2022 19:31:42 +0000 Subject: [PATCH 15/25] =?UTF-8?q?=F0=9F=A6=89=20Updates=20from=20OwlBot=20?= =?UTF-8?q?post-processor?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md --- .kokoro/presubmit/samples.cfg | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/.kokoro/presubmit/samples.cfg b/.kokoro/presubmit/samples.cfg index d40cc0ca7..01e096004 100644 --- a/.kokoro/presubmit/samples.cfg +++ b/.kokoro/presubmit/samples.cfg @@ -30,14 +30,4 @@ env_vars: { env_vars: { key: "SECRET_MANAGER_KEYS" value: "java-docs-samples-service-account" -} - -env_vars: { - key: "SCC_PROJECT_ID" - value: "secret_manager/java-scc-samples-secrets" -} - -env_vars: { - key: "SCC_PROJECT_ORG_ID" - value: "secret_manager/java-scc-samples-secretst" } \ No newline at end of file From 75bc1daab47571a6fc39317678ae8e12fd49a5b9 Mon Sep 17 00:00:00 2001 From: SitaLakshmi Date: Fri, 25 Feb 2022 11:22:31 +0530 Subject: [PATCH 16/25] docs(samples): added test env variables --- .kokoro/presubmit/samples.cfg | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/.kokoro/presubmit/samples.cfg b/.kokoro/presubmit/samples.cfg index 01e096004..d40cc0ca7 100644 --- a/.kokoro/presubmit/samples.cfg +++ b/.kokoro/presubmit/samples.cfg @@ -30,4 +30,14 @@ env_vars: { env_vars: { key: "SECRET_MANAGER_KEYS" value: "java-docs-samples-service-account" +} + +env_vars: { + key: "SCC_PROJECT_ID" + value: "secret_manager/java-scc-samples-secrets" +} + +env_vars: { + key: "SCC_PROJECT_ORG_ID" + value: "secret_manager/java-scc-samples-secretst" } \ No newline at end of file From e51407829ed57b953867dceaca1d0829f6d48547 Mon Sep 17 00:00:00 2001 From: Sita Lakshmi Sangameswaran Date: Fri, 25 Feb 2022 17:24:32 +0530 Subject: [PATCH 17/25] updated config typo --- .kokoro/presubmit/samples.cfg | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/.kokoro/presubmit/samples.cfg b/.kokoro/presubmit/samples.cfg index d40cc0ca7..239e5b1b9 100644 --- a/.kokoro/presubmit/samples.cfg +++ b/.kokoro/presubmit/samples.cfg @@ -32,6 +32,9 @@ env_vars: { value: "java-docs-samples-service-account" } +# This must be different from GCLOUD_PROJECT. +# Since build.sh overrides the value for GCLOUD_PROJECT. + env_vars: { key: "SCC_PROJECT_ID" value: "secret_manager/java-scc-samples-secrets" @@ -39,5 +42,5 @@ env_vars: { env_vars: { key: "SCC_PROJECT_ORG_ID" - value: "secret_manager/java-scc-samples-secretst" -} \ No newline at end of file + value: "secret_manager/java-scc-samples-secrets" +} From 19b9e01e248e2fd086dee715e17e7617891a16d0 Mon Sep 17 00:00:00 2001 From: Neenu Shaji Date: Thu, 17 Mar 2022 13:46:24 -0400 Subject: [PATCH 18/25] test: try changing the env var name --- .kokoro/presubmit/samples.cfg | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/.kokoro/presubmit/samples.cfg b/.kokoro/presubmit/samples.cfg index 239e5b1b9..b77051dbd 100644 --- a/.kokoro/presubmit/samples.cfg +++ b/.kokoro/presubmit/samples.cfg @@ -36,11 +36,8 @@ env_vars: { # Since build.sh overrides the value for GCLOUD_PROJECT. env_vars: { - key: "SCC_PROJECT_ID" + key: "SCC_PROJECT_KEYS" value: "secret_manager/java-scc-samples-secrets" } -env_vars: { - key: "SCC_PROJECT_ORG_ID" - value: "secret_manager/java-scc-samples-secrets" } From 3464ffc44c968f404c6e050e04c2f471759839ed Mon Sep 17 00:00:00 2001 From: Neenu Shaji Date: Mon, 21 Mar 2022 16:28:08 -0400 Subject: [PATCH 19/25] Update samples.cfg --- .kokoro/presubmit/samples.cfg | 2 -- 1 file changed, 2 deletions(-) diff --git a/.kokoro/presubmit/samples.cfg b/.kokoro/presubmit/samples.cfg index b77051dbd..078dee598 100644 --- a/.kokoro/presubmit/samples.cfg +++ b/.kokoro/presubmit/samples.cfg @@ -39,5 +39,3 @@ env_vars: { key: "SCC_PROJECT_KEYS" value: "secret_manager/java-scc-samples-secrets" } - -} From 66148226aa2ca83177874653305be4d028033c37 Mon Sep 17 00:00:00 2001 From: Neenu Shaji Date: Tue, 22 Mar 2022 15:15:58 -0400 Subject: [PATCH 20/25] Update samples.cfg --- .kokoro/presubmit/samples.cfg | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.kokoro/presubmit/samples.cfg b/.kokoro/presubmit/samples.cfg index 078dee598..54b4f2b19 100644 --- a/.kokoro/presubmit/samples.cfg +++ b/.kokoro/presubmit/samples.cfg @@ -29,13 +29,13 @@ env_vars: { env_vars: { key: "SECRET_MANAGER_KEYS" - value: "java-docs-samples-service-account" + value: "java-docs-samples-service-account,java-scc-samples-secrets" } # This must be different from GCLOUD_PROJECT. # Since build.sh overrides the value for GCLOUD_PROJECT. -env_vars: { - key: "SCC_PROJECT_KEYS" - value: "secret_manager/java-scc-samples-secrets" -} +#env_vars: { +# key: "SCC_PROJECT_KEYS" +# value: "secret_manager/java-scc-samples-secrets" +#} From 34e0905a37ff22d8fd4ba0cc76c8f3426d48965c Mon Sep 17 00:00:00 2001 From: Sita Lakshmi Sangameswaran Date: Wed, 23 Mar 2022 20:27:38 +0530 Subject: [PATCH 21/25] updated samples.cfg --- .kokoro/presubmit/samples.cfg | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/.kokoro/presubmit/samples.cfg b/.kokoro/presubmit/samples.cfg index 54b4f2b19..67806dd18 100644 --- a/.kokoro/presubmit/samples.cfg +++ b/.kokoro/presubmit/samples.cfg @@ -30,12 +30,4 @@ env_vars: { env_vars: { key: "SECRET_MANAGER_KEYS" value: "java-docs-samples-service-account,java-scc-samples-secrets" -} - -# This must be different from GCLOUD_PROJECT. -# Since build.sh overrides the value for GCLOUD_PROJECT. - -#env_vars: { -# key: "SCC_PROJECT_KEYS" -# value: "secret_manager/java-scc-samples-secrets" -#} +} \ No newline at end of file From 73d84f90983f7fcccc6970257ba329af0fbe2c1c Mon Sep 17 00:00:00 2001 From: SitaLakshmi Date: Thu, 24 Mar 2022 18:51:02 +0530 Subject: [PATCH 22/25] docs(samples): updated acc to review comments --- .../snippets/muteconfig/BulkMuteFindings.java | 18 ++++++++++----- .../snippets/muteconfig/CreateMuteRule.java | 17 +++++++++----- .../snippets/muteconfig/DeleteMuteRule.java | 21 +++++++++++++----- .../snippets/muteconfig/GetMuteRule.java | 22 ++++++++++++++----- .../snippets/muteconfig/ListMuteRules.java | 16 +++++++++----- .../muteconfig/SetMuteUnmuteFinding.java | 12 +++++++--- .../snippets/muteconfig/UpdateMuteRule.java | 20 +++++++++++------ .../snippets/MuteFindingIT.java | 18 ++++++++------- 8 files changed, 100 insertions(+), 44 deletions(-) diff --git a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/BulkMuteFindings.java b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/BulkMuteFindings.java index 9050e2a41..2b32fb5d0 100644 --- a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/BulkMuteFindings.java +++ b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/BulkMuteFindings.java @@ -26,25 +26,29 @@ public class BulkMuteFindings { - public static void main(String[] args) - throws IOException, ExecutionException, InterruptedException { + public static void main(String[] args) { + // TODO: Replace the variables within {} + // parentPath: Use any one of the following options: // - organizations/{organization_id} // - folders/{folder_id} // - projects/{project_id} + String parentPath = String.format("projects/%s", "your-google-cloud-project-id"); + // muteRule: Expression that identifies findings that should be updated. // eg: "resource.project_display_name=\"PROJECT_ID\"" - // TODO: Replace the variables within {} - String parentPath = "{parent_path}"; String muteRule = "{filter-condition}"; + bulkMute(parentPath, muteRule); } // Kicks off a long-running operation (LRO) to bulk mute findings for a parent based on a filter. // The parent can be either an organization, folder, or project. The findings // matched by the filter will be muted after the LRO is done. - public static void bulkMute(String parentPath, String muteRule) - throws IOException, ExecutionException, InterruptedException { + public static void bulkMute(String parentPath, String muteRule) { + // 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()) { BulkMuteFindingsRequest bulkMuteFindingsRequest = @@ -59,6 +63,8 @@ public static void bulkMute(String parentPath, String muteRule) BulkMuteFindingsResponse response = client.bulkMuteFindingsAsync(bulkMuteFindingsRequest).get(); System.out.println("Bulk mute findings completed successfully! " + response); + } catch (IOException | InterruptedException | ExecutionException e) { + System.out.println("Bulk mute findings failed! \n Exception: " + e); } } } diff --git a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/CreateMuteRule.java b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/CreateMuteRule.java index f4b70adbf..90e07ca14 100644 --- a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/CreateMuteRule.java +++ b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/CreateMuteRule.java @@ -26,13 +26,16 @@ public class CreateMuteRule { - public static void main(String[] args) throws IOException { + public static void main(String[] args) { + // TODO: Replace the variables within {} + // parentPath: Use any one of the following options: // - organizations/{organization_id} // - folders/{folder_id} // - projects/{project_id} - // TODO: Replace the variables within {} - String parentPath = "{parent_path}"; + String parentPath = String.format("projects/%s", "your-google-cloud-project-id"); + + // muteConfigId: Set a random id; max of 63 chars. String muteConfigId = "random-mute-id-" + UUID.randomUUID(); createMuteRule(parentPath, muteConfigId); } @@ -40,7 +43,10 @@ public static void main(String[] args) throws IOException { // Creates a mute configuration under a given scope that will mute // all new findings that match a given filter. // Existing findings will not be muted. - public static void createMuteRule(String parentPath, String muteConfigId) throws IOException { + public static void createMuteRule(String parentPath, String muteConfigId) { + // 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()) { MuteConfig muteConfig = @@ -58,7 +64,6 @@ public static void createMuteRule(String parentPath, String muteConfigId) throws CreateMuteConfigRequest request = CreateMuteConfigRequest.newBuilder() .setParent(parentPath) - // Set a random id; max of 63 chars. .setMuteConfigId(muteConfigId) .setMuteConfig(muteConfig) .build(); @@ -66,6 +71,8 @@ public static void createMuteRule(String parentPath, String muteConfigId) throws // ExecutionException is thrown if the below call fails. MuteConfig response = client.createMuteConfig(request); System.out.println("Mute rule created successfully: " + response.getName()); + } catch (IOException e) { + System.out.println("Mute rule creation failed! \n Exception: " + e); } } } diff --git a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/DeleteMuteRule.java b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/DeleteMuteRule.java index ca6f4d521..dd03b509d 100644 --- a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/DeleteMuteRule.java +++ b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/DeleteMuteRule.java @@ -24,17 +24,26 @@ public class DeleteMuteRule { - public static void main(String[] args) throws IOException { - // muteConfigId: Specify the name of the mute config to delete. + public static void main(String[] args) { // TODO(Developer): Replace the following variables - String parentPath = "{project-id | folder | organization}"; - String muteConfigId = "{any-one-of-the-above-formats}"; + // parentPath: Use any one of the following options: + // - organizations/{organization_id} + // - folders/{folder_id} + // - projects/{project_id} + String parentPath = String.format("projects/%s", "your-google-cloud-project-id"); + + // muteConfigId: Specify the name of the mute config to delete. + String muteConfigId = "mute-config-id"; + deleteMuteRule(parentPath, muteConfigId); } // Deletes a mute configuration given its resource name. // Note: Previously muted findings are not affected when a mute config is deleted. - public static void deleteMuteRule(String projectId, String muteConfigId) throws IOException { + public static void deleteMuteRule(String projectId, String muteConfigId) { + // 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()) { // Use appropriate MuteConfigName methods depending on the type of parent. // (org -> MuteConfigName.ofOrganizationMuteConfigName() @@ -43,6 +52,8 @@ public static void deleteMuteRule(String projectId, String muteConfigId) throws client.deleteMuteConfig(MuteConfigName.ofProjectMuteConfigName(projectId, muteConfigId)); System.out.println("Mute rule deleted successfully: " + muteConfigId); + } catch (IOException e) { + System.out.println("Mute rule deletion failed! \n Exception: " + e); } } } diff --git a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/GetMuteRule.java b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/GetMuteRule.java index 50beac631..4947d40e2 100644 --- a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/GetMuteRule.java +++ b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/GetMuteRule.java @@ -25,16 +25,26 @@ public class GetMuteRule { - public static void main(String[] args) throws IOException { - // muteConfigId: Name of the mute config to retrieve. + public static void main(String[] args) { // TODO(Developer): Replace the following variables - String parentPath = "{project-id | folder | organization}"; - String muteConfigId = "{any-one-of-the-above-formats}"; + + // parentPath: Use any one of the following options: + // - organizations/{organization_id} + // - folders/{folder_id} + // - projects/{project_id} + String parentPath = String.format("projects/%s", "your-google-cloud-project-id"); + + // muteConfigId: Name of the mute config to retrieve. + String muteConfigId = "mute-config-id"; + getMuteRule(parentPath, muteConfigId); } // Retrieves a mute configuration given its resource name. - public static void getMuteRule(String projectId, String muteConfigId) throws IOException { + public static void getMuteRule(String projectId, String muteConfigId) { + // 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()) { // Use appropriate MuteConfigName methods depending on the type of parent. // (org -> MuteConfigName.ofOrganizationMuteConfigName() @@ -44,6 +54,8 @@ public static void getMuteRule(String projectId, String muteConfigId) throws IOE client.getMuteConfig(MuteConfigName.ofProjectMuteConfigName(projectId, muteConfigId)); System.out.println("Retrieved the mute config: " + muteConfig); + } catch (IOException e) { + System.out.println("Mute rule retrieval failed! \n Exception: " + e); } } } diff --git a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/ListMuteRules.java b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/ListMuteRules.java index 258907e59..fab448aae 100644 --- a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/ListMuteRules.java +++ b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/ListMuteRules.java @@ -25,21 +25,25 @@ public class ListMuteRules { - public static void main(String[] args) throws IOException { + public static void main(String[] args) { + // TODO: Replace variables enclosed within {} + // parent: Use any one of the following resource paths to list mute configurations: // - organizations/{organization_id} // - folders/{folder_id} // - projects/{project_id} - // TODO: Replace variables enclosed within {} - String parent = "projects/{project_id}"; - listMuteRules(parent); + String parentPath = String.format("projects/%s", "your-google-cloud-project-id"); + listMuteRules(parentPath); } // Listing mute configs at the organization level will return all the configs // at the org, folder and project levels. // Similarly, listing configs at folder level will list all the configs // at the folder and project levels. - public static void listMuteRules(String parent) throws IOException { + public static void listMuteRules(String parent) { + // 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()) { ListMuteConfigsRequest listMuteConfigsRequest = @@ -49,6 +53,8 @@ public static void listMuteRules(String parent) throws IOException { for (MuteConfig muteConfig : client.listMuteConfigs(listMuteConfigsRequest).iterateAll()) { System.out.println(muteConfig.getName()); } + } catch (IOException e) { + System.out.println("Listing Mute rule failed! \n Exception: " + e); } } } diff --git a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/SetMuteUnmuteFinding.java b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/SetMuteUnmuteFinding.java index a065a1b33..fa1accedd 100644 --- a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/SetMuteUnmuteFinding.java +++ b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/SetMuteUnmuteFinding.java @@ -26,14 +26,15 @@ public class SetMuteUnmuteFinding { - public static void main(String[] args) throws IOException { + public static void main(String[] args) { + // TODO: Replace the variables within {} + // findingPath: The relative resource name of the finding. See: // https://cloud.google.com/apis/design/resource_names#relative_resource_name // Use any one of the following formats: // - organizations/{organization_id}/sources/{source_id}/finding/{finding_id} // - folders/{folder_id}/sources/{source_id}/finding/{finding_id} // - projects/{project_id}/sources/{source_id}/finding/{finding_id} - // TODO: Replace the variables within {} String findingPath = "{path-to-the-finding}"; setMute(findingPath); } @@ -42,7 +43,10 @@ public static void main(String[] args) throws IOException { // If a finding is already muted, muting it again has no effect. // Similarly, unmuting a finding that isn't muted has no effect. // Various mute states are: MUTE_UNSPECIFIED/MUTE/UNMUTE. - public static void setMute(String findingPath) throws IOException { + public static void setMute(String findingPath) { + // 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()) { SetMuteRequest setMuteRequest = @@ -50,6 +54,8 @@ public static void setMute(String findingPath) throws IOException { Finding finding = client.setMute(setMuteRequest); System.out.println("Mute value for the finding: " + finding.getMute()); + } catch (IOException e) { + System.out.println("Mute rule set failed! \n Exception: " + e); } } } diff --git a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/UpdateMuteRule.java b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/UpdateMuteRule.java index bd28456cb..507c87770 100644 --- a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/UpdateMuteRule.java +++ b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/UpdateMuteRule.java @@ -26,20 +26,24 @@ public class UpdateMuteRule { - public static void main(String[] args) throws IOException { - // Specify the name of the mute config to delete. - // Use any one of the following formats: - // - organizations/{organization}/muteConfigs/{config_id} - // - folders/{folder}/muteConfigs/{config_id} - // - projects/{project}/muteConfigs/{config_id} + public static void main(String[] args) { // TODO: Replace the variables within {} + + // Specify the name of the mute config to delete. + // muteConfigName: Use any one of the following formats: + // - organizations/{organization}/muteConfigs/{config_id} + // - folders/{folder}/muteConfigs/{config_id} + // - projects/{project}/muteConfigs/{config_id} String muteConfigName = "{any-one-of-the-above-formats}"; updateMuteRule(muteConfigName); } // Updates an existing mute configuration. // The following can be updated in a mute config: description and filter. - public static void updateMuteRule(String muteConfigName) throws IOException { + public static void updateMuteRule(String muteConfigName) { + // 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 securityCenterClient = SecurityCenterClient.create()) { MuteConfig updateMuteConfig = @@ -62,6 +66,8 @@ public static void updateMuteRule(String muteConfigName) throws IOException { MuteConfig response = securityCenterClient.updateMuteConfig(updateMuteConfigRequest); System.out.println(response); + } catch (IOException e) { + System.out.println("Mute rule update failed! \n Exception: " + e); } } } diff --git a/samples/snippets/src/test/java/com/google/cloud/examples/securitycenter/snippets/MuteFindingIT.java b/samples/snippets/src/test/java/com/google/cloud/examples/securitycenter/snippets/MuteFindingIT.java index 41aa43de7..0e1d98590 100644 --- a/samples/snippets/src/test/java/com/google/cloud/examples/securitycenter/snippets/MuteFindingIT.java +++ b/samples/snippets/src/test/java/com/google/cloud/examples/securitycenter/snippets/MuteFindingIT.java @@ -43,7 +43,6 @@ import java.io.PrintStream; import java.time.Instant; import java.util.UUID; -import java.util.concurrent.ExecutionException; import org.junit.After; import org.junit.AfterClass; import org.junit.Assert; @@ -96,12 +95,14 @@ public static void setUp() throws IOException { } @AfterClass - public static void cleanUp() throws IOException { + public static void cleanUp() { final PrintStream out = System.out; stdOut = new ByteArrayOutputStream(); System.setOut(new PrintStream(stdOut)); DeleteMuteRule.deleteMuteRule(PROJECT_ID, MUTE_RULE_CREATE); + assertThat(stdOut.toString()).contains("Mute rule deleted successfully: " + MUTE_RULE_CREATE); DeleteMuteRule.deleteMuteRule(PROJECT_ID, MUTE_RULE_UPDATE); + assertThat(stdOut.toString()).contains("Mute rule deleted successfully: " + MUTE_RULE_UPDATE); stdOut = null; System.setOut(out); } @@ -191,21 +192,21 @@ public void afterEach() { } @Test - public void testGetMuteRule() throws IOException { + public void testGetMuteRule() { GetMuteRule.getMuteRule(PROJECT_ID, MUTE_RULE_CREATE); assertThat(stdOut.toString()).contains("Retrieved the mute config: "); assertThat(stdOut.toString()).contains(MUTE_RULE_CREATE); } @Test - public void testListMuteRules() throws IOException { + public void testListMuteRules() { ListMuteRules.listMuteRules(String.format("projects/%s", PROJECT_ID)); assertThat(stdOut.toString()).contains(MUTE_RULE_CREATE); assertThat(stdOut.toString()).contains(MUTE_RULE_UPDATE); } @Test - public void testUpdateMuteRules() throws IOException { + public void testUpdateMuteRules() { UpdateMuteRule.updateMuteRule( String.format("projects/%s/muteConfigs/%s", PROJECT_ID, MUTE_RULE_UPDATE)); GetMuteRule.getMuteRule(PROJECT_ID, MUTE_RULE_UPDATE); @@ -213,13 +214,13 @@ public void testUpdateMuteRules() throws IOException { } @Test - public void testSetMuteFinding() throws IOException { + public void testSetMuteFinding() { SetMuteUnmuteFinding.setMute(FINDING_1.getName()); assertThat(stdOut.toString()).contains("Mute value for the finding: MUTED"); } @Test - public void testBulkMuteFindings() throws IOException, ExecutionException, InterruptedException { + public void testBulkMuteFindings() throws IOException { // Mute findings that belong to this project. BulkMuteFindings.bulkMute( String.format("projects/%s", PROJECT_ID), @@ -228,7 +229,8 @@ public void testBulkMuteFindings() throws IOException, ExecutionException, Inter // Get all findings in the source to check if they are muted. ListFindingsPagedResponse response = getAllFindings( - String.format("projects/%s/sources/%s", PROJECT_ID, SOURCE.getName().split("/")[3])); + String.format("projects/%s/sources/%s", + PROJECT_ID, SOURCE.getName().split("/")[3])); for (ListFindingsResult finding : response.iterateAll()) { Assert.assertEquals(finding.getFinding().getMute(), Mute.MUTED); } From f868418eaf2698f7b89d2e802c5105d6250676d1 Mon Sep 17 00:00:00 2001 From: Sita Lakshmi Sangameswaran Date: Fri, 25 Mar 2022 10:59:03 +0530 Subject: [PATCH 23/25] lint fix --- .../securitycenter/snippets/muteconfig/BulkMuteFindings.java | 2 +- .../snippets/muteconfig/SetMuteUnmuteFinding.java | 2 +- .../cloud/examples/securitycenter/snippets/MuteFindingIT.java | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/BulkMuteFindings.java b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/BulkMuteFindings.java index 2b32fb5d0..2a5d36932 100644 --- a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/BulkMuteFindings.java +++ b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/BulkMuteFindings.java @@ -35,7 +35,7 @@ public static void main(String[] args) { // - projects/{project_id} String parentPath = String.format("projects/%s", "your-google-cloud-project-id"); - // muteRule: Expression that identifies findings that should be updated. + // muteRule: Expression that identifies findings that should be muted. // eg: "resource.project_display_name=\"PROJECT_ID\"" String muteRule = "{filter-condition}"; diff --git a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/SetMuteUnmuteFinding.java b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/SetMuteUnmuteFinding.java index fa1accedd..5091fba88 100644 --- a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/SetMuteUnmuteFinding.java +++ b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/SetMuteUnmuteFinding.java @@ -55,7 +55,7 @@ public static void setMute(String findingPath) { Finding finding = client.setMute(setMuteRequest); System.out.println("Mute value for the finding: " + finding.getMute()); } catch (IOException e) { - System.out.println("Mute rule set failed! \n Exception: " + e); + System.out.println("Failed to set the specified mute value. \n Exception: " + e); } } } diff --git a/samples/snippets/src/test/java/com/google/cloud/examples/securitycenter/snippets/MuteFindingIT.java b/samples/snippets/src/test/java/com/google/cloud/examples/securitycenter/snippets/MuteFindingIT.java index 0e1d98590..87c574196 100644 --- a/samples/snippets/src/test/java/com/google/cloud/examples/securitycenter/snippets/MuteFindingIT.java +++ b/samples/snippets/src/test/java/com/google/cloud/examples/securitycenter/snippets/MuteFindingIT.java @@ -134,9 +134,9 @@ public static Finding createFinding(String sourceName, String findingId) throws Instant eventTime = Instant.now(); // The resource this finding applies to. The Cloud Security Command Center UI can link - // the findings for a resource to the corresponding Asset of a resource + // the findings for a resource to the corresponding asset of a resource // if there are matches. - // TODO(Developer): Replace the below sample resource name + // TODO(Developer): Replace the sample resource name String resourceName = "//cloudresourcemanager.googleapis.com/organizations/11232"; // Set up a request to create a finding in a source. From cd906d41cd5a5ef9444686870c8539f8be67f002 Mon Sep 17 00:00:00 2001 From: Sita Lakshmi Sangameswaran Date: Sat, 26 Mar 2022 00:54:58 +0530 Subject: [PATCH 24/25] lint fix --- .../securitycenter/snippets/muteconfig/DeleteMuteRule.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/DeleteMuteRule.java b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/DeleteMuteRule.java index dd03b509d..e959269cf 100644 --- a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/DeleteMuteRule.java +++ b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/DeleteMuteRule.java @@ -46,7 +46,7 @@ public static void deleteMuteRule(String projectId, String muteConfigId) { // the "close" method on the client to safely clean up any remaining background resources. try (SecurityCenterClient client = SecurityCenterClient.create()) { // Use appropriate MuteConfigName methods depending on the type of parent. - // (org -> MuteConfigName.ofOrganizationMuteConfigName() + // org -> MuteConfigName.ofOrganizationMuteConfigName() // folder -> MuteConfigName.ofFolderMuteConfigName() // project -> MuteConfigName.ofProjectMuteConfigName) client.deleteMuteConfig(MuteConfigName.ofProjectMuteConfigName(projectId, muteConfigId)); From 0259064dee728bef70860506040cc656ae698dfc Mon Sep 17 00:00:00 2001 From: Sita Lakshmi Sangameswaran Date: Sat, 26 Mar 2022 01:03:10 +0530 Subject: [PATCH 25/25] lint fix --- .../securitycenter/snippets/muteconfig/ListMuteRules.java | 2 +- .../cloud/examples/securitycenter/snippets/MuteFindingIT.java | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/ListMuteRules.java b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/ListMuteRules.java index fab448aae..521d89394 100644 --- a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/ListMuteRules.java +++ b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/ListMuteRules.java @@ -37,7 +37,7 @@ public static void main(String[] args) { } // Listing mute configs at the organization level will return all the configs - // at the org, folder and project levels. + // at the org, folder, and project levels. // Similarly, listing configs at folder level will list all the configs // at the folder and project levels. public static void listMuteRules(String parent) { diff --git a/samples/snippets/src/test/java/com/google/cloud/examples/securitycenter/snippets/MuteFindingIT.java b/samples/snippets/src/test/java/com/google/cloud/examples/securitycenter/snippets/MuteFindingIT.java index 87c574196..56a8d1cbe 100644 --- a/samples/snippets/src/test/java/com/google/cloud/examples/securitycenter/snippets/MuteFindingIT.java +++ b/samples/snippets/src/test/java/com/google/cloud/examples/securitycenter/snippets/MuteFindingIT.java @@ -85,9 +85,9 @@ public static void setUp() throws IOException { // Create mute rules. CreateMuteRule.createMuteRule(String.format("projects/%s", PROJECT_ID), MUTE_RULE_CREATE); CreateMuteRule.createMuteRule(String.format("projects/%s", PROJECT_ID), MUTE_RULE_UPDATE); - // Create Source. + // Create source. SOURCE = createSource(ORGANIZATION_ID); - // Create Findings within the source. + // Create findings within the source. String uuid = UUID.randomUUID().toString().split("-")[0]; FINDING_1 = createFinding(SOURCE.getName(), "1testingscc" + uuid); FINDING_2 = createFinding(SOURCE.getName(), "2testingscc" + uuid);