GCP - KMS Enum

支持 HackTricks

KMS

云密钥管理服务 作为 加密密钥 的安全存储,这些密钥对于 加密和解密敏感数据 的操作至关重要。这些密钥被组织在密钥环中,允许结构化管理。此外,访问控制可以在单个密钥级别或整个密钥环上进行精细配置,确保权限与安全要求精确对齐。

KMS 密钥环默认创建为 全球,这意味着该密钥环内的密钥可以从任何区域访问。然而,可以在 特定区域 创建特定的密钥环。

密钥保护级别

  • 软件密钥:软件密钥完全由 KMS 在软件中 创建和管理。这些密钥 不受任何硬件安全模块 (HSM) 保护,可以用于 测试和开发目的。软件密钥 不推荐用于生产 使用,因为它们提供低安全性,容易受到攻击。

  • 云托管密钥:云托管密钥由 KMS 在云中 创建和管理,使用高度可用和可靠的基础设施。这些密钥 受 HSM 保护,但 HSM 不专用于特定客户。云托管密钥适用于大多数生产用例。

  • 外部密钥:外部密钥在 KMS 之外 创建和管理,并导入到 KMS 中以用于加密操作。外部密钥 可以存储在硬件安全模块 (HSM) 或软件库中,具体取决于客户的偏好

密钥用途

轮换周期和销毁周期

默认情况下,每 90 天 轮换一次,但可以 轻松完全自定义

“程序化销毁”周期是 用户请求删除密钥后的时间,直到密钥被 删除。在密钥创建后无法更改(默认 1 天)。

主版本

每个 KMS 密钥可以有多个版本,其中一个必须是 默认 版本,当与 KMS 密钥交互时未指定版本时将使用该版本。

枚举

拥有 列出密钥的权限,您可以通过以下方式访问它们:

# List the global keyrings available
gcloud kms keyrings list --location global
gcloud kms keyrings get-iam-policy <KEYRING>

# List the keys inside a keyring
gcloud kms keys list --keyring <KEYRING> --location <global/other_locations>
gcloud kms keys get-iam-policy <KEY>

# Encrypt a file using one of your keys
gcloud kms encrypt --ciphertext-file=[INFILE] \
--plaintext-file=[OUTFILE] \
--key [KEY] \
--keyring [KEYRING] \
--location global

# Decrypt a file using one of your keys
gcloud kms decrypt --ciphertext-file=[INFILE] \
--plaintext-file=[OUTFILE] \
--key [KEY] \
--keyring [KEYRING] \
--location global

权限提升

GCP - KMS Privesc

利用后

GCP - KMS Post Exploitation

参考文献

支持 HackTricks

Last updated