googleads / googleads/data-manager-python
Encrypter requires Cloud KMS Decrypt while wrapping a Data Manager DEK
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- Jupyter Notebook
- Sterne
- 4
- Forks
- 1
- Ø Merge
- 11 Std. 45 Min.
- Gemergte PRs (30 T.)
- 2
Beschreibung
Upstream report - encrypt-only Data Manager keyset wrapping
Target: googleads/data-manager-python
Title: Encrypter requires Cloud KMS Decrypt while wrapping a Data Manager DEK
Report
The official google-ads-datamanager-util Encrypter cannot be constructed with a least-privilege
Cloud KMS identity that has cloudkms.cryptoKeyVersions.useToEncrypt but not
cloudkms.cryptoKeyVersions.useToDecrypt.
Environment:
googleads/data-manager-pythoncommit
4c8e3ee94854e9fc34c63f9468dcaee20ad02c89(google-ads-datamanager-util==0.4.0rc1)tink[gcpkms]==1.16.0- a Cloud KMS service account restricted to encrypting under one exact KEK
Encrypter._create(...) calls tink.proto_keyset_format.serialize_encrypted(...). Tink encrypts
the serialized keyset with the supplied KMS AEAD and then immediately calls that AEAD's decrypt
method to compare the recovered keyset. Cloud KMS Encrypt succeeds, but the expected Decrypt denial
causes Encrypter construction to fail before any Data Manager request is made.
Relevant source:
Could the utility expose a supported path that produces the same Data Manager encrypted_dek
bytes while requiring only KMS Encrypt from the local identity? If Tink intentionally requires the
round-trip check, guidance on the supported least-privilege permission model would also resolve the
ambiguity.
Tink's public KmsEnvelopeAead.encrypt(...) is not a drop-in replacement: it encrypts raw
KeyData.value, generates a fresh key per payload, and returns a length-prefixed combined envelope
ciphertext rather than the serialized process-lifetime EncryptedKeyset emitted by the utility.
We deliberately did not grant temporary Decrypt, fabricate a Decrypt result, patch Tink, or assemble
the secret-keyset envelope manually. No Data Manager RPC was attempted and no customer data is
involved in this report.
Beitragsleitfaden
Erste Schritte
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Öffne einen Pull Request, der die Issue-Nummer nennt.
Rechercherichtung
Beginne mit google/ads/datamanager_util/encrypt.py rund um den zitierten Aufruf des Hilfsprogramms und untersuche anschließend Tinks _proto_keyset_format.py und _keyset_handle.py an den referenzierten Serialisierungs- und Round-Trip-Prüfungen. Ermittle, ob ein unterstützter encrypt-only-Pfad die encrypted_dek-Bytes des Hilfsprogramms bewahren kann, oder dokumentiere das erforderliche Berechtigungsmodell. Die Aufgabe ist abgeschlossen, wenn das unterstützte Verhalten oder die Anleitung eindeutig ist.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- google-cloud, python
- Bereich
- cloud, security
- Issue-Typ
- Bug
- Schwierigkeit
- 5/5
- Geschätzter Aufwand
- Über eine Woche
- Aktivitätsstatus
- Ruhig
- Klarheit
- Muss geklärt werden
- Anfängerfreundlichkeit
- 35/100