You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在MongoDB中存储证书?文档Schema该如何设计?

Kubernetes集群证书与密钥集合的Schema设计

针对你给出的多集群证书存储示例,下面提供两种实用的Schema设计方案,分别适配通用JSON校验场景和文档型数据库(如MongoDB)场景:

方案一:JSON Schema(通用校验场景)

适合用来做数据格式校验,确保输入的集群信息符合规范:

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "array",
  "items": {
    "type": "object",
    "required": ["name", "kubernetes-version", "server", "user", "client-certificate", "client-key"],
    "properties": {
      "name": {
        "type": "string",
        "description": "集群唯一标识名称,建议包含云厂商标识",
        "minLength": 1
      },
      "kubernetes-version": {
        "type": "string",
        "description": "Kubernetes集群版本,遵循语义化版本规范",
        "pattern": "^\\d+\\.\\d+\\.\\d+$"
      },
      "server": {
        "type": "string",
        "description": "Kubernetes API Server地址",
        "format": "uri"
      },
      "user": {
        "type": "string",
        "description": "集群认证使用的用户名",
        "minLength": 1
      },
      "client-certificate": {
        "type": "string",
        "description": "Base64编码的客户端证书内容",
        "minLength": 1
      },
      "client-key": {
        "type": "string",
        "description": "Base64编码的客户端私钥内容",
        "minLength": 1
      }
    },
    "additionalProperties": false
  }
}

方案二:MongoDB Schema(文档数据库存储场景)

如果是用MongoDB存储这类文档,可以设计带索引和约束的Schema:

// 集合名称建议用 `cluster_credentials`
{
  validator: {
    $jsonSchema: {
      bsonType: "object",
      required: ["name", "kubernetesVersion", "server", "user", "clientCertificate", "clientKey"],
      properties: {
        name: {
          bsonType: "string",
          description: "集群唯一名称,不可重复",
          minLength: 1
        },
        kubernetesVersion: {
          bsonType: "string",
          description: "Kubernetes版本号",
          pattern: "^\\d+\\.\\d+\\.\\d+$"
        },
        server: {
          bsonType: "string",
          description: "API Server地址",
          pattern: "^https://.*:\\d+$"
        },
        user: {
          bsonType: "string",
          description: "认证用户名",
          minLength: 1
        },
        clientCertificate: {
          bsonType: "string",
          description: "Base64编码的客户端证书",
          minLength: 1
        },
        clientKey: {
          bsonType: "string",
          description: "Base64编码的客户端私钥",
          minLength: 1
        }
      }
    }
  },
  validationAction: "error",
  // 给集群名称加唯一索引,避免重复
  indexes: [
    { key: { name: 1 }, unique: true }
  ]
}

额外优化建议

  • 敏感字段加密:client-certificate和client-key属于敏感数据,建议存储时用加密算法(如AES)加密,不要明文存储。
  • 扩展字段:可以根据需求添加可选字段,比如ca-certificate(集群CA证书)、expire-time(证书过期时间)、cloud-provider(云厂商标识)等。
  • 版本管理:如果证书会更新,可以添加last-updated字段记录更新时间,方便追溯。

内容的提问来源于stack exchange,提问作者overexchange

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 15:39:21