Skip to content
This repository has been archived by the owner on Sep 16, 2023. It is now read-only.

docs(samples): added samples and tests for BigQuery export RPCs #782

Merged
merged 18 commits into from
May 4, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
4 changes: 2 additions & 2 deletions .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"
}
10 changes: 10 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,11 @@ If you are using Maven with [BOM][libraries-bom], add this to your pom.xml file
<artifactId>google-cloud-pubsub</artifactId>
</dependency>

<dependency>
<groupId>com.google.cloud</groupId>
<artifactId>google-cloud-bigquery</artifactId>
</dependency>

```

If you are using Maven without BOM, add this to your dependencies:
Expand Down Expand Up @@ -118,6 +123,11 @@ 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) |
| Create Big Query Export | [source code](https://github.com/googleapis/java-securitycenter/blob/main/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/bigqueryexport/CreateBigQueryExport.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/bigqueryexport/CreateBigQueryExport.java) |
| Delete Big Query Export | [source code](https://github.com/googleapis/java-securitycenter/blob/main/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/bigqueryexport/DeleteBigQueryExport.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/bigqueryexport/DeleteBigQueryExport.java) |
| Get Big Query Export | [source code](https://github.com/googleapis/java-securitycenter/blob/main/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/bigqueryexport/GetBigQueryExport.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/bigqueryexport/GetBigQueryExport.java) |
| List Big Query Exports | [source code](https://github.com/googleapis/java-securitycenter/blob/main/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/bigqueryexport/ListBigQueryExports.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/bigqueryexport/ListBigQueryExports.java) |
| Update Big Query Export | [source code](https://github.com/googleapis/java-securitycenter/blob/main/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/bigqueryexport/UpdateBigQueryExport.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/bigqueryexport/UpdateBigQueryExport.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) |
Expand Down
6 changes: 6 additions & 0 deletions samples/snapshot/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,12 @@
<version>1.1.3</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.google.cloud</groupId>
<artifactId>google-cloud-bigquery</artifactId>
<version>2.9.3</version>
<scope>test</scope>
</dependency>
</dependencies>
<!-- {x-version-update-end} -->

Expand Down
5 changes: 5 additions & 0 deletions samples/snippets/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,11 @@
<groupId>com.google.cloud</groupId>
<artifactId>google-cloud-pubsub</artifactId>
</dependency>

<dependency>
<groupId>com.google.cloud</groupId>
<artifactId>google-cloud-bigquery</artifactId>
</dependency>
<!-- [END securitycenter_install_with_bom] -->

<dependency>
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
/*
* 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.bigqueryexport;

// [START securitycenter_create_bigquery_export]

import com.google.cloud.securitycenter.v1.BigQueryExport;
import com.google.cloud.securitycenter.v1.CreateBigQueryExportRequest;
import com.google.cloud.securitycenter.v1.SecurityCenterClient;
import java.io.IOException;
import java.util.UUID;

public class CreateBigQueryExport {

public static void main(String[] args) throws IOException {
// TODO(Developer): Modify the following variable values.

// parent: Use any one of the following resource paths:
Shabirmean marked this conversation as resolved.
Show resolved Hide resolved
// - organizations/{organization_id}
// - folders/{folder_id}
// - projects/{project_id}
String parent = String.format("projects/%s", "your-google-cloud-project-id");
Shabirmean marked this conversation as resolved.
Show resolved Hide resolved

// filter: Expression that defines the filter to apply across create/update events of findings.
String filter =
Sita04 marked this conversation as resolved.
Show resolved Hide resolved
"severity=\"LOW\" OR severity=\"MEDIUM\" AND "
+ "category=\"Persistence: IAM Anomalous Grant\" AND "
+ "-resource.type:\"compute\"";

// bigQueryDatasetId: The BigQuery dataset to write findings' updates to.
String bigQueryDatasetId = "your-bigquery-dataset-id";

// bigQueryExportId: Unique identifier provided by the client.
// For more info, see:
// https://cloud.google.com/security-command-center/docs/how-to-analyze-findings-in-big-query#export_findings_from_to
String bigQueryExportId = "default-" + UUID.randomUUID().toString().split("-")[0];

createBigQueryExport(parent, filter, bigQueryDatasetId, bigQueryExportId);
}

// Create export configuration to export findings from a project to a BigQuery dataset.
Sita04 marked this conversation as resolved.
Show resolved Hide resolved
// Optionally specify filter to export certain findings only.
public static void createBigQueryExport(
String parent, String filter, String bigQueryDatasetId, String bigQueryExportId)
throws IOException {
// Initialize client that will be used to send requests. This client only needs to be created
// once, and can be reused for multiple requests. After completing all of your requests, call
// the "close" method on the client to safely clean up any remaining background resources.
try (SecurityCenterClient client = SecurityCenterClient.create()) {
Sita04 marked this conversation as resolved.
Show resolved Hide resolved

// Create the BigQuery export configuration.
BigQueryExport bigQueryExport =
BigQueryExport.newBuilder()
.setDescription(
"Export low and medium findings if the compute resource "
+ "has an IAM anomalous grant")
.setFilter(filter)
.setDataset(String.format("%s/datasets/%s", parent, bigQueryDatasetId))
.build();

CreateBigQueryExportRequest bigQueryExportRequest =
CreateBigQueryExportRequest.newBuilder()
.setParent(parent)
.setBigQueryExport(bigQueryExport)
.setBigQueryExportId(bigQueryExportId)
.build();

// Create the export request.
BigQueryExport response = client.createBigQueryExport(bigQueryExportRequest);

System.out.printf("BigQuery export request created successfully: %s\n", response.getName());
}
}
}
// [END securitycenter_create_bigquery_export]
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.bigqueryexport;

// [START securitycenter_delete_bigquery_export]

import com.google.cloud.securitycenter.v1.DeleteBigQueryExportRequest;
import com.google.cloud.securitycenter.v1.SecurityCenterClient;
import java.io.IOException;

public class DeleteBigQueryExport {

public static void main(String[] args) throws IOException {
// TODO(Developer): Modify the following variable values.
Shabirmean marked this conversation as resolved.
Show resolved Hide resolved

// parent: Use any one of the following resource paths:
// - organizations/{organization_id}
// - folders/{folder_id}
// - projects/{project_id}
String parent = String.format("projects/%s", "your-google-cloud-project-id");

// bigQueryExportId: Unique identifier that is used to identify the export.
String bigQueryExportId = "export-id";

deleteBigQueryExport(parent, bigQueryExportId);
}

// Delete an existing BigQuery export.
public static void deleteBigQueryExport(String parent, String bigQueryExportId)
throws IOException {
// Initialize client that will be used to send requests. This client only needs to be created
// once, and can be reused for multiple requests. After completing all of your requests, call
// the "close" method on the client to safely clean up any remaining background resources.
try (SecurityCenterClient client = SecurityCenterClient.create()) {

DeleteBigQueryExportRequest bigQueryExportRequest =
DeleteBigQueryExportRequest.newBuilder()
.setName(String.format("%s/bigQueryExports/%s", parent, bigQueryExportId))
.build();

client.deleteBigQueryExport(bigQueryExportRequest);
System.out.printf("BigQuery export request deleted successfully: %s", bigQueryExportId);
}
}
}
// [END securitycenter_delete_bigquery_export]
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.bigqueryexport;

// [START securitycenter_get_bigquery_export]

import com.google.cloud.securitycenter.v1.BigQueryExport;
import com.google.cloud.securitycenter.v1.GetBigQueryExportRequest;
import com.google.cloud.securitycenter.v1.SecurityCenterClient;
import java.io.IOException;

public class GetBigQueryExport {

public static void main(String[] args) throws IOException {
// TODO(Developer): Modify the following variable values.

// parent: Use any one of the following resource paths:
// - organizations/{organization_id}
// - folders/{folder_id}
// - projects/{project_id}
String parent = String.format("projects/%s", "your-google-cloud-project-id");

// bigQueryExportId: Unique identifier that is used to identify the export.
String bigQueryExportId = "export-id";

getBigQueryExport(parent, bigQueryExportId);
}

// Retrieve an existing BigQuery export.
public static void getBigQueryExport(String parent, String bigQueryExportId) throws IOException {
// Initialize client that will be used to send requests. This client only needs to be created
// once, and can be reused for multiple requests. After completing all of your requests, call
// the "close" method on the client to safely clean up any remaining background resources.
try (SecurityCenterClient client = SecurityCenterClient.create()) {

GetBigQueryExportRequest bigQueryExportRequest =
GetBigQueryExportRequest.newBuilder()
.setName(String.format("%s/bigQueryExports/%s", parent, bigQueryExportId))
.build();

BigQueryExport response = client.getBigQueryExport(bigQueryExportRequest);
System.out.printf("Retrieved the BigQuery export: %s", response.getName());
}
}
}
// [END securitycenter_get_bigquery_export]
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
/*
* 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.bigqueryexport;

// [START securitycenter_list_bigquery_export]

import com.google.cloud.securitycenter.v1.BigQueryExport;
import com.google.cloud.securitycenter.v1.ListBigQueryExportsRequest;
import com.google.cloud.securitycenter.v1.SecurityCenterClient;
import com.google.cloud.securitycenter.v1.SecurityCenterClient.ListBigQueryExportsPagedResponse;
import java.io.IOException;

public class ListBigQueryExports {

public static void main(String[] args) throws IOException {
// TODO(Developer): Modify the following variable values.

// parent: The parent, which owns the collection of BigQuery exports.
// Use any one of the following resource paths:
// - organizations/{organization_id}
// - folders/{folder_id}
// - projects/{project_id}
String parent = String.format("projects/%s", "your-google-cloud-project-id");

listBigQueryExports(parent);
}

// List BigQuery exports in the given parent.
public static void listBigQueryExports(String parent) throws IOException {
// Initialize client that will be used to send requests. This client only needs to be created
// once, and can be reused for multiple requests. After completing all of your requests, call
// the "close" method on the client to safely clean up any remaining background resources.
try (SecurityCenterClient client = SecurityCenterClient.create()) {

ListBigQueryExportsRequest request =
ListBigQueryExportsRequest.newBuilder().setParent(parent).build();

ListBigQueryExportsPagedResponse response = client.listBigQueryExports(request);

System.out.println("Listing BigQuery exports:");
for (BigQueryExport bigQueryExport : response.iterateAll()) {
System.out.println(bigQueryExport.getName());
}
}
}
}
// [END securitycenter_list_bigquery_export]