From 73e0de37d0acb28ac29093d41fe5f14001daad4a Mon Sep 17 00:00:00 2001 From: nidhiii-27 Date: Tue, 28 Oct 2025 10:40:39 +0530 Subject: [PATCH 1/7] samples: add samples for encryption enforcement config feature --- .../GetEncryptionEnforcementConfig.java | 71 ++++++++++ .../RemoveEncryptionEnforcementConfig.java | 59 +++++++++ .../SetBucketEncryptionEnforcementConfig.java | 121 ++++++++++++++++++ 3 files changed, 251 insertions(+) create mode 100644 samples/snippets/src/main/java/com/example/storage/bucket/GetEncryptionEnforcementConfig.java create mode 100644 samples/snippets/src/main/java/com/example/storage/bucket/RemoveEncryptionEnforcementConfig.java create mode 100644 samples/snippets/src/main/java/com/example/storage/bucket/SetBucketEncryptionEnforcementConfig.java diff --git a/samples/snippets/src/main/java/com/example/storage/bucket/GetEncryptionEnforcementConfig.java b/samples/snippets/src/main/java/com/example/storage/bucket/GetEncryptionEnforcementConfig.java new file mode 100644 index 0000000000..1959f4999b --- /dev/null +++ b/samples/snippets/src/main/java/com/example/storage/bucket/GetEncryptionEnforcementConfig.java @@ -0,0 +1,71 @@ +/* + * Copyright 2025 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.example.storage.bucket; + +// [START storage_get_encryption_enforcement_config] + +import com.google.cloud.storage.Bucket; +import com.google.cloud.storage.BucketInfo.CustomerManagedEncryptionEnforcementConfig; +import com.google.cloud.storage.BucketInfo.CustomerSuppliedEncryptionEnforcementConfig; +import com.google.cloud.storage.BucketInfo.GoogleManagedEncryptionEnforcementConfig; +import com.google.cloud.storage.Storage; +import com.google.cloud.storage.StorageOptions; + +public class GetEncryptionEnforcementConfig { + public static void getEncryptionEnforcementConfig(String projectId, String bucketName) + throws Exception { + // The ID of your GCP project + // String projectId = "your-project-id"; + + // The ID of your GCS bucket + // String bucketName = "your-unique-bucket-name"; + + try (Storage storage = + StorageOptions.newBuilder().setProjectId(projectId).build().getService()) { + System.out.println( + "\n--- Getting Encryption Enforcement Policy for bucket " + bucketName + " ---"); + + Bucket bucket = storage.get(bucketName); + + if (bucket == null) { + System.out.println("Bucket " + bucketName + " not found."); + return; + } + + System.out.println(" Bucket Name: " + bucket.getName()); + System.out.println(" Default KMS Key: " + bucket.getDefaultKmsKeyName()); + + GoogleManagedEncryptionEnforcementConfig gmekConfig = + bucket.getGoogleManagedEncryptionEnforcementConfig(); + CustomerManagedEncryptionEnforcementConfig cmekConfig = + bucket.getCustomerManagedEncryptionEnforcementConfig(); + CustomerSuppliedEncryptionEnforcementConfig csekConfig = + bucket.getCustomerSuppliedEncryptionEnforcementConfig(); + + System.out.println( + " GMEK Enforcement: " + + (gmekConfig != null ? gmekConfig.getRestrictionMode() : "NOT SET (Default)")); + System.out.println( + " CMEK Enforcement: " + + (cmekConfig != null ? cmekConfig.getRestrictionMode() : "NOT SET (Default)")); + System.out.println( + " CSEK Enforcement: " + + (csekConfig != null ? csekConfig.getRestrictionMode() : "NOT SET (Default)")); + } + } +} +// [END storage_get_encryption_enforcement_config] diff --git a/samples/snippets/src/main/java/com/example/storage/bucket/RemoveEncryptionEnforcementConfig.java b/samples/snippets/src/main/java/com/example/storage/bucket/RemoveEncryptionEnforcementConfig.java new file mode 100644 index 0000000000..c4bda1f5e1 --- /dev/null +++ b/samples/snippets/src/main/java/com/example/storage/bucket/RemoveEncryptionEnforcementConfig.java @@ -0,0 +1,59 @@ +/* + * Copyright 2025 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.example.storage.bucket; + +// [START storage_remove_encryption_enforcement_config] + +import com.google.cloud.storage.Bucket; +import com.google.cloud.storage.BucketInfo; +import com.google.cloud.storage.Storage; +import com.google.cloud.storage.StorageOptions; + +public class RemoveEncryptionEnforcementConfig { + public static void removeEncryptionEnforcementConfig(String projectId, String bucketName) + throws Exception { + // The ID of your GCP project + // String projectId = "your-project-id"; + + // The ID of your GCS bucket + // String bucketName = "your-unique-bucket-name"; + + try (Storage storage = + StorageOptions.newBuilder().setProjectId(projectId).build().getService()) { + Bucket bucket = storage.get(bucketName); + if (bucket == null) { + System.out.println("Bucket " + bucketName + " does not exist."); + return; + } + // To remove an existing policy, the corresponding field must be explicitly set to 'null' + // in the BucketInfo object passed to the update call. + BucketInfo bucketInfo = + bucket.toBuilder() + .setGoogleManagedEncryptionEnforcementConfig(null) + .setCustomerManagedEncryptionEnforcementConfig(null) + .setCustomerSuppliedEncryptionEnforcementConfig(null) + .build(); + + storage.update(bucketInfo); + System.out.println( + "Encryption enforcement policy removed from bucket " + + bucketName + + ". Bucket reverted to default behavior."); + } + } +} +// [END storage_remove_encryption_enforcement_config] diff --git a/samples/snippets/src/main/java/com/example/storage/bucket/SetBucketEncryptionEnforcementConfig.java b/samples/snippets/src/main/java/com/example/storage/bucket/SetBucketEncryptionEnforcementConfig.java new file mode 100644 index 0000000000..6d2cbf1d2e --- /dev/null +++ b/samples/snippets/src/main/java/com/example/storage/bucket/SetBucketEncryptionEnforcementConfig.java @@ -0,0 +1,121 @@ +/* + * Copyright 2025 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.example.storage.bucket; + +// [START storage_set_encryption_enforcement_config] + +import com.google.cloud.storage.Bucket; +import com.google.cloud.storage.BucketInfo; +import com.google.cloud.storage.BucketInfo.CustomerManagedEncryptionEnforcementConfig; +import com.google.cloud.storage.BucketInfo.CustomerSuppliedEncryptionEnforcementConfig; +import com.google.cloud.storage.BucketInfo.EncryptionEnforcementRestrictionMode; +import com.google.cloud.storage.BucketInfo.GoogleManagedEncryptionEnforcementConfig; +import com.google.cloud.storage.Storage; +import com.google.cloud.storage.StorageOptions; + +public class SetBucketEncryptionEnforcementConfig { + public static void setBucketEncryptionEnforcementConfig( + String projectId, String bucketName, String kmsKeyName) throws Exception { + // The ID of your GCP project + // String projectId = "your-project-id"; + + // The ID of your GCS bucket + // String bucketName = "your-unique-bucket-name"; + + // The name of the KMS key to use + // String kmsKeyName = + // "projects/your-project-id/locations/us/keyRings/my_key_ring/cryptoKeys/my_key" + + try (Storage storage = + StorageOptions.newBuilder().setProjectId(projectId).build().getService()) { + + // Example 1: Enforce GMEK Only + setGmekOnlyPolicy(storage, bucketName + "_gmek_only"); + + // Example 2: Enforce CMEK Only + setCmekOnlyPolicy(storage, bucketName + "_cmek_only", kmsKeyName); + + // Example 3: Restrict CSEK (Ransomware Protection) + restrictCsekPolicy(storage, bucketName + "_restrict_csek"); + } + } + + public static void setGmekOnlyPolicy(Storage storage, String bucketName) { + System.out.println("--- Setting GMEK-Only Policy on bucket " + bucketName + " ---"); + GoogleManagedEncryptionEnforcementConfig gmekConfig = + GoogleManagedEncryptionEnforcementConfig.of( + EncryptionEnforcementRestrictionMode.NOT_RESTRICTED); + CustomerManagedEncryptionEnforcementConfig cmekConfig = + CustomerManagedEncryptionEnforcementConfig.of( + EncryptionEnforcementRestrictionMode.FULLY_RESTRICTED); + CustomerSuppliedEncryptionEnforcementConfig csekConfig = + CustomerSuppliedEncryptionEnforcementConfig.of( + EncryptionEnforcementRestrictionMode.FULLY_RESTRICTED); + + BucketInfo bucketInfo = + BucketInfo.newBuilder(bucketName) + .setGoogleManagedEncryptionEnforcementConfig(gmekConfig) + .setCustomerManagedEncryptionEnforcementConfig(cmekConfig) + .setCustomerSuppliedEncryptionEnforcementConfig(csekConfig) + .build(); + + Bucket bucket = storage.create(bucketInfo); + System.out.println( + "Bucket " + bucket.getName() + " created with GMEK-only enforcement policy."); + } + + public static void setCmekOnlyPolicy(Storage storage, String bucketName, String kmsKeyName) { + System.out.println("--- Setting CMEK-Only Policy on bucket " + bucketName + " ---"); + GoogleManagedEncryptionEnforcementConfig gmekConfig = + GoogleManagedEncryptionEnforcementConfig.of( + EncryptionEnforcementRestrictionMode.FULLY_RESTRICTED); + CustomerManagedEncryptionEnforcementConfig cmekConfig = + CustomerManagedEncryptionEnforcementConfig.of( + EncryptionEnforcementRestrictionMode.NOT_RESTRICTED); + CustomerSuppliedEncryptionEnforcementConfig csekConfig = + CustomerSuppliedEncryptionEnforcementConfig.of( + EncryptionEnforcementRestrictionMode.FULLY_RESTRICTED); + + BucketInfo bucketInfo = + BucketInfo.newBuilder(bucketName) + .setDefaultKmsKeyName(kmsKeyName) + .setGoogleManagedEncryptionEnforcementConfig(gmekConfig) + .setCustomerManagedEncryptionEnforcementConfig(cmekConfig) + .setCustomerSuppliedEncryptionEnforcementConfig(csekConfig) + .build(); + + Bucket bucket = storage.create(bucketInfo); + System.out.println( + "Bucket " + bucket.getName() + " created with CMEK-only enforcement policy."); + } + + public static void restrictCsekPolicy(Storage storage, String bucketName) { + System.out.println("--- Setting Restrict-CSEK Policy on bucket " + bucketName + " ---"); + CustomerSuppliedEncryptionEnforcementConfig csekConfig = + CustomerSuppliedEncryptionEnforcementConfig.of( + EncryptionEnforcementRestrictionMode.FULLY_RESTRICTED); + + BucketInfo bucketInfo = + BucketInfo.newBuilder(bucketName) + .setCustomerSuppliedEncryptionEnforcementConfig(csekConfig) + .build(); + + Bucket bucket = storage.create(bucketInfo); + System.out.println("Bucket " + bucket.getName() + " created with a policy to restrict CSEK."); + } +} +// [END storage_get_encryption_enforcement_config] From b02b150272dfe71690da28452503d418ac7071d4 Mon Sep 17 00:00:00 2001 From: nidhiii-27 Date: Thu, 30 Oct 2025 19:24:55 +0530 Subject: [PATCH 2/7] fix region tag --- .../storage/bucket/SetBucketEncryptionEnforcementConfig.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/samples/snippets/src/main/java/com/example/storage/bucket/SetBucketEncryptionEnforcementConfig.java b/samples/snippets/src/main/java/com/example/storage/bucket/SetBucketEncryptionEnforcementConfig.java index 6d2cbf1d2e..5f912c56b0 100644 --- a/samples/snippets/src/main/java/com/example/storage/bucket/SetBucketEncryptionEnforcementConfig.java +++ b/samples/snippets/src/main/java/com/example/storage/bucket/SetBucketEncryptionEnforcementConfig.java @@ -118,4 +118,4 @@ public static void restrictCsekPolicy(Storage storage, String bucketName) { System.out.println("Bucket " + bucket.getName() + " created with a policy to restrict CSEK."); } } -// [END storage_get_encryption_enforcement_config] +// [END storage_set_encryption_enforcement_config] From 3b6fdd5647018205c7e88faeb6e6c05207f2239f Mon Sep 17 00:00:00 2001 From: nidhiii-27 Date: Wed, 5 Nov 2025 12:10:50 +0530 Subject: [PATCH 3/7] review fixes --- .../GetEncryptionEnforcementConfig.java | 21 ++++++++++++++----- ...RemoveAllEncryptionEnforcementConfig.java} | 6 +++--- .../SetBucketEncryptionEnforcementConfig.java | 20 ++++++------------ 3 files changed, 25 insertions(+), 22 deletions(-) rename samples/snippets/src/main/java/com/example/storage/bucket/{RemoveEncryptionEnforcementConfig.java => RemoveAllEncryptionEnforcementConfig.java} (92%) diff --git a/samples/snippets/src/main/java/com/example/storage/bucket/GetEncryptionEnforcementConfig.java b/samples/snippets/src/main/java/com/example/storage/bucket/GetEncryptionEnforcementConfig.java index 1959f4999b..54f9889474 100644 --- a/samples/snippets/src/main/java/com/example/storage/bucket/GetEncryptionEnforcementConfig.java +++ b/samples/snippets/src/main/java/com/example/storage/bucket/GetEncryptionEnforcementConfig.java @@ -46,8 +46,7 @@ public static void getEncryptionEnforcementConfig(String projectId, String bucke return; } - System.out.println(" Bucket Name: " + bucket.getName()); - System.out.println(" Default KMS Key: " + bucket.getDefaultKmsKeyName()); + System.out.println("Bucket Name: " + bucket.getName()); GoogleManagedEncryptionEnforcementConfig gmekConfig = bucket.getGoogleManagedEncryptionEnforcementConfig(); @@ -58,13 +57,25 @@ public static void getEncryptionEnforcementConfig(String projectId, String bucke System.out.println( " GMEK Enforcement: " - + (gmekConfig != null ? gmekConfig.getRestrictionMode() : "NOT SET (Default)")); + + (gmekConfig != null + ? String.format( + "Mode: %s, Effective Time: %s", + gmekConfig.getRestrictionMode(), gmekConfig.getEffectiveTime()) + : "NOT SET (Default)")); System.out.println( " CMEK Enforcement: " - + (cmekConfig != null ? cmekConfig.getRestrictionMode() : "NOT SET (Default)")); + + (cmekConfig != null + ? String.format( + "Mode: %s, Effective Time: %s", + cmekConfig.getRestrictionMode(), cmekConfig.getEffectiveTime()) + : "NOT SET (Default)")); System.out.println( " CSEK Enforcement: " - + (csekConfig != null ? csekConfig.getRestrictionMode() : "NOT SET (Default)")); + + (csekConfig != null + ? String.format( + "Mode: %s, Effective Time: %s", + csekConfig.getRestrictionMode(), csekConfig.getEffectiveTime()) + : "NOT SET (Default)")); } } } diff --git a/samples/snippets/src/main/java/com/example/storage/bucket/RemoveEncryptionEnforcementConfig.java b/samples/snippets/src/main/java/com/example/storage/bucket/RemoveAllEncryptionEnforcementConfig.java similarity index 92% rename from samples/snippets/src/main/java/com/example/storage/bucket/RemoveEncryptionEnforcementConfig.java rename to samples/snippets/src/main/java/com/example/storage/bucket/RemoveAllEncryptionEnforcementConfig.java index c4bda1f5e1..19159b29e7 100644 --- a/samples/snippets/src/main/java/com/example/storage/bucket/RemoveEncryptionEnforcementConfig.java +++ b/samples/snippets/src/main/java/com/example/storage/bucket/RemoveAllEncryptionEnforcementConfig.java @@ -16,14 +16,14 @@ package com.example.storage.bucket; -// [START storage_remove_encryption_enforcement_config] +// [START storage_remove_all_encryption_enforcement_config] import com.google.cloud.storage.Bucket; import com.google.cloud.storage.BucketInfo; import com.google.cloud.storage.Storage; import com.google.cloud.storage.StorageOptions; -public class RemoveEncryptionEnforcementConfig { +public class RemoveAllEncryptionEnforcementConfig { public static void removeEncryptionEnforcementConfig(String projectId, String bucketName) throws Exception { // The ID of your GCP project @@ -56,4 +56,4 @@ public static void removeEncryptionEnforcementConfig(String projectId, String bu } } } -// [END storage_remove_encryption_enforcement_config] +// [END storage_remove_all_encryption_enforcement_config] diff --git a/samples/snippets/src/main/java/com/example/storage/bucket/SetBucketEncryptionEnforcementConfig.java b/samples/snippets/src/main/java/com/example/storage/bucket/SetBucketEncryptionEnforcementConfig.java index 5f912c56b0..4a99ef1b82 100644 --- a/samples/snippets/src/main/java/com/example/storage/bucket/SetBucketEncryptionEnforcementConfig.java +++ b/samples/snippets/src/main/java/com/example/storage/bucket/SetBucketEncryptionEnforcementConfig.java @@ -28,34 +28,29 @@ import com.google.cloud.storage.StorageOptions; public class SetBucketEncryptionEnforcementConfig { - public static void setBucketEncryptionEnforcementConfig( - String projectId, String bucketName, String kmsKeyName) throws Exception { + public static void setBucketEncryptionEnforcementConfig(String projectId, String bucketName) + throws Exception { // The ID of your GCP project // String projectId = "your-project-id"; // The ID of your GCS bucket // String bucketName = "your-unique-bucket-name"; - // The name of the KMS key to use - // String kmsKeyName = - // "projects/your-project-id/locations/us/keyRings/my_key_ring/cryptoKeys/my_key" - try (Storage storage = StorageOptions.newBuilder().setProjectId(projectId).build().getService()) { // Example 1: Enforce GMEK Only - setGmekOnlyPolicy(storage, bucketName + "_gmek_only"); + setGmekEnforcedPolicy(storage, bucketName + "_gmek_only"); // Example 2: Enforce CMEK Only - setCmekOnlyPolicy(storage, bucketName + "_cmek_only", kmsKeyName); + setCmekEnforcedPolicy(storage, bucketName + "_cmek_only"); // Example 3: Restrict CSEK (Ransomware Protection) restrictCsekPolicy(storage, bucketName + "_restrict_csek"); } } - public static void setGmekOnlyPolicy(Storage storage, String bucketName) { - System.out.println("--- Setting GMEK-Only Policy on bucket " + bucketName + " ---"); + public static void setGmekEnforcedPolicy(Storage storage, String bucketName) { GoogleManagedEncryptionEnforcementConfig gmekConfig = GoogleManagedEncryptionEnforcementConfig.of( EncryptionEnforcementRestrictionMode.NOT_RESTRICTED); @@ -78,8 +73,7 @@ public static void setGmekOnlyPolicy(Storage storage, String bucketName) { "Bucket " + bucket.getName() + " created with GMEK-only enforcement policy."); } - public static void setCmekOnlyPolicy(Storage storage, String bucketName, String kmsKeyName) { - System.out.println("--- Setting CMEK-Only Policy on bucket " + bucketName + " ---"); + public static void setCmekEnforcedPolicy(Storage storage, String bucketName) { GoogleManagedEncryptionEnforcementConfig gmekConfig = GoogleManagedEncryptionEnforcementConfig.of( EncryptionEnforcementRestrictionMode.FULLY_RESTRICTED); @@ -92,7 +86,6 @@ public static void setCmekOnlyPolicy(Storage storage, String bucketName, String BucketInfo bucketInfo = BucketInfo.newBuilder(bucketName) - .setDefaultKmsKeyName(kmsKeyName) .setGoogleManagedEncryptionEnforcementConfig(gmekConfig) .setCustomerManagedEncryptionEnforcementConfig(cmekConfig) .setCustomerSuppliedEncryptionEnforcementConfig(csekConfig) @@ -104,7 +97,6 @@ public static void setCmekOnlyPolicy(Storage storage, String bucketName, String } public static void restrictCsekPolicy(Storage storage, String bucketName) { - System.out.println("--- Setting Restrict-CSEK Policy on bucket " + bucketName + " ---"); CustomerSuppliedEncryptionEnforcementConfig csekConfig = CustomerSuppliedEncryptionEnforcementConfig.of( EncryptionEnforcementRestrictionMode.FULLY_RESTRICTED); From a66a85ba0cd0b20598dbe9dc7f87cc8fec54a1d6 Mon Sep 17 00:00:00 2001 From: nidhiii-27 Date: Tue, 17 Mar 2026 13:26:28 +0530 Subject: [PATCH 4/7] chore: update samples and tests --- .../GetEncryptionEnforcementConfig.java | 6 +- .../RemoveAllEncryptionEnforcementConfig.java | 59 ---------- .../SetBucketEncryptionEnforcementConfig.java | 12 +- .../UpdateEncryptionEnforcementConfig.java | 67 +++++++++++ .../com/example/storage/ITBucketSnippets.java | 108 ++++++++++++++++++ 5 files changed, 184 insertions(+), 68 deletions(-) delete mode 100644 samples/snippets/src/main/java/com/example/storage/bucket/RemoveAllEncryptionEnforcementConfig.java create mode 100644 samples/snippets/src/main/java/com/example/storage/bucket/UpdateEncryptionEnforcementConfig.java diff --git a/samples/snippets/src/main/java/com/example/storage/bucket/GetEncryptionEnforcementConfig.java b/samples/snippets/src/main/java/com/example/storage/bucket/GetEncryptionEnforcementConfig.java index 54f9889474..b898afa2b6 100644 --- a/samples/snippets/src/main/java/com/example/storage/bucket/GetEncryptionEnforcementConfig.java +++ b/samples/snippets/src/main/java/com/example/storage/bucket/GetEncryptionEnforcementConfig.java @@ -1,5 +1,5 @@ /* - * Copyright 2025 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,7 +16,7 @@ package com.example.storage.bucket; -// [START storage_get_encryption_enforcement_config] +// [START storage_get_bucket_encryption_enforcement_config] import com.google.cloud.storage.Bucket; import com.google.cloud.storage.BucketInfo.CustomerManagedEncryptionEnforcementConfig; @@ -79,4 +79,4 @@ public static void getEncryptionEnforcementConfig(String projectId, String bucke } } } -// [END storage_get_encryption_enforcement_config] +// [END storage_get_bucket_encryption_enforcement_config] diff --git a/samples/snippets/src/main/java/com/example/storage/bucket/RemoveAllEncryptionEnforcementConfig.java b/samples/snippets/src/main/java/com/example/storage/bucket/RemoveAllEncryptionEnforcementConfig.java deleted file mode 100644 index 19159b29e7..0000000000 --- a/samples/snippets/src/main/java/com/example/storage/bucket/RemoveAllEncryptionEnforcementConfig.java +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Copyright 2025 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.example.storage.bucket; - -// [START storage_remove_all_encryption_enforcement_config] - -import com.google.cloud.storage.Bucket; -import com.google.cloud.storage.BucketInfo; -import com.google.cloud.storage.Storage; -import com.google.cloud.storage.StorageOptions; - -public class RemoveAllEncryptionEnforcementConfig { - public static void removeEncryptionEnforcementConfig(String projectId, String bucketName) - throws Exception { - // The ID of your GCP project - // String projectId = "your-project-id"; - - // The ID of your GCS bucket - // String bucketName = "your-unique-bucket-name"; - - try (Storage storage = - StorageOptions.newBuilder().setProjectId(projectId).build().getService()) { - Bucket bucket = storage.get(bucketName); - if (bucket == null) { - System.out.println("Bucket " + bucketName + " does not exist."); - return; - } - // To remove an existing policy, the corresponding field must be explicitly set to 'null' - // in the BucketInfo object passed to the update call. - BucketInfo bucketInfo = - bucket.toBuilder() - .setGoogleManagedEncryptionEnforcementConfig(null) - .setCustomerManagedEncryptionEnforcementConfig(null) - .setCustomerSuppliedEncryptionEnforcementConfig(null) - .build(); - - storage.update(bucketInfo); - System.out.println( - "Encryption enforcement policy removed from bucket " - + bucketName - + ". Bucket reverted to default behavior."); - } - } -} -// [END storage_remove_all_encryption_enforcement_config] diff --git a/samples/snippets/src/main/java/com/example/storage/bucket/SetBucketEncryptionEnforcementConfig.java b/samples/snippets/src/main/java/com/example/storage/bucket/SetBucketEncryptionEnforcementConfig.java index 4a99ef1b82..98fb5209b4 100644 --- a/samples/snippets/src/main/java/com/example/storage/bucket/SetBucketEncryptionEnforcementConfig.java +++ b/samples/snippets/src/main/java/com/example/storage/bucket/SetBucketEncryptionEnforcementConfig.java @@ -1,5 +1,5 @@ /* - * Copyright 2025 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,7 +16,7 @@ package com.example.storage.bucket; -// [START storage_set_encryption_enforcement_config] +// [START storage_set_bucket_encryption_enforcement_config] import com.google.cloud.storage.Bucket; import com.google.cloud.storage.BucketInfo; @@ -40,13 +40,13 @@ public static void setBucketEncryptionEnforcementConfig(String projectId, String StorageOptions.newBuilder().setProjectId(projectId).build().getService()) { // Example 1: Enforce GMEK Only - setGmekEnforcedPolicy(storage, bucketName + "_gmek_only"); + setGmekEnforcedPolicy(storage, "g-" + bucketName); // Example 2: Enforce CMEK Only - setCmekEnforcedPolicy(storage, bucketName + "_cmek_only"); + setCmekEnforcedPolicy(storage, "c-" + bucketName); // Example 3: Restrict CSEK (Ransomware Protection) - restrictCsekPolicy(storage, bucketName + "_restrict_csek"); + restrictCsekPolicy(storage, "rc-" + bucketName); } } @@ -110,4 +110,4 @@ public static void restrictCsekPolicy(Storage storage, String bucketName) { System.out.println("Bucket " + bucket.getName() + " created with a policy to restrict CSEK."); } } -// [END storage_set_encryption_enforcement_config] +// [END storage_set_bucket_encryption_enforcement_config] diff --git a/samples/snippets/src/main/java/com/example/storage/bucket/UpdateEncryptionEnforcementConfig.java b/samples/snippets/src/main/java/com/example/storage/bucket/UpdateEncryptionEnforcementConfig.java new file mode 100644 index 0000000000..c731dc646a --- /dev/null +++ b/samples/snippets/src/main/java/com/example/storage/bucket/UpdateEncryptionEnforcementConfig.java @@ -0,0 +1,67 @@ +/* + * Copyright 2026 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.example.storage.bucket; + +// [START storage_update_encryption_enforcement_config] + +import com.google.cloud.storage.Bucket; +import com.google.cloud.storage.BucketInfo.CustomerManagedEncryptionEnforcementConfig; +import com.google.cloud.storage.BucketInfo.EncryptionEnforcementRestrictionMode; +import com.google.cloud.storage.BucketInfo.GoogleManagedEncryptionEnforcementConfig; +import com.google.cloud.storage.Storage; +import com.google.cloud.storage.StorageOptions; + +public class UpdateEncryptionEnforcementConfig { + public static void updateEncryptionEnforcementConfig(String projectId, String bucketName) + throws Exception { + // The ID of your GCP project + // String projectId = "your-project-id"; + + // The ID of your GCS bucket with CMEK restricted + // String bucketName = "your-unique-bucket-name"; + + try (Storage storage = + StorageOptions.newBuilder().setProjectId(projectId).build().getService()) { + + Bucket bucket = storage.get(bucketName); + if (bucket == null) { + System.out.println("Bucket " + bucketName + " not found."); + return; + } + + // 1. Update a specific type (e.g., change GMEK to FULLY_RESTRICTED) + GoogleManagedEncryptionEnforcementConfig newGmekConfig = + GoogleManagedEncryptionEnforcementConfig.of( + EncryptionEnforcementRestrictionMode.FULLY_RESTRICTED); + + CustomerManagedEncryptionEnforcementConfig newCmekConfig = + CustomerManagedEncryptionEnforcementConfig.of( + EncryptionEnforcementRestrictionMode.NOT_RESTRICTED); + + // 2. Remove a specific type (e.g., remove CMEK enforcement) + bucket.toBuilder() + .setGoogleManagedEncryptionEnforcementConfig(newGmekConfig) + .setCustomerManagedEncryptionEnforcementConfig(newCmekConfig) + .build() + .update(); + + System.out.println("Encryption enforcement policy updated for bucket " + bucketName); + System.out.println("GMEK is now fully restricted, and CMEK enforcement has been removed."); + } + } +} +// [END storage_update_encryption_enforcement_config] diff --git a/samples/snippets/src/test/java/com/example/storage/ITBucketSnippets.java b/samples/snippets/src/test/java/com/example/storage/ITBucketSnippets.java index 6d649ef965..88305b9dd3 100644 --- a/samples/snippets/src/test/java/com/example/storage/ITBucketSnippets.java +++ b/samples/snippets/src/test/java/com/example/storage/ITBucketSnippets.java @@ -49,6 +49,7 @@ import com.example.storage.bucket.GetBucketMetadata; import com.example.storage.bucket.GetBucketRpo; import com.example.storage.bucket.GetDefaultEventBasedHold; +import com.example.storage.bucket.GetEncryptionEnforcementConfig; import com.example.storage.bucket.GetPublicAccessPrevention; import com.example.storage.bucket.GetRetentionPolicy; import com.example.storage.bucket.GetUniformBucketLevelAccess; @@ -64,6 +65,7 @@ import com.example.storage.bucket.RemoveRetentionPolicy; import com.example.storage.bucket.SetAsyncTurboRpo; import com.example.storage.bucket.SetBucketDefaultKmsKey; +import com.example.storage.bucket.SetBucketEncryptionEnforcementConfig; import com.example.storage.bucket.SetBucketWebsiteInfo; import com.example.storage.bucket.SetClientEndpoint; import com.example.storage.bucket.SetDefaultRpo; @@ -71,6 +73,7 @@ import com.example.storage.bucket.SetPublicAccessPreventionInherited; import com.example.storage.bucket.SetRetentionPolicy; import com.example.storage.bucket.SetSoftDeletePolicy; +import com.example.storage.bucket.UpdateEncryptionEnforcementConfig; import com.example.storage.object.DownloadRequesterPaysObject; import com.example.storage.object.ReleaseEventBasedHold; import com.example.storage.object.ReleaseTemporaryHold; @@ -83,6 +86,9 @@ import com.google.cloud.storage.BlobInfo; import com.google.cloud.storage.Bucket; import com.google.cloud.storage.BucketInfo; +import com.google.cloud.storage.BucketInfo.CustomerManagedEncryptionEnforcementConfig; +import com.google.cloud.storage.BucketInfo.EncryptionEnforcementRestrictionMode; +import com.google.cloud.storage.BucketInfo.GoogleManagedEncryptionEnforcementConfig; import com.google.cloud.storage.BucketInfo.PublicAccessPrevention; import com.google.cloud.storage.Cors; import com.google.cloud.storage.HttpMethod; @@ -712,4 +718,106 @@ public void testDisableSoftDelete() { storage.delete(tempBucket); } } + + @Test + public void testSetEncryptionEnforcementConfig() throws Throwable { + String tempBucket = RemoteStorageHelper.generateBucketName(); + String gmekOnly = "g-" + BUCKET; + String cmekOnly = "c-" + BUCKET; + String restrictCsek = "rc-" + BUCKET; + + try { + SetBucketEncryptionEnforcementConfig.setBucketEncryptionEnforcementConfig(PROJECT_ID, BUCKET); + + TestUtils.retryAssert( + RETRY_SETTINGS, + () -> { + // Case 1: GMEK Only + Bucket b1 = storage.get(gmekOnly); + assertNotNull(b1); + assertEquals( + EncryptionEnforcementRestrictionMode.NOT_RESTRICTED, + b1.getGoogleManagedEncryptionEnforcementConfig().getRestrictionMode()); + assertEquals( + EncryptionEnforcementRestrictionMode.FULLY_RESTRICTED, + b1.getCustomerManagedEncryptionEnforcementConfig().getRestrictionMode()); + + // Case 2: CMEK Only + Bucket b2 = storage.get(cmekOnly); + assertNotNull(b2); + assertEquals( + EncryptionEnforcementRestrictionMode.FULLY_RESTRICTED, + b2.getGoogleManagedEncryptionEnforcementConfig().getRestrictionMode()); + assertEquals( + EncryptionEnforcementRestrictionMode.NOT_RESTRICTED, + b2.getCustomerManagedEncryptionEnforcementConfig().getRestrictionMode()); + + // Case 3: Restrict CSEK + Bucket b3 = storage.get(restrictCsek); + assertNotNull(b3); + assertEquals( + EncryptionEnforcementRestrictionMode.FULLY_RESTRICTED, + b3.getCustomerSuppliedEncryptionEnforcementConfig().getRestrictionMode()); + }); + } finally { + // Cleanup all three buckets + storage.delete(gmekOnly); + storage.delete(cmekOnly); + storage.delete(restrictCsek); + } + } + + @Test + public void testGetEncryptionEnforcementConfig() throws Throwable { + // Setup: Set a specific config to verify retrieval + GoogleManagedEncryptionEnforcementConfig gmekConfig = + GoogleManagedEncryptionEnforcementConfig.of( + EncryptionEnforcementRestrictionMode.FULLY_RESTRICTED); + BucketInfo bucketInfo = + storage.get(BUCKET).toBuilder() + .setGoogleManagedEncryptionEnforcementConfig(gmekConfig) + .build(); + storage.update(bucketInfo); + + TestUtils.retryAssert( + RETRY_SETTINGS, + () -> { + try { + GetEncryptionEnforcementConfig.getEncryptionEnforcementConfig(PROJECT_ID, BUCKET); + String snippetOutput = stdOutCaptureRule.getCapturedOutputAsUtf8String(); + assertTrue(snippetOutput.contains("GMEK Enforcement: Mode: FullyRestricted")); + } catch (Exception e) { + throw new RuntimeException(e); + } + }); + } + + @Test + public void testUpdateEncryptionEnforcementConfig() throws Throwable { + // Setup: Initial state - CMEK fully restricted, GMEK not restricted + BucketInfo initialInfo = + storage.get(BUCKET).toBuilder() + .setCustomerManagedEncryptionEnforcementConfig( + CustomerManagedEncryptionEnforcementConfig.of( + EncryptionEnforcementRestrictionMode.FULLY_RESTRICTED)) + .build(); + storage.update(initialInfo); + + TestUtils.retryAssert( + RETRY_SETTINGS, + () -> { + // Call the update snippet + UpdateEncryptionEnforcementConfig.updateEncryptionEnforcementConfig(PROJECT_ID, BUCKET); + + Bucket bucket = storage.get(BUCKET); + // Verify GMEK was updated to FULLY_RESTRICTED + assertEquals( + EncryptionEnforcementRestrictionMode.FULLY_RESTRICTED, + bucket.getGoogleManagedEncryptionEnforcementConfig().getRestrictionMode()); + // Verify CMEK was removed (set to null) + assertEquals( + EncryptionEnforcementRestrictionMode.NOT_RESTRICTED, + bucket.getCustomerManagedEncryptionEnforcementConfig().getRestrictionMode()); + }); + } } From 9c8e559d6bbbeedbb8dc817182b99396588ff454 Mon Sep 17 00:00:00 2001 From: nidhiii-27 Date: Tue, 17 Mar 2026 16:52:53 +0530 Subject: [PATCH 5/7] chore: fix test --- .../com/example/storage/ITBucketSnippets.java | 51 ++++++++++++------- 1 file changed, 33 insertions(+), 18 deletions(-) diff --git a/samples/snippets/src/test/java/com/example/storage/ITBucketSnippets.java b/samples/snippets/src/test/java/com/example/storage/ITBucketSnippets.java index 88305b9dd3..1cb1c3f957 100644 --- a/samples/snippets/src/test/java/com/example/storage/ITBucketSnippets.java +++ b/samples/snippets/src/test/java/com/example/storage/ITBucketSnippets.java @@ -794,30 +794,45 @@ public void testGetEncryptionEnforcementConfig() throws Throwable { @Test public void testUpdateEncryptionEnforcementConfig() throws Throwable { - // Setup: Initial state - CMEK fully restricted, GMEK not restricted + String tempBucketName = RemoteStorageHelper.generateBucketName(); + // Setup: Create the bucket with initial enforcement configs BucketInfo initialInfo = - storage.get(BUCKET).toBuilder() + BucketInfo.newBuilder(tempBucketName) .setCustomerManagedEncryptionEnforcementConfig( CustomerManagedEncryptionEnforcementConfig.of( EncryptionEnforcementRestrictionMode.FULLY_RESTRICTED)) + .setGoogleManagedEncryptionEnforcementConfig( + GoogleManagedEncryptionEnforcementConfig.of( + EncryptionEnforcementRestrictionMode.NOT_RESTRICTED)) .build(); - storage.update(initialInfo); - TestUtils.retryAssert( - RETRY_SETTINGS, - () -> { - // Call the update snippet - UpdateEncryptionEnforcementConfig.updateEncryptionEnforcementConfig(PROJECT_ID, BUCKET); + storage.create(initialInfo); - Bucket bucket = storage.get(BUCKET); - // Verify GMEK was updated to FULLY_RESTRICTED - assertEquals( - EncryptionEnforcementRestrictionMode.FULLY_RESTRICTED, - bucket.getGoogleManagedEncryptionEnforcementConfig().getRestrictionMode()); - // Verify CMEK was removed (set to null) - assertEquals( - EncryptionEnforcementRestrictionMode.NOT_RESTRICTED, - bucket.getCustomerManagedEncryptionEnforcementConfig().getRestrictionMode()); - }); + try { + // Execution: Call the update snippet + // This snippet should update GMEK to FULLY_RESTRICTED and reset CMEK + UpdateEncryptionEnforcementConfig.updateEncryptionEnforcementConfig( + PROJECT_ID, tempBucketName); + + TestUtils.retryAssert( + RETRY_SETTINGS, + () -> { + Bucket bucket = storage.get(tempBucketName); + assertNotNull(bucket); + + // Verify GMEK was updated to FULLY_RESTRICTED + assertEquals( + EncryptionEnforcementRestrictionMode.FULLY_RESTRICTED, + bucket.getGoogleManagedEncryptionEnforcementConfig().getRestrictionMode()); + + // Verify CMEK was reverted/reset (defaults back to NOT_RESTRICTED) + assertEquals( + EncryptionEnforcementRestrictionMode.NOT_RESTRICTED, + bucket.getCustomerManagedEncryptionEnforcementConfig().getRestrictionMode()); + }); + + } finally { + storage.delete(tempBucketName); + } } } From 5ba19c09b48a6cc0fbfc6079525279f6b9fd4580 Mon Sep 17 00:00:00 2001 From: nidhiii-27 Date: Mon, 23 Mar 2026 16:42:17 +0530 Subject: [PATCH 6/7] chore: align region tags and update sample --- ...GetBucketEncryptionEnforcementConfig.java} | 4 ++-- ...ateBucketEncryptionEnforcementConfig.java} | 19 +++++++++++++------ .../com/example/storage/ITBucketSnippets.java | 9 +++++---- 3 files changed, 20 insertions(+), 12 deletions(-) rename samples/snippets/src/main/java/com/example/storage/bucket/{GetEncryptionEnforcementConfig.java => GetBucketEncryptionEnforcementConfig.java} (95%) rename samples/snippets/src/main/java/com/example/storage/bucket/{UpdateEncryptionEnforcementConfig.java => UpdateBucketEncryptionEnforcementConfig.java} (75%) diff --git a/samples/snippets/src/main/java/com/example/storage/bucket/GetEncryptionEnforcementConfig.java b/samples/snippets/src/main/java/com/example/storage/bucket/GetBucketEncryptionEnforcementConfig.java similarity index 95% rename from samples/snippets/src/main/java/com/example/storage/bucket/GetEncryptionEnforcementConfig.java rename to samples/snippets/src/main/java/com/example/storage/bucket/GetBucketEncryptionEnforcementConfig.java index b898afa2b6..fcc0bde727 100644 --- a/samples/snippets/src/main/java/com/example/storage/bucket/GetEncryptionEnforcementConfig.java +++ b/samples/snippets/src/main/java/com/example/storage/bucket/GetBucketEncryptionEnforcementConfig.java @@ -25,8 +25,8 @@ import com.google.cloud.storage.Storage; import com.google.cloud.storage.StorageOptions; -public class GetEncryptionEnforcementConfig { - public static void getEncryptionEnforcementConfig(String projectId, String bucketName) +public class GetBucketEncryptionEnforcementConfig { + public static void getBucketEncryptionEnforcementConfig(String projectId, String bucketName) throws Exception { // The ID of your GCP project // String projectId = "your-project-id"; diff --git a/samples/snippets/src/main/java/com/example/storage/bucket/UpdateEncryptionEnforcementConfig.java b/samples/snippets/src/main/java/com/example/storage/bucket/UpdateBucketEncryptionEnforcementConfig.java similarity index 75% rename from samples/snippets/src/main/java/com/example/storage/bucket/UpdateEncryptionEnforcementConfig.java rename to samples/snippets/src/main/java/com/example/storage/bucket/UpdateBucketEncryptionEnforcementConfig.java index c731dc646a..0b2c62cc1b 100644 --- a/samples/snippets/src/main/java/com/example/storage/bucket/UpdateEncryptionEnforcementConfig.java +++ b/samples/snippets/src/main/java/com/example/storage/bucket/UpdateBucketEncryptionEnforcementConfig.java @@ -16,22 +16,23 @@ package com.example.storage.bucket; -// [START storage_update_encryption_enforcement_config] +// [START storage_update_bucket_encryption_enforcement_config] import com.google.cloud.storage.Bucket; import com.google.cloud.storage.BucketInfo.CustomerManagedEncryptionEnforcementConfig; +import com.google.cloud.storage.BucketInfo.CustomerSuppliedEncryptionEnforcementConfig; import com.google.cloud.storage.BucketInfo.EncryptionEnforcementRestrictionMode; import com.google.cloud.storage.BucketInfo.GoogleManagedEncryptionEnforcementConfig; import com.google.cloud.storage.Storage; import com.google.cloud.storage.StorageOptions; -public class UpdateEncryptionEnforcementConfig { - public static void updateEncryptionEnforcementConfig(String projectId, String bucketName) +public class UpdateBucketEncryptionEnforcementConfig { + public static void updateBucketEncryptionEnforcementConfig(String projectId, String bucketName) throws Exception { // The ID of your GCP project // String projectId = "your-project-id"; - // The ID of your GCS bucket with CMEK restricted + // The ID of your GCS bucket with CMEK and CSEK restricted // String bucketName = "your-unique-bucket-name"; try (Storage storage = @@ -48,14 +49,20 @@ public static void updateEncryptionEnforcementConfig(String projectId, String bu GoogleManagedEncryptionEnforcementConfig.of( EncryptionEnforcementRestrictionMode.FULLY_RESTRICTED); + // 2. Remove a specific type (e.g., remove CMEK enforcement) CustomerManagedEncryptionEnforcementConfig newCmekConfig = CustomerManagedEncryptionEnforcementConfig.of( EncryptionEnforcementRestrictionMode.NOT_RESTRICTED); - // 2. Remove a specific type (e.g., remove CMEK enforcement) + // For the update, need to specify all three configs, so keeping this same as before + CustomerSuppliedEncryptionEnforcementConfig sameCsekConfig = + CustomerSuppliedEncryptionEnforcementConfig.of( + EncryptionEnforcementRestrictionMode.FULLY_RESTRICTED); + bucket.toBuilder() .setGoogleManagedEncryptionEnforcementConfig(newGmekConfig) .setCustomerManagedEncryptionEnforcementConfig(newCmekConfig) + .setCustomerSuppliedEncryptionEnforcementConfig(sameCsekConfig) .build() .update(); @@ -64,4 +71,4 @@ public static void updateEncryptionEnforcementConfig(String projectId, String bu } } } -// [END storage_update_encryption_enforcement_config] +// [END storage_update_bucket_encryption_enforcement_config] diff --git a/samples/snippets/src/test/java/com/example/storage/ITBucketSnippets.java b/samples/snippets/src/test/java/com/example/storage/ITBucketSnippets.java index 1cb1c3f957..db652ebeed 100644 --- a/samples/snippets/src/test/java/com/example/storage/ITBucketSnippets.java +++ b/samples/snippets/src/test/java/com/example/storage/ITBucketSnippets.java @@ -46,10 +46,10 @@ import com.example.storage.bucket.EnableLifecycleManagement; import com.example.storage.bucket.EnableRequesterPays; import com.example.storage.bucket.EnableUniformBucketLevelAccess; +import com.example.storage.bucket.GetBucketEncryptionEnforcementConfig; import com.example.storage.bucket.GetBucketMetadata; import com.example.storage.bucket.GetBucketRpo; import com.example.storage.bucket.GetDefaultEventBasedHold; -import com.example.storage.bucket.GetEncryptionEnforcementConfig; import com.example.storage.bucket.GetPublicAccessPrevention; import com.example.storage.bucket.GetRetentionPolicy; import com.example.storage.bucket.GetUniformBucketLevelAccess; @@ -73,7 +73,7 @@ import com.example.storage.bucket.SetPublicAccessPreventionInherited; import com.example.storage.bucket.SetRetentionPolicy; import com.example.storage.bucket.SetSoftDeletePolicy; -import com.example.storage.bucket.UpdateEncryptionEnforcementConfig; +import com.example.storage.bucket.UpdateBucketEncryptionEnforcementConfig; import com.example.storage.object.DownloadRequesterPaysObject; import com.example.storage.object.ReleaseEventBasedHold; import com.example.storage.object.ReleaseTemporaryHold; @@ -783,7 +783,8 @@ public void testGetEncryptionEnforcementConfig() throws Throwable { RETRY_SETTINGS, () -> { try { - GetEncryptionEnforcementConfig.getEncryptionEnforcementConfig(PROJECT_ID, BUCKET); + GetBucketEncryptionEnforcementConfig.getBucketEncryptionEnforcementConfig( + PROJECT_ID, BUCKET); String snippetOutput = stdOutCaptureRule.getCapturedOutputAsUtf8String(); assertTrue(snippetOutput.contains("GMEK Enforcement: Mode: FullyRestricted")); } catch (Exception e) { @@ -811,7 +812,7 @@ public void testUpdateEncryptionEnforcementConfig() throws Throwable { try { // Execution: Call the update snippet // This snippet should update GMEK to FULLY_RESTRICTED and reset CMEK - UpdateEncryptionEnforcementConfig.updateEncryptionEnforcementConfig( + UpdateBucketEncryptionEnforcementConfig.updateBucketEncryptionEnforcementConfig( PROJECT_ID, tempBucketName); TestUtils.retryAssert( From c11feb8b5959da9e9cd247e1e77f15d53089469d Mon Sep 17 00:00:00 2001 From: nidhiii-27 Date: Tue, 24 Mar 2026 12:53:17 +0530 Subject: [PATCH 7/7] chore: small change --- .../src/test/java/com/example/storage/ITBucketSnippets.java | 1 - 1 file changed, 1 deletion(-) diff --git a/samples/snippets/src/test/java/com/example/storage/ITBucketSnippets.java b/samples/snippets/src/test/java/com/example/storage/ITBucketSnippets.java index db652ebeed..4fdd5e1fcc 100644 --- a/samples/snippets/src/test/java/com/example/storage/ITBucketSnippets.java +++ b/samples/snippets/src/test/java/com/example/storage/ITBucketSnippets.java @@ -721,7 +721,6 @@ public void testDisableSoftDelete() { @Test public void testSetEncryptionEnforcementConfig() throws Throwable { - String tempBucket = RemoteStorageHelper.generateBucketName(); String gmekOnly = "g-" + BUCKET; String cmekOnly = "c-" + BUCKET; String restrictCsek = "rc-" + BUCKET;