MST

星途 面试题库

面试题:MongoDB分片集群安全性配置之密钥管理与审计

在MongoDB分片集群安全性配置里,对于加密密钥管理以及审计功能,怎样进行全面且高效的设置?阐述密钥管理系统(KMS)与MongoDB集成的要点,以及设计有效的审计策略和分析审计日志来保障集群安全的方法。
35.5万 热度难度
数据库MongoDB

知识考点

AI 面试

面试题答案

一键面试

加密密钥管理

  1. 选择合适的KMS
    • 常见的KMS有AWS Key Management Service(KMS)、Google Cloud KMS、Azure Key Vault等。根据自身云环境或业务需求选择。例如,如果使用AWS云服务,AWS KMS是一个很好的选择,它与AWS生态系统紧密集成。
  2. KMS与MongoDB集成要点
    • 配置连接:在MongoDB配置文件(mongod.confmongos.conf)中,使用--kmsproviders选项来指定KMS提供商。例如,对于AWS KMS,配置如下:
security:
  encryption:
    kmsproviders:
      aws:
        accessKeyId: <your - access - key - id>
        secretAccessKey: <your - secret - access - key>
        region: <your - region>
  • 密钥创建与管理:在KMS中创建加密密钥。不同KMS有不同的密钥创建流程。例如,在AWS KMS中,可以通过AWS Management Console、AWS CLI或SDK创建CMK(Customer Master Key)。创建后,记录密钥的ARN(Amazon Resource Name),在MongoDB配置中使用。
  • 加密数据使用:确保在MongoDB中配置了使用KMS加密数据。例如,在集合级别启用加密,可以使用如下命令:
db.createCollection("myCollection", {
  encryption: {
    keyId: [<key - id - from - kms>],
    readConcern: { level: "local" },
    writeConcern: { w: "majority" }
  }
});
  • 密钥轮换:定期在KMS中轮换密钥,以增强安全性。在MongoDB中,需要重新配置使用新的密钥。例如,当在AWS KMS中轮换密钥后,更新MongoDB配置文件中的密钥ARN,并重启相关的mongodmongos进程。

审计功能

  1. 设计有效的审计策略
    • 确定审计范围:明确要审计的操作。例如,审计所有用户的身份验证尝试、特定集合的读写操作等。对于敏感集合,如用户信息集合,审计所有的读、写、更新和删除操作。
    • 定义审计规则:使用MongoDB的审计过滤器来定义规则。例如,只审计特定IP地址范围内的连接,可以在配置文件中设置:
security:
  auditLog:
    destination: file
    path: /var/log/mongodb/audit.log
    filters:
      - {
          atype: "authenticate",
          remoteAddr: { $in: ["192.168.1.0/24"] }
        }
  • 设置审计级别:MongoDB提供不同的审计级别,如allreadWritewrite等。根据需求选择,all级别会记录所有操作,适合安全要求极高的场景,但会产生较多日志;write级别只记录写操作,适合对写操作重点关注的场景。
  1. 分析审计日志保障集群安全
    • 日志收集与存储:将审计日志存储在安全且可靠的位置。可以使用文件系统存储,如上述配置中的/var/log/mongodb/audit.log,也可以将日志发送到集中式日志管理系统,如Elasticsearch + Kibana组合。
    • 定期审查:安排定期审查审计日志,检查异常活动。例如,多次失败的身份验证尝试可能表示暴力破解攻击,大量对特定集合的写入操作可能是数据泄露的前兆。
    • 自动化分析:使用工具进行自动化分析,如编写脚本利用正则表达式匹配异常模式。例如,使用Python的re库匹配日志中失败的身份验证记录,并在达到一定阈值时发送警报。
    • 关联分析:将审计日志与其他安全相关数据(如网络流量数据、系统日志等)进行关联分析,以更全面地了解安全状况。例如,结合网络流量数据,确定异常数据库操作是否来自可疑的网络连接。