Encrypter requires Cloud KMS Decrypt while wrapping a Data Manager DEK
还没有人认领这个 Issue。
评估
- 难度
- 5/5
- 预计耗时
- 一周以上
- 新手友好度
- 35/100
调研方向
从引用的工具调用附近的 google/ads/datamanager_util/encrypt.py 开始,然后检查 Tink 的 _proto_keyset_format.py 和 _keyset_handle.py 中引用的序列化和往返检查。确定受支持的 encrypt-only 路径是否能够保留该工具的 encrypted_dek 字节,或者记录所需的权限模型。当受支持的行为或指导明确无歧义时即表示完成。
由索引模型根据 Issue 内容生成。
描述
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.
- 主要语言
- Jupyter Notebook
- 星标
- 4
- 派生
- 1
- 平均合并
- 11 小时 45 分钟
- 30 天内合并 PR
- 2
贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
googleads/data-manager-python 的其他 Issue
-
type: process
难度 1/5 1 小时以内 新手友好度 68/100
查看 googleads/data-manager-python 的全部 Issue
相似的 Issue
-
难度 2/5 1-3 小时 新手友好度 75/100
-
难度 2/5 1-3 小时 新手友好度 75/100
carverauto/serviceradar#4596 ·
-
complexity: small feature: security role: DevOps Engineer size: 2pt
难度 2/5 1-3 小时 新手友好度 75/100
hackforla/devops-security#203 ·
-
难度 2/5 1-3 小时 新手友好度 65/100
OpenHands/OpenHands-Cloud#1283 ·
-
难度 2/5 1-3 小时 新手友好度 75/100
elecnix/infra-cost-model#353 ·