From 8444a311b6a7ec53d20fc9f8bf1e090f11243954 Mon Sep 17 00:00:00 2001 From: Rafael Rodrigues Date: Fri, 12 Apr 2024 18:14:17 +0000 Subject: [PATCH] improve readability --- .../CreateBigQueryExportEEE.java | 89 ---------- .../DeleteBigQueryExportEEE.java | 60 ------- .../bigqueryexport/GetBigQueryExportEEE.java | 60 ------- .../ListBigQueryExportsEEE.java | 61 ------- .../UpdateBigQueryExportEEE.java | 86 ---------- .../vtwo/bigquery/CreateBigQueryExport.java | 6 +- .../vtwo/bigquery/DeleteBigQueryExport.java | 8 +- .../java/vtwo/bigquery/GetBigQueryExport.java | 10 +- .../vtwo/bigquery/ListBigQueryExports.java | 8 +- .../vtwo/bigquery/UpdateBigQueryExport.java | 21 ++- .../src/test/java/BigQueryExportITEEE.java | 159 ------------------ .../src/test/java/vtwo/BigQueryExportIT.java | 84 ++++++++- 12 files changed, 111 insertions(+), 541 deletions(-) delete mode 100644 security-command-center/snippets/src/main/java/bigqueryexport/CreateBigQueryExportEEE.java delete mode 100644 security-command-center/snippets/src/main/java/bigqueryexport/DeleteBigQueryExportEEE.java delete mode 100644 security-command-center/snippets/src/main/java/bigqueryexport/GetBigQueryExportEEE.java delete mode 100644 security-command-center/snippets/src/main/java/bigqueryexport/ListBigQueryExportsEEE.java delete mode 100644 security-command-center/snippets/src/main/java/bigqueryexport/UpdateBigQueryExportEEE.java delete mode 100644 security-command-center/snippets/src/test/java/BigQueryExportITEEE.java diff --git a/security-command-center/snippets/src/main/java/bigqueryexport/CreateBigQueryExportEEE.java b/security-command-center/snippets/src/main/java/bigqueryexport/CreateBigQueryExportEEE.java deleted file mode 100644 index e46be958d9f..00000000000 --- a/security-command-center/snippets/src/main/java/bigqueryexport/CreateBigQueryExportEEE.java +++ /dev/null @@ -1,89 +0,0 @@ -/* - * 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 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 CreateBigQueryExportEEE { - - 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\""; - - // 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. - // 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()) { - - // 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] diff --git a/security-command-center/snippets/src/main/java/bigqueryexport/DeleteBigQueryExportEEE.java b/security-command-center/snippets/src/main/java/bigqueryexport/DeleteBigQueryExportEEE.java deleted file mode 100644 index d5b31476664..00000000000 --- a/security-command-center/snippets/src/main/java/bigqueryexport/DeleteBigQueryExportEEE.java +++ /dev/null @@ -1,60 +0,0 @@ -/* - * 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 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 DeleteBigQueryExportEEE { - - 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"; - - 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] diff --git a/security-command-center/snippets/src/main/java/bigqueryexport/GetBigQueryExportEEE.java b/security-command-center/snippets/src/main/java/bigqueryexport/GetBigQueryExportEEE.java deleted file mode 100644 index e315d38b476..00000000000 --- a/security-command-center/snippets/src/main/java/bigqueryexport/GetBigQueryExportEEE.java +++ /dev/null @@ -1,60 +0,0 @@ -/* - * 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 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 GetBigQueryExportEEE { - - 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] diff --git a/security-command-center/snippets/src/main/java/bigqueryexport/ListBigQueryExportsEEE.java b/security-command-center/snippets/src/main/java/bigqueryexport/ListBigQueryExportsEEE.java deleted file mode 100644 index 9710c5d85f7..00000000000 --- a/security-command-center/snippets/src/main/java/bigqueryexport/ListBigQueryExportsEEE.java +++ /dev/null @@ -1,61 +0,0 @@ -/* - * 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 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 ListBigQueryExportsEEE { - - 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] diff --git a/security-command-center/snippets/src/main/java/bigqueryexport/UpdateBigQueryExportEEE.java b/security-command-center/snippets/src/main/java/bigqueryexport/UpdateBigQueryExportEEE.java deleted file mode 100644 index 38d9aee1350..00000000000 --- a/security-command-center/snippets/src/main/java/bigqueryexport/UpdateBigQueryExportEEE.java +++ /dev/null @@ -1,86 +0,0 @@ -/* - * 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 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; - -public class UpdateBigQueryExportEEE { - - 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, see: - // https://cloud.google.com/security-command-center/docs/how-to-analyze-findings-in-big-query#export_findings_from_to - String bigQueryExportId = "big-query-export-id"; - - updateBigQueryExport(parent, filter, bigQueryExportId); - } - - // 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. - 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("Failed to update BigQueryExport!"); - return; - } - System.out.println("BigQueryExport updated successfully!"); - } - } -} -// [END securitycenter_update_bigquery_export] diff --git a/security-command-center/snippets/src/main/java/vtwo/bigquery/CreateBigQueryExport.java b/security-command-center/snippets/src/main/java/vtwo/bigquery/CreateBigQueryExport.java index e6d206906d4..5de07212dd2 100644 --- a/security-command-center/snippets/src/main/java/vtwo/bigquery/CreateBigQueryExport.java +++ b/security-command-center/snippets/src/main/java/vtwo/bigquery/CreateBigQueryExport.java @@ -48,7 +48,8 @@ public static void main(String[] args) throws IOException { // 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(organizationId,location ,projectId,filter, bigQueryDatasetId, bigQueryExportId); + createBigQueryExport(organizationId, location, projectId, filter, bigQueryDatasetId, + bigQueryExportId); } // Create export configuration to export findings from a project to a BigQuery dataset. @@ -60,7 +61,8 @@ public static void createBigQueryExport(String organizationId, String location, // 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()) { - OrganizationLocationName organizationName = OrganizationLocationName.of(organizationId, location); + OrganizationLocationName organizationName = OrganizationLocationName.of(organizationId, + location); // Create the BigQuery export configuration. BigQueryExport bigQueryExport = BigQueryExport.newBuilder() diff --git a/security-command-center/snippets/src/main/java/vtwo/bigquery/DeleteBigQueryExport.java b/security-command-center/snippets/src/main/java/vtwo/bigquery/DeleteBigQueryExport.java index f6d44d81f92..229f571e2b2 100644 --- a/security-command-center/snippets/src/main/java/vtwo/bigquery/DeleteBigQueryExport.java +++ b/security-command-center/snippets/src/main/java/vtwo/bigquery/DeleteBigQueryExport.java @@ -18,14 +18,13 @@ // [START securitycenter_delete_bigquery_export_v2] -import com.google.cloud.securitycenter.v1.DeleteBigQueryExportRequest; -import com.google.cloud.securitycenter.v1.SecurityCenterClient; import com.google.cloud.securitycenter.v2.BigQueryExportName; +import com.google.cloud.securitycenter.v2.DeleteBigQueryExportRequest; +import com.google.cloud.securitycenter.v2.SecurityCenterClient; import java.io.IOException; public class DeleteBigQueryExport { - public static void main(String[] args) throws IOException { // TODO(Developer): Modify the following variable values. // organizationId: Google Cloud Organization id. @@ -48,6 +47,9 @@ public static void deleteBigQueryExport(String organizationId, String location, // 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()) { + // optionally BigQueryExportName or String can be used + // String bigQueryExportName = String.format("organizations/%s/locations/%s + // /bigQueryExports/%s",organizationId,location, bigQueryExportId); BigQueryExportName bigQueryExportName = BigQueryExportName.of(organizationId, location, bigQueryExportId); diff --git a/security-command-center/snippets/src/main/java/vtwo/bigquery/GetBigQueryExport.java b/security-command-center/snippets/src/main/java/vtwo/bigquery/GetBigQueryExport.java index 2cb2d036c1a..5d985bf8def 100644 --- a/security-command-center/snippets/src/main/java/vtwo/bigquery/GetBigQueryExport.java +++ b/security-command-center/snippets/src/main/java/vtwo/bigquery/GetBigQueryExport.java @@ -19,9 +19,9 @@ // [START securitycenter_get_bigquery_export_v2] import com.google.cloud.securitycenter.v2.BigQueryExport; +import com.google.cloud.securitycenter.v2.BigQueryExportName; import com.google.cloud.securitycenter.v2.GetBigQueryExportRequest; import com.google.cloud.securitycenter.v2.SecurityCenterClient; -import com.google.cloud.securitycenter.v2.BigQueryExportName; import java.io.IOException; public class GetBigQueryExport { @@ -37,17 +37,19 @@ public static void main(String[] args) throws IOException { // bigQueryExportId: Unique identifier that is used to identify the export. String bigQueryExportId = "{bigquery-export-id}"; - getBigQueryExport(organizationId,location ,bigQueryExportId); + getBigQueryExport(organizationId, location, bigQueryExportId); } // Retrieve an existing BigQuery export. - public static void getBigQueryExport(String organizationId, String location, String bigQueryExportId) throws IOException { + public static void getBigQueryExport(String organizationId, String location, + 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()) { - BigQueryExportName bigQueryExportName = BigQueryExportName.of(organizationId, location,bigQueryExportId); + BigQueryExportName bigQueryExportName = BigQueryExportName.of(organizationId, location, + bigQueryExportId); GetBigQueryExportRequest bigQueryExportRequest = GetBigQueryExportRequest.newBuilder() diff --git a/security-command-center/snippets/src/main/java/vtwo/bigquery/ListBigQueryExports.java b/security-command-center/snippets/src/main/java/vtwo/bigquery/ListBigQueryExports.java index 09b8d5e1e12..8c664f90ee1 100644 --- a/security-command-center/snippets/src/main/java/vtwo/bigquery/ListBigQueryExports.java +++ b/security-command-center/snippets/src/main/java/vtwo/bigquery/ListBigQueryExports.java @@ -35,16 +35,18 @@ public static void main(String[] args) throws IOException { // Specify the location to list the findings. String location = "global"; - listBigQueryExports(organizationId,location); + listBigQueryExports(organizationId, location); } // List BigQuery exports in the given parent. - public static void listBigQueryExports(String organizationId, String location) throws IOException { + public static void listBigQueryExports(String organizationId, String location) + 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()) { - OrganizationLocationName organizationName = OrganizationLocationName.of(organizationId,location); + OrganizationLocationName organizationName = OrganizationLocationName.of(organizationId, + location); ListBigQueryExportsRequest request = ListBigQueryExportsRequest.newBuilder() .setParent(organizationName.toString()) diff --git a/security-command-center/snippets/src/main/java/vtwo/bigquery/UpdateBigQueryExport.java b/security-command-center/snippets/src/main/java/vtwo/bigquery/UpdateBigQueryExport.java index a043c70fa86..587fa992dea 100644 --- a/security-command-center/snippets/src/main/java/vtwo/bigquery/UpdateBigQueryExport.java +++ b/security-command-center/snippets/src/main/java/vtwo/bigquery/UpdateBigQueryExport.java @@ -18,10 +18,10 @@ // [START securitycenter_update_bigquery_export_v2] -import com.google.cloud.securitycenter.v1.BigQueryExport; -import com.google.cloud.securitycenter.v1.SecurityCenterClient; -import com.google.cloud.securitycenter.v1.UpdateBigQueryExportRequest; +import com.google.cloud.securitycenter.v2.BigQueryExport; import com.google.cloud.securitycenter.v2.BigQueryExportName; +import com.google.cloud.securitycenter.v2.SecurityCenterClient; +import com.google.cloud.securitycenter.v2.UpdateBigQueryExportRequest; import com.google.protobuf.FieldMask; import java.io.IOException; @@ -46,16 +46,20 @@ public static void main(String[] args) throws IOException { // https://cloud.google.com/security-command-center/docs/how-to-analyze-findings-in-big-query#export_findings_from_to String bigQueryExportId = "{bigquery-export-id}"; - updateBigQueryExport(organizationId, location,filter, bigQueryExportId); + updateBigQueryExport(organizationId, location, filter, bigQueryExportId); } // Updates an existing BigQuery export. - public static void updateBigQueryExport(String organizationId,String location, String filter, String bigQueryExportId) + public static void updateBigQueryExport(String organizationId, String location, 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()) { + // optionally BigQueryExportName or String can be used + // String bigQueryExportName = String.format("organizations/%s/locations/%s + // /bigQueryExports/%s",organizationId,location, bigQueryExportId); BigQueryExportName bigQueryExportName = BigQueryExportName.of(organizationId, location, bigQueryExportId); @@ -63,6 +67,7 @@ public static void updateBigQueryExport(String organizationId,String location, S BigQueryExport bigQueryExport = BigQueryExport.newBuilder() .setName(bigQueryExportName.toString()) + .setDescription("Updated description.") .setFilter(filter) .build(); @@ -73,7 +78,9 @@ public static void updateBigQueryExport(String organizationId,String location, S // 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()) + .setUpdateMask(FieldMask.newBuilder() + .addPaths("filter") + .addPaths("description").build()) .build(); BigQueryExport response = client.updateBigQueryExport(request); @@ -85,4 +92,4 @@ public static void updateBigQueryExport(String organizationId,String location, S } } } -// [START securitycenter_update_bigquery_export_v2] +// [END securitycenter_update_bigquery_export_v2] diff --git a/security-command-center/snippets/src/test/java/BigQueryExportITEEE.java b/security-command-center/snippets/src/test/java/BigQueryExportITEEE.java deleted file mode 100644 index 965f7a3878d..00000000000 --- a/security-command-center/snippets/src/test/java/BigQueryExportITEEE.java +++ /dev/null @@ -1,159 +0,0 @@ -/* - * 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. - */ - -import static com.google.common.truth.Truth.assertThat; -import static com.google.common.truth.Truth.assertWithMessage; - -import bigqueryexport.CreateBigQueryExportEEE; -import bigqueryexport.DeleteBigQueryExportEEE; -import bigqueryexport.GetBigQueryExportEEE; -import bigqueryexport.ListBigQueryExportsEEE; -import bigqueryexport.UpdateBigQueryExportEEE; -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.testing.junit4.MultipleAttemptsRule; -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.Rule; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.junit.runners.JUnit4; - -@RunWith(JUnit4.class) -public class BigQueryExportITEEE { - @Rule public final MultipleAttemptsRule multipleAttemptsRule = new MultipleAttemptsRule(5); - - // TODO(Developer): Replace the below variables. - private static final String PROJECT_ID = System.getenv("GOOGLE_CLOUD_PROJECT"); - private static final String BQ_DATASET_NAME = - "sampledataset_" + UUID.randomUUID().toString().split("-")[0]; - private static final String BQ_EXPORT_ID = - "default-" + UUID.randomUUID().toString().split("-")[0]; - - 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("GOOGLE_CLOUD_PROJECT"); - - // Create a BigQuery dataset. - createBigQueryDataset(BQ_DATASET_NAME); - // Create export request. - String filter = "severity=\"LOW\" OR severity=\"MEDIUM\""; - CreateBigQueryExportEEE.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); - DeleteBigQueryExportEEE.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); - } - - 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) { - if (e.toString().contains("Already Exists: Dataset")) { - return; - } - 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 { - GetBigQueryExportEEE.getBigQueryExport(String.format("projects/%s", PROJECT_ID), BQ_EXPORT_ID); - assertThat(stdOut.toString()).contains(BQ_EXPORT_ID); - } - - @Test - public void testListBigQueryExports() throws IOException { - ListBigQueryExportsEEE.listBigQueryExports(String.format("projects/%s", PROJECT_ID)); - assertThat(stdOut.toString()).contains(BQ_EXPORT_ID); - } - - @Test - public void testUpdateBigQueryExport() throws IOException { - String filter = "severity=\"MEDIUM\""; - UpdateBigQueryExportEEE.updateBigQueryExport( - String.format("projects/%s", PROJECT_ID), filter, BQ_EXPORT_ID); - assertThat(stdOut.toString()).contains("BigQueryExport updated successfully!"); - } -} diff --git a/security-command-center/snippets/src/test/java/vtwo/BigQueryExportIT.java b/security-command-center/snippets/src/test/java/vtwo/BigQueryExportIT.java index a7ebe377ad8..0c6feb47628 100644 --- a/security-command-center/snippets/src/test/java/vtwo/BigQueryExportIT.java +++ b/security-command-center/snippets/src/test/java/vtwo/BigQueryExportIT.java @@ -30,21 +30,30 @@ 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.Rule; +import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.JUnit4; import vtwo.bigquery.CreateBigQueryExport; +import vtwo.bigquery.DeleteBigQueryExport; +import vtwo.bigquery.GetBigQueryExport; +import vtwo.bigquery.ListBigQueryExports; +import vtwo.bigquery.UpdateBigQueryExport; @RunWith(JUnit4.class) public class BigQueryExportIT { - @Rule public final MultipleAttemptsRule multipleAttemptsRule = new MultipleAttemptsRule(5); + @Rule + public final MultipleAttemptsRule multipleAttemptsRule = new MultipleAttemptsRule(5); // TODO(Developer): Replace the below variables. private static final String ORGANIZATION_ID = System.getenv("SCC_PROJECT_ORG_ID"); - private static final String PROJECT_ID = System.getenv("GOOGLE_CLOUD_PROJECT"); + private static final String PROJECT_ID = System.getenv("SCC_PROJECT_ID"); private static final String LOCATION = "global"; private static final String BQ_DATASET_NAME = "sampledataset_" + UUID.randomUUID().toString().split("-")[0]; @@ -67,21 +76,72 @@ public static void setUp() throws IOException { System.setOut(new PrintStream(stdOut)); requireEnvVar("GOOGLE_APPLICATION_CREDENTIALS"); - requireEnvVar("GOOGLE_CLOUD_PROJECT"); + requireEnvVar("SCC_PROJECT_ID"); // Create a BigQuery dataset. - createBigQueryDataset(BQ_DATASET_NAME); + createBigQueryDataset(PROJECT_ID, BQ_DATASET_NAME); // Create export request. String filter = "severity=\"LOW\" OR severity=\"MEDIUM\""; - CreateBigQueryExport.createBigQueryExport(ORGANIZATION_ID, LOCATION,PROJECT_ID, filter, BQ_DATASET_NAME, BQ_EXPORT_ID); + CreateBigQueryExport.createBigQueryExport(ORGANIZATION_ID, LOCATION, PROJECT_ID, filter, + BQ_DATASET_NAME, BQ_EXPORT_ID); stdOut = null; System.setOut(out); } - private static void createBigQueryDataset(String datasetName) { + @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(PROJECT_ID, BQ_DATASET_NAME); + DeleteBigQueryExport.deleteBigQueryExport(ORGANIZATION_ID, LOCATION, BQ_EXPORT_ID); + assertThat(stdOut.toString()) + .contains(String.format("BigQuery export request deleted successfully: %s", BQ_EXPORT_ID)); + + stdOut = null; + System.setOut(out); + } + + @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(ORGANIZATION_ID, LOCATION, BQ_EXPORT_ID); + + assertThat(stdOut.toString()).contains(BQ_EXPORT_ID); + } + + @Test + public void testListBigQueryExports() throws IOException { + ListBigQueryExports.listBigQueryExports(ORGANIZATION_ID, LOCATION); + + assertThat(stdOut.toString()).contains(BQ_EXPORT_ID); + } + + @Test + public void testUpdateBigQueryExport() throws IOException { + String filter = "severity=\"MEDIUM\""; + UpdateBigQueryExport.updateBigQueryExport(ORGANIZATION_ID, LOCATION, filter, BQ_EXPORT_ID); + + assertThat(stdOut.toString()).contains("BigQueryExport updated successfully!"); + } + + private static void createBigQueryDataset(String projectId, String datasetName) { try { - BigQuery bigquery = BigQueryOptions.getDefaultInstance().getService(); + BigQuery bigquery = BigQueryOptions.newBuilder().setProjectId(projectId).build().getService(); DatasetInfo datasetInfo = DatasetInfo.newBuilder(datasetName).build(); @@ -94,4 +154,14 @@ private static void createBigQueryDataset(String datasetName) { } Assert.fail("Dataset was not created. \n" + e); } + } + + private static void deleteBigQueryDataset(String projectId, String datasetName) { + try { + BigQuery bigquery = BigQueryOptions.newBuilder().setProjectId(projectId).build().getService(); + Assert.assertTrue("Deleted BigQuery dataset", bigquery.delete(datasetName)); + } catch (BigQueryException e) { + Assert.fail("Dataset was not deleted. \n" + e); + } + } }