Hashicorp 金库密钥使用日期轮换

问题描述 投票:0回答:1

我正在开发一个公开 API 的后端服务。我决定使用保管库来存储访问这些 API 的令牌。

现在我正在保险库中手动存储和旋转密钥。这是我从保险库读取机密的示例代码。

func (v *vImpl) readSecret (name string)  {
    secret, err := v.client.Logical().Read(path)
    if err != nil {
        return nil, err
    }
    /* process secrets*/

}

在从保管库读取秘密时,我想检查密钥是否在过去 6 个月内存储在保管库中。如果是这样,我想旋转它。

有没有办法检查密钥何时添加到保管库中?

go hashicorp-vault key-rotation
1个回答
0
投票

从本质上讲,Vault 的键/值引擎本身并不存储元数据,例如密钥的创建时间戳。也就是说,Vault 生态系统中有一些惯用的方法可以实现您的目标:

使用版本化密钥/值密钥引擎:如果您使用版本 2 的 K/V 密钥引擎 (kv-v2),则每次创建或更新密钥时,都会创建该密钥的新版本。元数据端点提供有关密钥的所有版本的信息,包括创建时间戳。

要获取特定版本的创建时间,您可以使用元数据端点:

  secret, err := v.client.Logical().Read(fmt.Sprintf("%s/metadata/%s", mountPath, name))
if err != nil {
    return nil, err
}
versions := secret.Data["versions"].(map[string]interface{})
// Assuming you want the first version
versionData := versions["1"].(map[string]interface{})
createdAtStr := versionData["created_time"].(string)
createdAt, _ := time.Parse(time.RFC3339, createdAtStr)

if time.Since(createdAt) > time.Duration(6)*time.Month {
    // Rotate the key
}
© www.soinside.com 2019 - 2024. All rights reserved.