Skip to content
This repository was archived by the owner on Mar 31, 2026. It is now read-only.

Commit 7eb6b93

Browse files
samples: add samples for bucket encryption enforcement config
Co-authored-by: nidhiii-27 <224584462+nidhiii-27@users.noreply.github.com>
1 parent 725d610 commit 7eb6b93

2 files changed

Lines changed: 59 additions & 35 deletions

File tree

samples/snippets/encryption_test.py

Lines changed: 42 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -131,37 +131,48 @@ def test_object_csek_to_cmek(test_blob):
131131
assert cmek_blob.download_as_bytes(), test_blob_content
132132

133133

134-
def test_bucket_encryption_enforcement_config(capsys):
134+
@pytest.fixture(scope="module")
135+
def enforcement_bucket():
135136
bucket_name = f"test_encryption_enforcement_{uuid.uuid4().hex}"
137+
yield bucket_name
136138

139+
storage_client = storage.Client()
137140
try:
138-
# Create
139-
storage_set_bucket_encryption_enforcement_config.set_bucket_encryption_enforcement_config(bucket_name)
140-
out, _ = capsys.readouterr()
141-
assert f"Created bucket {bucket_name} with Encryption Enforcement Config." in out
142-
143-
# Get
144-
storage_get_bucket_encryption_enforcement_config.get_bucket_encryption_enforcement_config(bucket_name)
145-
out, _ = capsys.readouterr()
146-
assert f"Encryption Enforcement Config for bucket {bucket_name}:" in out
147-
assert "Customer-managed encryption enforcement config restriction mode: NotRestricted" in out
148-
assert "Customer-supplied encryption enforcement config restriction mode: FullyRestricted" in out
149-
assert "Google-managed encryption enforcement config restriction mode: FullyRestricted" in out
150-
151-
# Update
152-
storage_update_encryption_enforcement_config.update_encryption_enforcement_config(bucket_name)
153-
out, _ = capsys.readouterr()
154-
assert f"Encryption enforcement policy updated for bucket {bucket_name}." in out
155-
156-
# Get after update
157-
storage_get_bucket_encryption_enforcement_config.get_bucket_encryption_enforcement_config(bucket_name)
158-
out, _ = capsys.readouterr()
159-
assert "Customer-managed encryption enforcement config restriction mode: NotRestricted" in out
160-
assert "Customer-supplied encryption enforcement config restriction mode: None" in out
161-
assert "Google-managed encryption enforcement config restriction mode: FullyRestricted" in out
162-
163-
finally:
164-
try:
165-
storage.Client().get_bucket(bucket_name).delete(force=True)
166-
except Exception:
167-
pass
141+
bucket = storage_client.get_bucket(bucket_name)
142+
bucket.delete(force=True)
143+
except Exception:
144+
pass
145+
146+
147+
def test_set_bucket_encryption_enforcement_config(enforcement_bucket):
148+
storage_set_bucket_encryption_enforcement_config.set_bucket_encryption_enforcement_config(
149+
enforcement_bucket
150+
)
151+
152+
storage_client = storage.Client()
153+
bucket = storage_client.get_bucket(enforcement_bucket)
154+
155+
assert bucket.google_managed_encryption_enforcement_config.restriction_mode == "FullyRestricted"
156+
assert bucket.customer_managed_encryption_enforcement_config.restriction_mode == "NotRestricted"
157+
assert bucket.customer_supplied_encryption_enforcement_config.restriction_mode == "FullyRestricted"
158+
159+
160+
def test_get_bucket_encryption_enforcement_config(enforcement_bucket):
161+
# This just exercises the get snippet. If it crashes, the test fails.
162+
# The assertions on the state were done in the set test.
163+
storage_get_bucket_encryption_enforcement_config.get_bucket_encryption_enforcement_config(
164+
enforcement_bucket
165+
)
166+
167+
168+
def test_update_encryption_enforcement_config(enforcement_bucket):
169+
storage_update_encryption_enforcement_config.update_encryption_enforcement_config(
170+
enforcement_bucket
171+
)
172+
173+
storage_client = storage.Client()
174+
bucket = storage_client.get_bucket(enforcement_bucket)
175+
176+
assert bucket.google_managed_encryption_enforcement_config.restriction_mode == "FullyRestricted"
177+
assert bucket.customer_managed_encryption_enforcement_config.restriction_mode == "NotRestricted"
178+
assert bucket.customer_supplied_encryption_enforcement_config is None

samples/snippets/storage_set_bucket_encryption_enforcement_config.py

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,23 @@ def set_bucket_encryption_enforcement_config(bucket_name):
2525
storage_client = storage.Client()
2626
bucket = storage_client.bucket(bucket_name)
2727

28-
# Restriction mode can be "FullyRestricted" or "NotRestricted"
29-
bucket.customer_managed_encryption_enforcement_config = EncryptionEnforcementConfig(restriction_mode="NotRestricted")
30-
bucket.customer_supplied_encryption_enforcement_config = EncryptionEnforcementConfig(restriction_mode="FullyRestricted")
31-
bucket.google_managed_encryption_enforcement_config = EncryptionEnforcementConfig(restriction_mode="FullyRestricted")
28+
# Setting restriction_mode to "FullyRestricted" for Google-managed encryption (GMEK)
29+
# means objects cannot be created using the default Google-managed keys.
30+
bucket.google_managed_encryption_enforcement_config = EncryptionEnforcementConfig(
31+
restriction_mode="FullyRestricted"
32+
)
33+
34+
# Setting restriction_mode to "NotRestricted" for Customer-managed encryption (CMEK)
35+
# ensures that objects ARE permitted to be created using Cloud KMS keys.
36+
bucket.customer_managed_encryption_enforcement_config = EncryptionEnforcementConfig(
37+
restriction_mode="NotRestricted"
38+
)
39+
40+
# Setting restriction_mode to "FullyRestricted" for Customer-supplied encryption (CSEK)
41+
# prevents objects from being created using raw, client-side provided keys.
42+
bucket.customer_supplied_encryption_enforcement_config = EncryptionEnforcementConfig(
43+
restriction_mode="FullyRestricted"
44+
)
3245

3346
bucket.create()
3447

0 commit comments

Comments
 (0)