From cedb9a1430f624bc20eb88f23224ec338e8fc2d1 Mon Sep 17 00:00:00 2001 From: SitaLakshmi Date: Tue, 15 Mar 2022 14:11:27 +0530 Subject: [PATCH 01/13] docs(samples): added samples and tests for BigQuery export RPCs --- samples/snippets/pom.xml | 5 + .../bigqueryexport/CreateBigQueryExport.java | 77 +++++++++ .../bigqueryexport/DeleteBigQueryExport.java | 53 ++++++ .../bigqueryexport/GetBigQueryExport.java | 54 +++++++ .../bigqueryexport/ListBigQueryExports.java | 57 +++++++ .../bigqueryexport/UpdateBigQueryExport.java | 77 +++++++++ .../snippets/BigQueryExportIT.java | 152 ++++++++++++++++++ 7 files changed, 475 insertions(+) create mode 100644 samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/bigqueryexport/CreateBigQueryExport.java create mode 100644 samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/bigqueryexport/DeleteBigQueryExport.java create mode 100644 samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/bigqueryexport/GetBigQueryExport.java create mode 100644 samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/bigqueryexport/ListBigQueryExports.java create mode 100644 samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/bigqueryexport/UpdateBigQueryExport.java create mode 100644 samples/snippets/src/test/java/com/google/cloud/examples/securitycenter/snippets/BigQueryExportIT.java diff --git a/samples/snippets/pom.xml b/samples/snippets/pom.xml index 32291ed8d..3fa6ffd97 100644 --- a/samples/snippets/pom.xml +++ b/samples/snippets/pom.xml @@ -47,6 +47,11 @@ com.google.cloud google-cloud-pubsub + + + com.google.cloud + google-cloud-bigquery + diff --git a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/bigqueryexport/CreateBigQueryExport.java b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/bigqueryexport/CreateBigQueryExport.java new file mode 100644 index 000000000..209c9f569 --- /dev/null +++ b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/bigqueryexport/CreateBigQueryExport.java @@ -0,0 +1,77 @@ +/* + * 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: + // - organizations/{organization_id} + // - folders/{folder_id} + // - projects/{project_id} + // filter: Expression that defines the filter to apply across create/update events of findings. + // bigQueryDatasetId: The BigQuery dataset to write findings' updates to. + // bigQueryExportId: Unique identifier provided by the client. + // For more info, refer: https://cloud.google.com/security-command-center/docs/how-to-analyze-findings-in-big-query#export_findings_from_to + String parent = String.format("projects/%s", "your-google-cloud-project-id"); + String filter = "severity=\"LOW\" OR severity=\"MEDIUM\" AND " + + "category=\"Persistence: IAM Anomalous Grant\" AND " + + "-resource.type:\"compute\""; + String bigQueryDatasetId = "your-bigquery-dataset-id"; + String bigQueryExportId = UUID.randomUUID().toString().toLowerCase(); + + createBigQueryExport(parent, filter, bigQueryDatasetId, bigQueryExportId); + } + + + // Create export configuration to export findings from a project to a BigQuery dataset. + // Optionally specify filter to export certain findings only. + public static void createBigQueryExport(String parent, String filter, String bigQueryDatasetId, + String bigQueryExportId) throws IOException { + try (SecurityCenterClient client = SecurityCenterClient.create()) { + + // 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] \ No newline at end of file diff --git a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/bigqueryexport/DeleteBigQueryExport.java b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/bigqueryexport/DeleteBigQueryExport.java new file mode 100644 index 000000000..6470a4611 --- /dev/null +++ b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/bigqueryexport/DeleteBigQueryExport.java @@ -0,0 +1,53 @@ +/* + * 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. + // parent: Use any one of the following resource paths: + // - organizations/{organization_id} + // - folders/{folder_id} + // - projects/{project_id} + // bigQueryExportId: Unique identifier that is used to identify the export. + String parent = String.format("projects/%s", "your-google-cloud-project-id"); + String bigQueryExportId = "export-id"; + deleteBigQueryExport(parent, bigQueryExportId); + } + + // Delete an existing BigQuery export. + public static void deleteBigQueryExport(String parent, String bigQueryExportId) + throws IOException { + 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] \ No newline at end of file diff --git a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/bigqueryexport/GetBigQueryExport.java b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/bigqueryexport/GetBigQueryExport.java new file mode 100644 index 000000000..70ef40d2c --- /dev/null +++ b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/bigqueryexport/GetBigQueryExport.java @@ -0,0 +1,54 @@ +/* + * 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} + // bigQueryExportId: Unique identifier that is used to identify the export. + String parent = String.format("projects/%s", "your-google-cloud-project-id"); + String bigQueryExportId = "export-id"; + + getBigQueryExport(parent, bigQueryExportId); + } + + // Retrieve an existing BigQuery export. + public static void getBigQueryExport(String parent, String bigQueryExportId) throws IOException { + 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] \ No newline at end of file diff --git a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/bigqueryexport/ListBigQueryExports.java b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/bigqueryexport/ListBigQueryExports.java new file mode 100644 index 000000000..1912fd030 --- /dev/null +++ b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/bigqueryexport/ListBigQueryExports.java @@ -0,0 +1,57 @@ +/* + * 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: 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 { + try (SecurityCenterClient client = SecurityCenterClient.create()) { + + ListBigQueryExportsRequest request = ListBigQueryExportsRequest.newBuilder() + // The parent, which owns the collection of BigQuery exports. + .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] \ No newline at end of file diff --git a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/bigqueryexport/UpdateBigQueryExport.java b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/bigqueryexport/UpdateBigQueryExport.java new file mode 100644 index 000000000..66e5e3536 --- /dev/null +++ b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/bigqueryexport/UpdateBigQueryExport.java @@ -0,0 +1,77 @@ +/* + * 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_update_bigquery_export] + +import com.google.cloud.securitycenter.v1.BigQueryExport; +import com.google.cloud.securitycenter.v1.SecurityCenterClient; +import com.google.cloud.securitycenter.v1.UpdateBigQueryExportRequest; +import com.google.protobuf.FieldMask; +import java.io.IOException; +import java.util.UUID; + +public class UpdateBigQueryExport { + + 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} + // filter: Expression that defines the filter to apply across create/update events of findings. + // bigQueryExportId: Unique identifier provided by the client. + // For more info, refer: https://cloud.google.com/security-command-center/docs/how-to-analyze-findings-in-big-query#export_findings_from_to + String parent = String.format("projects/%s", "your-google-cloud-project-id"); + String filter = "severity=\"LOW\" OR severity=\"MEDIUM\" AND " + + "category=\"Persistence: IAM Anomalous Grant\" AND " + + "-resource.type:\"compute\""; + String bigQueryExportId = UUID.randomUUID().toString().toLowerCase(); + + updateBigQueryExport(parent, filter, bigQueryExportId); + } + + // Updates an existing BigQuery export. + public static void updateBigQueryExport(String parent, String filter, String bigQueryExportId) + throws IOException { + try (SecurityCenterClient client = SecurityCenterClient.create()) { + + // Set the new values for export configuration. + BigQueryExport bigQueryExport = BigQueryExport.newBuilder() + .setName(String.format("%s/bigQueryExports/%s", parent, bigQueryExportId)) + .setFilter(filter) + .build(); + + UpdateBigQueryExportRequest request = UpdateBigQueryExportRequest.newBuilder() + .setBigQueryExport(bigQueryExport) + // Set the update mask to specify which properties should be updated. + // If empty, all mutable fields will be updated. + // For more info on constructing field mask path, see the proto or: + // https://cloud.google.com/java/docs/reference/protobuf/latest/com.google.protobuf.FieldMask + .setUpdateMask(FieldMask.newBuilder().addPaths("filter").build()) + .build(); + + BigQueryExport response = client.updateBigQueryExport(request); + if (response.getFilter().equalsIgnoreCase(filter)) { + System.out.println("BigQueryExport updated successfully!"); + return; + } + System.out.println("Failed to update BigQueryExport!"); + } + } +} +// [END securitycenter_update_bigquery_export] \ No newline at end of file diff --git a/samples/snippets/src/test/java/com/google/cloud/examples/securitycenter/snippets/BigQueryExportIT.java b/samples/snippets/src/test/java/com/google/cloud/examples/securitycenter/snippets/BigQueryExportIT.java new file mode 100644 index 000000000..f66136e6f --- /dev/null +++ b/samples/snippets/src/test/java/com/google/cloud/examples/securitycenter/snippets/BigQueryExportIT.java @@ -0,0 +1,152 @@ +/* + * 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; + +import static com.google.common.truth.Truth.assertThat; +import static com.google.common.truth.Truth.assertWithMessage; + +import com.google.cloud.bigquery.BigQuery; +import com.google.cloud.bigquery.BigQueryException; +import com.google.cloud.bigquery.BigQueryOptions; +import com.google.cloud.bigquery.Dataset; +import com.google.cloud.bigquery.DatasetInfo; +import com.google.cloud.examples.securitycenter.snippets.bigqueryexport.CreateBigQueryExport; +import com.google.cloud.examples.securitycenter.snippets.bigqueryexport.DeleteBigQueryExport; +import com.google.cloud.examples.securitycenter.snippets.bigqueryexport.GetBigQueryExport; +import com.google.cloud.examples.securitycenter.snippets.bigqueryexport.ListBigQueryExports; +import com.google.cloud.examples.securitycenter.snippets.bigqueryexport.UpdateBigQueryExport; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.PrintStream; +import java.util.UUID; +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 BigQueryExportIT { + + // TODO(Developer): Replace the below variables. + private static final String PROJECT_ID = System.getenv("SCC_PROJECT_ID"); + private static final String BQ_DATASET_NAME = "sampledataset"; + private static final String BQ_EXPORT_ID = UUID.randomUUID().toString(); + + private static 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 { + final PrintStream out = System.out; + stdOut = new ByteArrayOutputStream(); + System.setOut(new PrintStream(stdOut)); + + requireEnvVar("GOOGLE_APPLICATION_CREDENTIALS"); + requireEnvVar("SCC_PROJECT_ID"); + + // Create a BigQuery dataset. + createBigQueryDataset(BQ_DATASET_NAME); + // Create export request. + String filter = "severity=\"LOW\" OR severity=\"MEDIUM\""; + CreateBigQueryExport.createBigQueryExport(String.format("projects/%s", PROJECT_ID), filter, + BQ_DATASET_NAME, BQ_EXPORT_ID); + + stdOut = null; + System.setOut(out); + } + + @AfterClass + public static void cleanUp() throws IOException { + final PrintStream out = System.out; + stdOut = new ByteArrayOutputStream(); + System.setOut(new PrintStream(stdOut)); + + // Delete BigQuery Dataset and export request. + deleteBigQueryDataset(BQ_DATASET_NAME); + DeleteBigQueryExport.deleteBigQueryExport(String.format("projects/%s", PROJECT_ID), + BQ_EXPORT_ID); + + stdOut = null; + System.setOut(out); + } + + private static void createBigQueryDataset(String datasetName) { + try { + BigQuery bigquery = BigQueryOptions.getDefaultInstance().getService(); + + DatasetInfo datasetInfo = DatasetInfo.newBuilder(datasetName).build(); + + Dataset newDataset = bigquery.create(datasetInfo); + String newDatasetName = newDataset.getDatasetId().getDataset(); + System.out.println(newDatasetName + " created successfully"); + } catch (BigQueryException e) { + Assert.fail("Dataset was not created. \n" + e); + } + } + + private static void deleteBigQueryDataset(String datasetName) { + try { + BigQuery bigquery = BigQueryOptions.getDefaultInstance().getService(); + Assert.assertTrue("Deleted BigQuery dataset", bigquery.delete(datasetName)); + } catch (BigQueryException e) { + Assert.fail("Dataset was not deleted. \n" + e); + } + } + + @Before + public void beforeEach() { + stdOut = new ByteArrayOutputStream(); + System.setOut(new PrintStream(stdOut)); + } + + @After + public void afterEach() { + stdOut = null; + System.setOut(null); + } + + @Test + public void testGetBigQueryExport() throws IOException { + GetBigQueryExport.getBigQueryExport(String.format("projects/%s", PROJECT_ID), BQ_EXPORT_ID); + assertThat(stdOut.toString()).contains(BQ_EXPORT_ID); + } + + @Test + public void testListBigQueryExports() throws IOException { + ListBigQueryExports.listBigQueryExports(String.format("projects/%s", PROJECT_ID)); + assertThat(stdOut.toString()).contains(BQ_EXPORT_ID); + } + + @Test + public void testUpdateBigQueryExport() throws IOException { + String filter = "severity=\"MEDIUM\""; + UpdateBigQueryExport.updateBigQueryExport(String.format("projects/%s", PROJECT_ID), filter, + BQ_EXPORT_ID); + assertThat(stdOut.toString()).contains("BigQueryExport updated successfully!"); + } + +} From d6c7822c07c3d2f498d4eac05f90cf05a77bc74a Mon Sep 17 00:00:00 2001 From: Owl Bot Date: Tue, 15 Mar 2022 08:45:11 +0000 Subject: [PATCH 02/13] =?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 | 12 +++++- .../bigqueryexport/CreateBigQueryExport.java | 42 ++++++++++--------- .../bigqueryexport/DeleteBigQueryExport.java | 9 ++-- .../bigqueryexport/GetBigQueryExport.java | 9 ++-- .../bigqueryexport/ListBigQueryExports.java | 11 ++--- .../bigqueryexport/UpdateBigQueryExport.java | 38 +++++++++-------- .../snippets/BigQueryExportIT.java | 13 +++--- 7 files changed, 77 insertions(+), 57 deletions(-) diff --git a/README.md b/README.md index 95b93b397..088b98af0 100644 --- a/README.md +++ b/README.md @@ -37,6 +37,11 @@ If you are using Maven with [BOM][libraries-bom], add this to your pom.xml file google-cloud-pubsub + + com.google.cloud + google-cloud-bigquery + + ``` If you are using Maven without BOM, add this to your dependencies: @@ -54,7 +59,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.4.0') +implementation platform('com.google.cloud:libraries-bom:25.0.0') implementation 'com.google.cloud:google-cloud-securitycenter' ``` @@ -117,6 +122,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) | diff --git a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/bigqueryexport/CreateBigQueryExport.java b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/bigqueryexport/CreateBigQueryExport.java index 209c9f569..7f3201e48 100644 --- a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/bigqueryexport/CreateBigQueryExport.java +++ b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/bigqueryexport/CreateBigQueryExport.java @@ -35,37 +35,41 @@ public static void main(String[] args) throws IOException { // filter: Expression that defines the filter to apply across create/update events of findings. // bigQueryDatasetId: The BigQuery dataset to write findings' updates to. // bigQueryExportId: Unique identifier provided by the client. - // For more info, refer: https://cloud.google.com/security-command-center/docs/how-to-analyze-findings-in-big-query#export_findings_from_to + // For more info, refer: + // https://cloud.google.com/security-command-center/docs/how-to-analyze-findings-in-big-query#export_findings_from_to String parent = String.format("projects/%s", "your-google-cloud-project-id"); - String filter = "severity=\"LOW\" OR severity=\"MEDIUM\" AND " - + "category=\"Persistence: IAM Anomalous Grant\" AND " - + "-resource.type:\"compute\""; + String filter = + "severity=\"LOW\" OR severity=\"MEDIUM\" AND " + + "category=\"Persistence: IAM Anomalous Grant\" AND " + + "-resource.type:\"compute\""; String bigQueryDatasetId = "your-bigquery-dataset-id"; String bigQueryExportId = UUID.randomUUID().toString().toLowerCase(); createBigQueryExport(parent, filter, bigQueryDatasetId, bigQueryExportId); } - // Create export configuration to export findings from a project to a BigQuery dataset. // Optionally specify filter to export certain findings only. - public static void createBigQueryExport(String parent, String filter, String bigQueryDatasetId, - String bigQueryExportId) throws IOException { + public static void createBigQueryExport( + String parent, String filter, String bigQueryDatasetId, String bigQueryExportId) + throws IOException { try (SecurityCenterClient client = SecurityCenterClient.create()) { // 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(); + 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(); + CreateBigQueryExportRequest bigQueryExportRequest = + CreateBigQueryExportRequest.newBuilder() + .setParent(parent) + .setBigQueryExport(bigQueryExport) + .setBigQueryExportId(bigQueryExportId) + .build(); // Create the export request. BigQueryExport response = client.createBigQueryExport(bigQueryExportRequest); @@ -74,4 +78,4 @@ public static void createBigQueryExport(String parent, String filter, String big } } } -// [END securitycenter_create_bigquery_export] \ No newline at end of file +// [END securitycenter_create_bigquery_export] diff --git a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/bigqueryexport/DeleteBigQueryExport.java b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/bigqueryexport/DeleteBigQueryExport.java index 6470a4611..069abad2c 100644 --- a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/bigqueryexport/DeleteBigQueryExport.java +++ b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/bigqueryexport/DeleteBigQueryExport.java @@ -41,13 +41,14 @@ public static void deleteBigQueryExport(String parent, String bigQueryExportId) throws IOException { try (SecurityCenterClient client = SecurityCenterClient.create()) { - DeleteBigQueryExportRequest bigQueryExportRequest = DeleteBigQueryExportRequest.newBuilder() - .setName(String.format("%s/bigQueryExports/%s", parent, bigQueryExportId)) - .build(); + 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] \ No newline at end of file +// [END securitycenter_delete_bigquery_export] diff --git a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/bigqueryexport/GetBigQueryExport.java b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/bigqueryexport/GetBigQueryExport.java index 70ef40d2c..83267d69a 100644 --- a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/bigqueryexport/GetBigQueryExport.java +++ b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/bigqueryexport/GetBigQueryExport.java @@ -42,13 +42,14 @@ public static void main(String[] args) throws IOException { public static void getBigQueryExport(String parent, String bigQueryExportId) throws IOException { try (SecurityCenterClient client = SecurityCenterClient.create()) { - GetBigQueryExportRequest bigQueryExportRequest = GetBigQueryExportRequest.newBuilder() - .setName(String.format("%s/bigQueryExports/%s", parent, bigQueryExportId)) - .build(); + 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] \ No newline at end of file +// [END securitycenter_get_bigquery_export] diff --git a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/bigqueryexport/ListBigQueryExports.java b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/bigqueryexport/ListBigQueryExports.java index 1912fd030..de55d52e2 100644 --- a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/bigqueryexport/ListBigQueryExports.java +++ b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/bigqueryexport/ListBigQueryExports.java @@ -40,10 +40,11 @@ public static void main(String[] args) throws IOException { public static void listBigQueryExports(String parent) throws IOException { try (SecurityCenterClient client = SecurityCenterClient.create()) { - ListBigQueryExportsRequest request = ListBigQueryExportsRequest.newBuilder() - // The parent, which owns the collection of BigQuery exports. - .setParent(parent) - .build(); + ListBigQueryExportsRequest request = + ListBigQueryExportsRequest.newBuilder() + // The parent, which owns the collection of BigQuery exports. + .setParent(parent) + .build(); ListBigQueryExportsPagedResponse response = client.listBigQueryExports(request); @@ -54,4 +55,4 @@ public static void listBigQueryExports(String parent) throws IOException { } } } -// [END securitycenter_list_bigquery_export] \ No newline at end of file +// [END securitycenter_list_bigquery_export] diff --git a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/bigqueryexport/UpdateBigQueryExport.java b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/bigqueryexport/UpdateBigQueryExport.java index 66e5e3536..df3657187 100644 --- a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/bigqueryexport/UpdateBigQueryExport.java +++ b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/bigqueryexport/UpdateBigQueryExport.java @@ -35,11 +35,13 @@ public static void main(String[] args) throws IOException { // - projects/{project_id} // filter: Expression that defines the filter to apply across create/update events of findings. // bigQueryExportId: Unique identifier provided by the client. - // For more info, refer: https://cloud.google.com/security-command-center/docs/how-to-analyze-findings-in-big-query#export_findings_from_to + // For more info, refer: + // https://cloud.google.com/security-command-center/docs/how-to-analyze-findings-in-big-query#export_findings_from_to String parent = String.format("projects/%s", "your-google-cloud-project-id"); - String filter = "severity=\"LOW\" OR severity=\"MEDIUM\" AND " - + "category=\"Persistence: IAM Anomalous Grant\" AND " - + "-resource.type:\"compute\""; + String filter = + "severity=\"LOW\" OR severity=\"MEDIUM\" AND " + + "category=\"Persistence: IAM Anomalous Grant\" AND " + + "-resource.type:\"compute\""; String bigQueryExportId = UUID.randomUUID().toString().toLowerCase(); updateBigQueryExport(parent, filter, bigQueryExportId); @@ -51,19 +53,21 @@ public static void updateBigQueryExport(String parent, String filter, String big try (SecurityCenterClient client = SecurityCenterClient.create()) { // Set the new values for export configuration. - BigQueryExport bigQueryExport = BigQueryExport.newBuilder() - .setName(String.format("%s/bigQueryExports/%s", parent, bigQueryExportId)) - .setFilter(filter) - .build(); + BigQueryExport bigQueryExport = + BigQueryExport.newBuilder() + .setName(String.format("%s/bigQueryExports/%s", parent, bigQueryExportId)) + .setFilter(filter) + .build(); - UpdateBigQueryExportRequest request = UpdateBigQueryExportRequest.newBuilder() - .setBigQueryExport(bigQueryExport) - // Set the update mask to specify which properties should be updated. - // If empty, all mutable fields will be updated. - // For more info on constructing field mask path, see the proto or: - // https://cloud.google.com/java/docs/reference/protobuf/latest/com.google.protobuf.FieldMask - .setUpdateMask(FieldMask.newBuilder().addPaths("filter").build()) - .build(); + UpdateBigQueryExportRequest request = + UpdateBigQueryExportRequest.newBuilder() + .setBigQueryExport(bigQueryExport) + // Set the update mask to specify which properties should be updated. + // If empty, all mutable fields will be updated. + // For more info on constructing field mask path, see the proto or: + // https://cloud.google.com/java/docs/reference/protobuf/latest/com.google.protobuf.FieldMask + .setUpdateMask(FieldMask.newBuilder().addPaths("filter").build()) + .build(); BigQueryExport response = client.updateBigQueryExport(request); if (response.getFilter().equalsIgnoreCase(filter)) { @@ -74,4 +78,4 @@ public static void updateBigQueryExport(String parent, String filter, String big } } } -// [END securitycenter_update_bigquery_export] \ No newline at end of file +// [END securitycenter_update_bigquery_export] diff --git a/samples/snippets/src/test/java/com/google/cloud/examples/securitycenter/snippets/BigQueryExportIT.java b/samples/snippets/src/test/java/com/google/cloud/examples/securitycenter/snippets/BigQueryExportIT.java index f66136e6f..1f10035cd 100644 --- a/samples/snippets/src/test/java/com/google/cloud/examples/securitycenter/snippets/BigQueryExportIT.java +++ b/samples/snippets/src/test/java/com/google/cloud/examples/securitycenter/snippets/BigQueryExportIT.java @@ -72,8 +72,8 @@ public static void setUp() throws IOException { createBigQueryDataset(BQ_DATASET_NAME); // Create export request. String filter = "severity=\"LOW\" OR severity=\"MEDIUM\""; - CreateBigQueryExport.createBigQueryExport(String.format("projects/%s", PROJECT_ID), filter, - BQ_DATASET_NAME, BQ_EXPORT_ID); + CreateBigQueryExport.createBigQueryExport( + String.format("projects/%s", PROJECT_ID), filter, BQ_DATASET_NAME, BQ_EXPORT_ID); stdOut = null; System.setOut(out); @@ -87,8 +87,8 @@ public static void cleanUp() throws IOException { // Delete BigQuery Dataset and export request. deleteBigQueryDataset(BQ_DATASET_NAME); - DeleteBigQueryExport.deleteBigQueryExport(String.format("projects/%s", PROJECT_ID), - BQ_EXPORT_ID); + DeleteBigQueryExport.deleteBigQueryExport( + String.format("projects/%s", PROJECT_ID), BQ_EXPORT_ID); stdOut = null; System.setOut(out); @@ -144,9 +144,8 @@ public void testListBigQueryExports() throws IOException { @Test public void testUpdateBigQueryExport() throws IOException { String filter = "severity=\"MEDIUM\""; - UpdateBigQueryExport.updateBigQueryExport(String.format("projects/%s", PROJECT_ID), filter, - BQ_EXPORT_ID); + UpdateBigQueryExport.updateBigQueryExport( + String.format("projects/%s", PROJECT_ID), filter, BQ_EXPORT_ID); assertThat(stdOut.toString()).contains("BigQueryExport updated successfully!"); } - } From 29038182b8f8a55f5c18536f45d61f957fbbc5c6 Mon Sep 17 00:00:00 2001 From: SitaLakshmi Date: Thu, 24 Mar 2022 18:12:07 +0530 Subject: [PATCH 03/13] docs(samples): updated acc to review comments --- .../bigqueryexport/CreateBigQueryExport.java | 20 +++++++++++----- .../bigqueryexport/DeleteBigQueryExport.java | 8 ++++++- .../bigqueryexport/GetBigQueryExport.java | 7 +++++- .../bigqueryexport/ListBigQueryExports.java | 9 ++++++-- .../bigqueryexport/UpdateBigQueryExport.java | 23 +++++++++++-------- .../snippets/BigQueryExportIT.java | 2 ++ 6 files changed, 50 insertions(+), 19 deletions(-) diff --git a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/bigqueryexport/CreateBigQueryExport.java b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/bigqueryexport/CreateBigQueryExport.java index 7f3201e48..55c10a5b0 100644 --- a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/bigqueryexport/CreateBigQueryExport.java +++ b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/bigqueryexport/CreateBigQueryExport.java @@ -28,21 +28,25 @@ 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: // - organizations/{organization_id} // - folders/{folder_id} // - projects/{project_id} - // filter: Expression that defines the filter to apply across create/update events of findings. - // bigQueryDatasetId: The BigQuery dataset to write findings' updates to. - // bigQueryExportId: Unique identifier provided by the client. - // For more info, refer: - // https://cloud.google.com/security-command-center/docs/how-to-analyze-findings-in-big-query#export_findings_from_to String parent = String.format("projects/%s", "your-google-cloud-project-id"); + + // filter: Expression that defines the filter to apply across create/update events of findings. String filter = "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 = UUID.randomUUID().toString().toLowerCase(); createBigQueryExport(parent, filter, bigQueryDatasetId, bigQueryExportId); @@ -53,13 +57,17 @@ public static void main(String[] args) throws IOException { 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()) { // Create the BigQuery export configuration. BigQueryExport bigQueryExport = BigQueryExport.newBuilder() .setDescription( - "Export low and medium findings if the compute resource has an IAM anomalous grant") + "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(); diff --git a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/bigqueryexport/DeleteBigQueryExport.java b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/bigqueryexport/DeleteBigQueryExport.java index 069abad2c..69236fd37 100644 --- a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/bigqueryexport/DeleteBigQueryExport.java +++ b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/bigqueryexport/DeleteBigQueryExport.java @@ -26,19 +26,25 @@ public class DeleteBigQueryExport { 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} - // bigQueryExportId: Unique identifier that is used to identify the export. 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 = diff --git a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/bigqueryexport/GetBigQueryExport.java b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/bigqueryexport/GetBigQueryExport.java index 83267d69a..7eac38053 100644 --- a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/bigqueryexport/GetBigQueryExport.java +++ b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/bigqueryexport/GetBigQueryExport.java @@ -27,12 +27,14 @@ 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} - // bigQueryExportId: Unique identifier that is used to identify the export. 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); @@ -40,6 +42,9 @@ public static void main(String[] args) throws IOException { // 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 = diff --git a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/bigqueryexport/ListBigQueryExports.java b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/bigqueryexport/ListBigQueryExports.java index de55d52e2..3003cb1d6 100644 --- a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/bigqueryexport/ListBigQueryExports.java +++ b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/bigqueryexport/ListBigQueryExports.java @@ -28,21 +28,26 @@ public class ListBigQueryExports { public static void main(String[] args) throws IOException { // TODO(Developer): Modify the following variable values. - // parent: Use any one of the following resource paths: + + // 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() - // The parent, which owns the collection of BigQuery exports. .setParent(parent) .build(); diff --git a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/bigqueryexport/UpdateBigQueryExport.java b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/bigqueryexport/UpdateBigQueryExport.java index df3657187..020907bb0 100644 --- a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/bigqueryexport/UpdateBigQueryExport.java +++ b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/bigqueryexport/UpdateBigQueryExport.java @@ -29,19 +29,21 @@ public class UpdateBigQueryExport { 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"); + // filter: Expression that defines the filter to apply across create/update events of findings. + String filter = "severity=\"LOW\" OR severity=\"MEDIUM\" AND " + + "category=\"Persistence: IAM Anomalous Grant\" AND " + + "-resource.type:\"compute\""; + // bigQueryExportId: Unique identifier provided by the client. - // For more info, refer: + // For more info, see: // https://cloud.google.com/security-command-center/docs/how-to-analyze-findings-in-big-query#export_findings_from_to - String parent = String.format("projects/%s", "your-google-cloud-project-id"); - String filter = - "severity=\"LOW\" OR severity=\"MEDIUM\" AND " - + "category=\"Persistence: IAM Anomalous Grant\" AND " - + "-resource.type:\"compute\""; String bigQueryExportId = UUID.randomUUID().toString().toLowerCase(); updateBigQueryExport(parent, filter, bigQueryExportId); @@ -50,6 +52,9 @@ public static void main(String[] args) throws IOException { // Updates an existing BigQuery export. public static void updateBigQueryExport(String parent, String filter, 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()) { // Set the new values for export configuration. @@ -70,11 +75,11 @@ public static void updateBigQueryExport(String parent, String filter, String big .build(); BigQueryExport response = client.updateBigQueryExport(request); - if (response.getFilter().equalsIgnoreCase(filter)) { - System.out.println("BigQueryExport updated successfully!"); + if (!response.getFilter().equalsIgnoreCase(filter)) { + System.out.println("Failed to update BigQueryExport!"); return; } - System.out.println("Failed to update BigQueryExport!"); + System.out.println("BigQueryExport updated successfully!"); } } } diff --git a/samples/snippets/src/test/java/com/google/cloud/examples/securitycenter/snippets/BigQueryExportIT.java b/samples/snippets/src/test/java/com/google/cloud/examples/securitycenter/snippets/BigQueryExportIT.java index 1f10035cd..b6fe5306c 100644 --- a/samples/snippets/src/test/java/com/google/cloud/examples/securitycenter/snippets/BigQueryExportIT.java +++ b/samples/snippets/src/test/java/com/google/cloud/examples/securitycenter/snippets/BigQueryExportIT.java @@ -89,6 +89,8 @@ public static void cleanUp() throws IOException { deleteBigQueryDataset(BQ_DATASET_NAME); DeleteBigQueryExport.deleteBigQueryExport( String.format("projects/%s", PROJECT_ID), BQ_EXPORT_ID); + assertThat(stdOut.toString()).contains( + String.format("BigQuery export request deleted successfully: %s", BQ_EXPORT_ID)); stdOut = null; System.setOut(out); From b7dbd183a82b744d3a43a1badb262482078c4c18 Mon Sep 17 00:00:00 2001 From: Owl Bot Date: Thu, 24 Mar 2022 12:45:19 +0000 Subject: [PATCH 04/13] =?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 --- .../snippets/bigqueryexport/ListBigQueryExports.java | 4 +--- .../snippets/bigqueryexport/UpdateBigQueryExport.java | 7 ++++--- .../examples/securitycenter/snippets/BigQueryExportIT.java | 4 ++-- 3 files changed, 7 insertions(+), 8 deletions(-) diff --git a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/bigqueryexport/ListBigQueryExports.java b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/bigqueryexport/ListBigQueryExports.java index 3003cb1d6..bec01c674 100644 --- a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/bigqueryexport/ListBigQueryExports.java +++ b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/bigqueryexport/ListBigQueryExports.java @@ -47,9 +47,7 @@ public static void listBigQueryExports(String parent) throws IOException { try (SecurityCenterClient client = SecurityCenterClient.create()) { ListBigQueryExportsRequest request = - ListBigQueryExportsRequest.newBuilder() - .setParent(parent) - .build(); + ListBigQueryExportsRequest.newBuilder().setParent(parent).build(); ListBigQueryExportsPagedResponse response = client.listBigQueryExports(request); diff --git a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/bigqueryexport/UpdateBigQueryExport.java b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/bigqueryexport/UpdateBigQueryExport.java index 020907bb0..497402634 100644 --- a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/bigqueryexport/UpdateBigQueryExport.java +++ b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/bigqueryexport/UpdateBigQueryExport.java @@ -37,9 +37,10 @@ public static void main(String[] args) throws IOException { String parent = String.format("projects/%s", "your-google-cloud-project-id"); // filter: Expression that defines the filter to apply across create/update events of findings. - String filter = "severity=\"LOW\" OR severity=\"MEDIUM\" AND " - + "category=\"Persistence: IAM Anomalous Grant\" AND " - + "-resource.type:\"compute\""; + String filter = + "severity=\"LOW\" OR severity=\"MEDIUM\" AND " + + "category=\"Persistence: IAM Anomalous Grant\" AND " + + "-resource.type:\"compute\""; // bigQueryExportId: Unique identifier provided by the client. // For more info, see: diff --git a/samples/snippets/src/test/java/com/google/cloud/examples/securitycenter/snippets/BigQueryExportIT.java b/samples/snippets/src/test/java/com/google/cloud/examples/securitycenter/snippets/BigQueryExportIT.java index b6fe5306c..666506d3d 100644 --- a/samples/snippets/src/test/java/com/google/cloud/examples/securitycenter/snippets/BigQueryExportIT.java +++ b/samples/snippets/src/test/java/com/google/cloud/examples/securitycenter/snippets/BigQueryExportIT.java @@ -89,8 +89,8 @@ public static void cleanUp() throws IOException { deleteBigQueryDataset(BQ_DATASET_NAME); DeleteBigQueryExport.deleteBigQueryExport( String.format("projects/%s", PROJECT_ID), BQ_EXPORT_ID); - assertThat(stdOut.toString()).contains( - String.format("BigQuery export request deleted successfully: %s", BQ_EXPORT_ID)); + assertThat(stdOut.toString()) + .contains(String.format("BigQuery export request deleted successfully: %s", BQ_EXPORT_ID)); stdOut = null; System.setOut(out); From 370e52cf334a81b23dff6aabcfdd02b63d2d0085 Mon Sep 17 00:00:00 2001 From: Sita Lakshmi Sangameswaran Date: Thu, 24 Mar 2022 18:23:48 +0530 Subject: [PATCH 05/13] update to latest version of bom --- samples/snippets/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/samples/snippets/pom.xml b/samples/snippets/pom.xml index 3fa6ffd97..3bf683e6c 100644 --- a/samples/snippets/pom.xml +++ b/samples/snippets/pom.xml @@ -30,7 +30,7 @@ com.google.cloud libraries-bom - 24.4.0 + 25.0.0 pom import From 5235e4a5956ab1a09bb9439e18c61aa597ccd467 Mon Sep 17 00:00:00 2001 From: Owl Bot Date: Thu, 24 Mar 2022 12:55:55 +0000 Subject: [PATCH 06/13] =?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 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 088b98af0..e37df9492 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,7 @@ If you are using Maven with [BOM][libraries-bom], add this to your pom.xml file com.google.cloud libraries-bom - 24.4.0 + 25.0.0 pom import From 07919959a6b60fc4defbf505ea76fff46617820f Mon Sep 17 00:00:00 2001 From: SitaLakshmi Date: Thu, 24 Mar 2022 18:55:52 +0530 Subject: [PATCH 07/13] docs(samples): updated pom.xml with bigquery --- samples/snapshot/pom.xml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/samples/snapshot/pom.xml b/samples/snapshot/pom.xml index 1f5ffbd6d..bba8c9fb1 100644 --- a/samples/snapshot/pom.xml +++ b/samples/snapshot/pom.xml @@ -55,6 +55,12 @@ 1.1.3 test + + com.google.cloud + google-cloud-bigquery + 2.9.3 + test + From 438c5f6a1ff87cce4f574538cd009d00e19859a6 Mon Sep 17 00:00:00 2001 From: Owl Bot Date: Fri, 25 Mar 2022 20:00:00 +0000 Subject: [PATCH 08/13] =?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 | 2 +- README.md | 5 ++--- .../examples/securitycenter/snippets/MuteFindingIT.java | 3 +-- 3 files changed, 4 insertions(+), 6 deletions(-) diff --git a/.kokoro/presubmit/samples.cfg b/.kokoro/presubmit/samples.cfg index 67806dd18..01e096004 100644 --- a/.kokoro/presubmit/samples.cfg +++ b/.kokoro/presubmit/samples.cfg @@ -29,5 +29,5 @@ env_vars: { env_vars: { key: "SECRET_MANAGER_KEYS" - value: "java-docs-samples-service-account,java-scc-samples-secrets" + value: "java-docs-samples-service-account" } \ No newline at end of file diff --git a/README.md b/README.md index e2b60cc9b..ab3b7a9ce 100644 --- a/README.md +++ b/README.md @@ -62,19 +62,18 @@ If you are using Gradle 5.x or later, add this to your dependencies ```Groovy implementation platform('com.google.cloud:libraries-bom:25.0.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.5.1' +implementation 'com.google.cloud:google-cloud-securitycenter:2.5.2' ``` If you are using SBT, add this to your dependencies ```Scala -libraryDependencies += "com.google.cloud" % "google-cloud-securitycenter" % "2.5.1" +libraryDependencies += "com.google.cloud" % "google-cloud-securitycenter" % "2.5.2" ``` ## Authentication 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 56a8d1cbe..80f9e335b 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 @@ -229,8 +229,7 @@ public void testBulkMuteFindings() throws IOException { // 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 9994efa8cc477da57bfd5dca26d59730cf040102 Mon Sep 17 00:00:00 2001 From: Sita Lakshmi Sangameswaran Date: Sat, 26 Mar 2022 01:37:21 +0530 Subject: [PATCH 09/13] including test project specific secrets --- .kokoro/presubmit/samples.cfg | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.kokoro/presubmit/samples.cfg b/.kokoro/presubmit/samples.cfg index 01e096004..175a89c71 100644 --- a/.kokoro/presubmit/samples.cfg +++ b/.kokoro/presubmit/samples.cfg @@ -29,5 +29,5 @@ env_vars: { env_vars: { key: "SECRET_MANAGER_KEYS" - value: "java-docs-samples-service-account" -} \ No newline at end of file + value: "java-docs-samples-service-account,java-scc-samples-secrets" +} From 956cd0b0e3c415a37970d7b415a09f51ecfb08fd Mon Sep 17 00:00:00 2001 From: SitaLakshmi Date: Sat, 26 Mar 2022 01:57:37 +0530 Subject: [PATCH 10/13] docs(samples): lint fix --- .../snippets/bigqueryexport/CreateBigQueryExport.java | 2 +- .../snippets/bigqueryexport/UpdateBigQueryExport.java | 2 +- .../examples/securitycenter/snippets/BigQueryExportIT.java | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/bigqueryexport/CreateBigQueryExport.java b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/bigqueryexport/CreateBigQueryExport.java index 55c10a5b0..b4ebf520f 100644 --- a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/bigqueryexport/CreateBigQueryExport.java +++ b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/bigqueryexport/CreateBigQueryExport.java @@ -47,7 +47,7 @@ public static void main(String[] args) throws IOException { // 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 = UUID.randomUUID().toString().toLowerCase(); + String bigQueryExportId = "default-" + UUID.randomUUID().toString().split("-")[0]; createBigQueryExport(parent, filter, bigQueryDatasetId, bigQueryExportId); } diff --git a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/bigqueryexport/UpdateBigQueryExport.java b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/bigqueryexport/UpdateBigQueryExport.java index 497402634..c0e302d2a 100644 --- a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/bigqueryexport/UpdateBigQueryExport.java +++ b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/bigqueryexport/UpdateBigQueryExport.java @@ -45,7 +45,7 @@ public static void main(String[] args) throws IOException { // 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 = UUID.randomUUID().toString().toLowerCase(); + String bigQueryExportId = "big-query-export-id"; updateBigQueryExport(parent, filter, bigQueryExportId); } diff --git a/samples/snippets/src/test/java/com/google/cloud/examples/securitycenter/snippets/BigQueryExportIT.java b/samples/snippets/src/test/java/com/google/cloud/examples/securitycenter/snippets/BigQueryExportIT.java index 666506d3d..19a275844 100644 --- a/samples/snippets/src/test/java/com/google/cloud/examples/securitycenter/snippets/BigQueryExportIT.java +++ b/samples/snippets/src/test/java/com/google/cloud/examples/securitycenter/snippets/BigQueryExportIT.java @@ -48,7 +48,7 @@ public class BigQueryExportIT { // TODO(Developer): Replace the below variables. private static final String PROJECT_ID = System.getenv("SCC_PROJECT_ID"); private static final String BQ_DATASET_NAME = "sampledataset"; - private static final String BQ_EXPORT_ID = UUID.randomUUID().toString(); + private static final String BQ_EXPORT_ID = "default-" + UUID.randomUUID().toString().split("-")[0]; private static ByteArrayOutputStream stdOut; From 6975cf3b63e07dfb00b17c31518fac8221c87640 Mon Sep 17 00:00:00 2001 From: SitaLakshmi Date: Mon, 28 Mar 2022 17:34:20 +0530 Subject: [PATCH 11/13] docs(samples): lint fix --- .../examples/securitycenter/snippets/BigQueryExportIT.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/samples/snippets/src/test/java/com/google/cloud/examples/securitycenter/snippets/BigQueryExportIT.java b/samples/snippets/src/test/java/com/google/cloud/examples/securitycenter/snippets/BigQueryExportIT.java index 19a275844..ac61a40c1 100644 --- a/samples/snippets/src/test/java/com/google/cloud/examples/securitycenter/snippets/BigQueryExportIT.java +++ b/samples/snippets/src/test/java/com/google/cloud/examples/securitycenter/snippets/BigQueryExportIT.java @@ -48,7 +48,8 @@ public class BigQueryExportIT { // TODO(Developer): Replace the below variables. private static final String PROJECT_ID = System.getenv("SCC_PROJECT_ID"); private static final String BQ_DATASET_NAME = "sampledataset"; - private static final String BQ_EXPORT_ID = "default-" + UUID.randomUUID().toString().split("-")[0]; + private static final String BQ_EXPORT_ID = + "default-" + UUID.randomUUID().toString().split("-")[0]; private static ByteArrayOutputStream stdOut; From 8c4855ebd4dda37080a0628573aa0e1b54d491b1 Mon Sep 17 00:00:00 2001 From: Sita Lakshmi Sangameswaran Date: Wed, 27 Apr 2022 07:45:35 +0530 Subject: [PATCH 12/13] modified project id for testing --- .../examples/securitycenter/snippets/BigQueryExportIT.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/samples/snippets/src/test/java/com/google/cloud/examples/securitycenter/snippets/BigQueryExportIT.java b/samples/snippets/src/test/java/com/google/cloud/examples/securitycenter/snippets/BigQueryExportIT.java index ac61a40c1..099ac6cd5 100644 --- a/samples/snippets/src/test/java/com/google/cloud/examples/securitycenter/snippets/BigQueryExportIT.java +++ b/samples/snippets/src/test/java/com/google/cloud/examples/securitycenter/snippets/BigQueryExportIT.java @@ -46,7 +46,7 @@ public class BigQueryExportIT { // TODO(Developer): Replace the below variables. - private static final String PROJECT_ID = System.getenv("SCC_PROJECT_ID"); + private static final String PROJECT_ID = System.getenv("GOOGLE_CLOUD_PROJECT"); private static final String BQ_DATASET_NAME = "sampledataset"; private static final String BQ_EXPORT_ID = "default-" + UUID.randomUUID().toString().split("-")[0]; From 264b0eda63488e9572ec71965d4e96595a696f1e Mon Sep 17 00:00:00 2001 From: Sita Lakshmi Sangameswaran Date: Wed, 27 Apr 2022 18:44:53 +0530 Subject: [PATCH 13/13] Update BigQueryExportIT.java --- .../examples/securitycenter/snippets/BigQueryExportIT.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/samples/snippets/src/test/java/com/google/cloud/examples/securitycenter/snippets/BigQueryExportIT.java b/samples/snippets/src/test/java/com/google/cloud/examples/securitycenter/snippets/BigQueryExportIT.java index 099ac6cd5..18dcdc683 100644 --- a/samples/snippets/src/test/java/com/google/cloud/examples/securitycenter/snippets/BigQueryExportIT.java +++ b/samples/snippets/src/test/java/com/google/cloud/examples/securitycenter/snippets/BigQueryExportIT.java @@ -67,7 +67,7 @@ public static void setUp() throws IOException { System.setOut(new PrintStream(stdOut)); requireEnvVar("GOOGLE_APPLICATION_CREDENTIALS"); - requireEnvVar("SCC_PROJECT_ID"); + requireEnvVar("GOOGLE_CLOUD_PROJECT"); // Create a BigQuery dataset. createBigQueryDataset(BQ_DATASET_NAME);