Docs 菜单
Docs 主页
/
MongoDB Manual
/ / / /

轮换自管理分片集群的密钥

分片集群成员可以使用密钥文件,以同一部署的节点身份相互进行身份验证。

密钥文件可以包含多个密钥,如果至少一个密钥在成员之间通用,则成员身份验证建立。 这样就可以在不停机的情况下滚动升级密钥。

以下教程将逐步介绍在不停机的情况下更新分片集群密钥的过程。 [1]

警告

本教程中的示例键仅用于说明目的。 请勿在部署中使用 。 相反,使用您选择的任何方法(例如 openssl rand -base64 756等)。

考虑一个分片集群,其中每个成员的密钥文件都包含以下密钥:

当前要替换的密钥的图像。

以下过程将更新分片集群成员以使用新密钥:

新钥匙的图片。
[1] 本教程不适用于 MongoDB 的 storage engine 本地 密钥 管理所使用的密钥文件。该密钥文件只能包含一个密钥。

从MongoDB 8.0开始,您可以使用directShardOperations角色执行需要直接对分片执行命令的分片操作。

警告

使用directShardOperations角色运行命令可能会导致集群停止正常工作,并可能导致数据损坏。 仅将directShardOperations角色用于维护目的或在MongoDB支持的指导下使用。 执行完维护操作后,请停止使用directShardOperations角色。

修改每个成员的密钥文件以包含旧密钥和新密钥。

警告

本教程中的示例键仅用于说明目的。 请勿用于您的部署。 相反,使用您选择的任何方法(例如 openssl rand -base64 756等)。

您可以将多个密钥字符串指定为密钥字符串序列(可以选择用引号括起来):

多键字符串序列的图像。

一旦所有密钥文件都包含旧密钥和新密钥,请一次重启每个成员。

对于配置服务器副本集 (CSRS) 的每个从节点,将 mongosh连接到节点,然后:

  1. 使用db.shutdownServer()方法关闭成员:

    use admin
    db.shutdownServer()
  2. 重新启动成员。

对于主节点,将mongosh连接到该节点,然后

  1. 使用rs.stepDown()降级该节点:

    rs.stepDown()
  2. 使用db.shutdownServer()方法关闭成员:

    use admin
    db.shutdownServer()
  3. 重新启动成员。

对于分片副本集的每个从节点,将mongosh连接到该节点,然后:

  1. 使用db.shutdownServer()方法关闭成员:

    use admin
    db.shutdownServer()
  2. 重新启动成员。

对于每个分片副本集的主节点,将mongosh连接到节点,然后

  1. 使用rs.stepDown()降级该节点:

    rs.stepDown()
  2. 使用db.shutdownServer()方法关闭成员:

    use admin
    db.shutdownServer()
  3. 重新启动成员。

对于每个 mongos/router 实例,将mongosh连接到mongos实例,然后:

  1. 使用db.shutdownServer()方法关闭成员:

    use admin
    db.shutdownServer()
  2. 重新启动成员。

所有成员重新启动后,成员现在接受旧密钥或新密钥进行成员身份验证。

警告

本教程中的示例键仅用于说明目的。 请勿用于您的部署。 相反,使用您选择的任何方法(例如 openssl rand -base64 756等)。

修改每个成员的密钥文件以仅包含新密码。

新钥匙的图片。

一旦所有密钥文件仅包含新密钥,请一次重启一个成员。

对于配置服务器副本集 (CSRS) 的每个从节点,将mongosh连接到节点,然后:

  1. 使用db.shutdownServer()方法关闭成员:

    use admin
    db.shutdownServer()
  2. 重新启动成员。

对于主节点,将mongosh连接到该节点,然后

  1. 使用rs.stepDown()降级该节点:

    rs.stepDown()
  2. 使用db.shutdownServer()方法关闭成员:

    use admin
    db.shutdownServer()
  3. 重新启动成员。

对于分片副本集的每个从节点,将mongosh连接到该节点,然后:

  1. 使用db.shutdownServer()方法关闭成员:

    use admin
    db.shutdownServer()
  2. 重新启动成员。

对于每个分片副本集的主节点,将mongosh连接到节点,然后

  1. 使用rs.stepDown()降级该节点:

    rs.stepDown()
  2. 使用db.shutdownServer()方法关闭成员:

    use admin
    db.shutdownServer()
  3. 重新启动成员。

对于每个 mongos/router 实例,将mongosh连接到mongos实例,然后:

  1. 使用db.shutdownServer()方法关闭成员:

    use admin
    db.shutdownServer()
  2. 重新启动成员。

所有成员重新启动后,成员现在仅接受用于成员身份验证的新密钥。

后退

轮换副本集密钥