8000 docs(samples): added samples for Mute config by Sita04 · Pull Request #719 · googleapis/java-securitycenter · GitHub
[go: up one dir, main page]

Skip to content
This repository was archived by the owner on Sep 16, 2023. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
34 commits
Select commit Hold shift + click to select a range
a8fe3df
docs(scc-samples): init add CRUD mute config samples
Sita04 Dec 21, 2021
91c6e73
added bulk mute and mute/unmute samples
Sita04 Dec 21, 2021
65061cd
refactor(samples): modified class name
Sita04 Dec 21, 2021
9d106d7
refactor(samples): added muteConfigId and refactored class name
Sita04 Dec 21, 2021
035f6ed
test(samples): added tests for mute config samples
Sita04 Dec 22, 2021
78a1073
🦉 Updates from OwlBot
gcf-owl-bot[bot] Dec 22, 2021
be3f070
docs(samples): updated samples and test files
Sita04 Feb 1, 2022
3eae120
Merge remote-tracking branch 'origin/mute-config-samples' into mute-c…
Sita04 Feb 1, 2022
9b29a46
Merge branch 'main' into mute-config-samples
Sita04 Feb 1, 2022
a1eaeaf
🦉 Updates from OwlBot
gcf-owl-bot[bot] Feb 1, 2022
458ea1c
Merge branch 'mute-config-samples' of https://github.com/googleapis/j…
gcf-owl-bot[bot] Feb 1, 2022
0347a16
docs(samples): lint fix
Sita04 Feb 1, 2022
3983db0
🦉 Updates from OwlBot
gcf-owl-bot[bot] Feb 1, 2022
44ef607
Merge branch 'mute-config-samples' of https://github.com/googleapis/j…
gcf-owl-bot[bot] Feb 1, 2022
29b6519
Merge remote-tracking branch 'origin/mute-config-samples' into mute-c…
Sita04 Feb 1, 2022
66aec2b
Merge remote-tracking branch 'origin/mute-config-samples' into mute-c…
Sita04 Feb 1, 2022
7440
b52adf5
docs(samples): applied documentation review comments
Sita04 Feb 2, 2022
5d0c7d4
docs(samples): applied review comments
Sita04 Feb 24, 2022
8a62abd
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Feb 24, 2022
6ef35fd
docs(samples): added test env variables
Sita04 Feb 24, 2022
7d5ab5d
Merge remote-tracking branch 'origin/mute-config-samples' into mute-c…
Sita04 Feb 24, 2022
76c782d
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Feb 24, 2022
75bc1da
docs(samples): added test env variables
Sita04 Feb 25, 2022
e514078
updated config typo
Sita04 Feb 25, 2022
9541362
Merge branch 'main' into mute-config-samples
Sita04 Mar 3, 2022
19b9e01
test: try changing the env var name
Neenu1995 Mar 17, 2022
3464ffc
Update samples.cfg
Neenu1995 Mar 21, 2022
6614822
Update samples.cfg
Neenu1995 Mar 22, 2022
34e0905
updated samples.cfg
Sita04 Mar 23, 2022
73d84f9
docs(samples): updated acc to review comments
Sita04 Mar 24, 2022
bb56253
Merge remote-tracking branch 'origin/mute-config-samples' into mute-c…
Sita04 Mar 24, 2022
f868418
lint fix
Sita04 Mar 25, 2022
cd906d4
lint fix
Sita04 Mar 25, 2022
0259064
lint fix
Sita04 Mar 25, 2022
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .kokoro/presubmit/samples.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -29,5 +29,5 @@ env_vars: {

env_vars: {
key: "SECRET_MANAGER_KEYS"
value: "java-docs-samples-service-account"
value: "java-docs-samples-service-account,java-scc-samples-secrets"
}
9 changes: 9 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ If you are using Maven with [BOM][libraries-bom], add this to your pom.xml file
<dependency>
<groupId>com.google.cloud</groupId>
<artifactId>google-cloud-securitycenter</artifactId>
<version>2.3.1</version>
</dependency>

<dependency>
Expand All @@ -56,6 +57,7 @@ If you are using Gradle 5.x or later, add this to your dependencies
```Groovy
implementation platform('com.google.cloud:libraries-bom:24.4.0')


implementation 'com.google.cloud:google-cloud-securitycenter'
```
If you are using Gradle without BOM, add this to your dependencies
Expand Down Expand Up @@ -117,6 +119,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) |



Expand Down
1 change: 1 addition & 0 deletions samples/snippets/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@
<dependency>
<groupId>com.google.cloud</groupId>
<artifactId>google-cloud-securitycenter</artifactId>
<version>2.3.1</version>
</dependency>

<dependency>
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
/*
* 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) {
// 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 muted.
// eg: "resource.project_display_name=\"PROJECT_ID\""
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) {
// 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 =
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();

// ExecutionException is thrown if the below call fails.
BulkMuteFindingsResponse response =
client.bulkMuteFindingsAsync(bulkMuteFindingsRequest).get();
527E
System.out.println("Bulk mute findings completed successfully! " + response);
} catch (IOException | InterruptedException | ExecutionException e) {
System.out.println("Bulk mute findings failed! \n Exception: " + e);
}
}
}
// [END securitycenter_bulk_mute]
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
/*
* 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;
import java.util.UUID;

public class CreateMuteRule {

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");

// muteConfigId: Set a random id; max of 63 chars.
String muteConfigId = "random-mute-id-" + UUID.randomUUID();
createMuteRule(parentPath, muteConfigId);
}

// 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) {
// 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 =
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#create_mute_rules
.setFilter(
"severity=\"LOW\" OR severity=\"MEDIUM\" AND "
+ "category=\"Persistence: IAM Anomalous Grant\" AND "
+ "-resource.type:\"compute\"")
.build();

CreateMuteConfigRequest request =
CreateMuteConfigRequest.newBuilder()
.setParent(parentPath)
.setMuteConfigId(muteConfigId)
.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());
} catch (IOException e) {
System.out.println("Mute rule creation failed! \n Exception: " + e);
}
}
}
// [END securitycenter_create_mute_config]
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
/*
* 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.
* 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 DeleteMuteRule {

public static void main(String[] args) {
// TODO(Developer): Replace the following variables
// 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) {
// 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()
// folder -> MuteConfigName.ofFolderMuteConfigName()
// project -> MuteConfigName.ofProjectMuteConfigName)
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);
}
}
}
// [END securitycenter_delete_mute_config]
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
/*
* 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.
* 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 GetMuteRule {

public static void main(String[] args) {
// TODO(Developer): Replace the following variables

// 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) {
// 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()
// folder -> MuteConfigName.ofFolderMuteConfigName()
// project -> MuteConfigName.ofProjectMuteConfigName)
MuteConfig muteConfig =
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);
}
}
}
// [END securitycenter_get_mute_config]
Loading
0