用户¶
集群中的MongoDB用户帐户可以分为两个不同的组:
- 应用程序级用户:非特权用户帐户,
- 系统级用户:自动化集群部署和管理任务所需的帐号,如MongoDB Health检查。
由于这两组用户帐户的用途不同,因此在下面几节中分别考虑它们。
无特权的用户¶
默认情况下没有创建非特权(一般用途)用户帐户。如果您需要一般用途的用户,请运行以下命令:
美元kubectl运行-我——rm——tty雷竞技下载官网percona-client——图片=雷竞技下载官网percona / percona-server-mongodb: 4.4.18-18——重启=从来没有--bashil mongodb@p雷竞技下载官网ercona-client: / $蒙戈“mongodb + srv: / / userAdmin: userAdmin123456@my-cluster-name-rs0.psmdb.svc.cluster.local /管理?replicaSet = rs0&ssl = false”rs0:主>db.createUser({用户:“myApp”,pwd:“myAppPassword”,角色:({db:“myApp”,角色:“读写”}],机制:(“SCRAM-SHA-1”]})
现在检查新创建的用户:
美元kubectl运行-我——rm——tty雷竞技下载官网percona-client——图片=雷竞技下载官网percona / percona-server-mongodb: 4.4.18-18——重启=从来没有--bashil mongodb@p雷竞技下载官网ercona-client: / $蒙戈“mongodb + srv: / / myApp: myAppPassword@my-cluster-name-rs0.psmdb.svc.cluster.local /管理?replicaSet = rs0&ssl = false”rs0:主>使用myApp rs0:主>db.test.insert({x:1})rs0:主>db.test.findOne()
系统用户¶
为了自动化集群组件的部署和管理,操作员需要系统级的MongoDB用户。
在安装过程中,操作员需要在启动操作员之前部署Kubernetes Secrets。可以在中设置所需机密的名称部署/ cr.yaml下spec.secrets部分。
默认秘密名称:my-cluster-name-secrets
秘密名称字段:spec.secrets.users
警告
这些用户不应该用于运行应用程序。
| 用户的目的 | 用户名密钥 | 密码密钥 |
|---|---|---|
| 备份/恢复 | MONGODB_BACKUP_USER | MONGODB_BACKUP_PASSWORD |
| 集群管理 | MONGODB_CLUSTER_ADMIN_USER | MONGODB_CLUSTER_ADMIN_PASSWORD |
| 集群监控raybet雷竞技竞猜在线官网 | MONGODB_CLUSTER_raybet雷竞技竞猜在线官网MONITOR_USER | MONGODB_CLUSTER_raybet雷竞技竞猜在线官网MONITOR_PASSWORD |
| 数据库管理 | MONGODB_DATABASE_ADMIN_USER | MONGODB_DATABASE_ADMIN_PASSWORD |
| 用户管理 | MONGODB_USER_ADMIN_USER | MONGODB_USER_ADMIN_PASSWORD |
| PMM服务器 | PMM_SERVER_USER | PMM_SERVER_PASSWORD |
自Operator 1.13.0以来,PMM的基于密码的授权方法已弃用。请改用基于令牌的授权。
备份/恢复—MongoDB角色:备份,恢复,clusterraybet雷竞技竞猜在线官网Monitor
集群管理员- MongoDB角色:clusterAdmin
Cluster raybet雷竞技竞猜在线官网Monitor - MongoDB角色:clusterraybet雷竞技竞猜在线官网Monitor
数据库管理员- MongoDB角色:readWriteAnyDatabase,readAnyDatabase,dbAdminAnyDatabase,备份,恢复,clusterraybet雷竞技竞猜在线官网Monitor
用户Admin—MongoDB角色:userAdmin
请注意
的凭据更改MONGODB_CLUSTER_raybet雷竞技竞猜在线官网MONITOR用户登录后,集群pod将进入重启周期,并且集群无法通过蒙戈服务到此周期结束。
YAML对象格式¶
这些用户的Secrets对象的默认名称是my-cluster-name-secrets并且可以在集群的CR中设置spec.secrets.users去不同的地方。当你自己创建对象时,相应的YAML文件应该匹配以下简单的格式:
apiVersion:v1种类:秘密元数据:名字:my-cluster-name-secrets类型:不透明的stringData:MONGODB_BACKUP_USER:备份MONGODB_BACKUP_PASSWORD:backup123456MONGODB_DATABASE_ADMIN_USER:databaseAdminMONGODB_DATABASE_ADMIN_PASSWORD:databaseAdmin123456MONGODB_CLUSTER_ADMIN_USER:clusterAdminMONGODB_CLUSTER_ADMIN_PASSWORD:clusterAdmin123456MONGODB_CLUSTER_raybet雷竞技竞猜在线官网MONITOR_USER:clusterraybet雷竞技竞猜在线官网MonitorMONGODB_CLUSTER_raybet雷竞技竞猜在线官网MONITOR_PASSWORD:clusterraybet雷竞技竞猜在线官网Monitor123456MONGODB_USER_ADMIN_USER:userAdminMONGODB_USER_ADMIN_PASSWORD:userAdmin123456PMM_SERVER_USER:管理PMM_SERVER_PASSWORD:管理PMM_SERVER_API_KEY:apikey
上面的示例与附带的内容相匹配部署/ secrets.yaml包含默认密码和默认API密钥。您不应该在生产环境中使用它们,但是它们的存在是为了帮助自动化测试或在开发环境中简单使用。
如你所见,因为我们使用stringData当创建Secrets对象时,每个键/值对的所有值都以用户方便的纯文本格式声明。但是生成的Secrets对象包含存储为数据-即base64编码的字符串。如果您想要更新任何字段,则需要将值编码为base64格式。要做到这一点,你可以跑步Echo -n "password" | base64——wrap=0(或只是Echo -n "password" | base64在Apple macOS的情况下)在您的本地shell中获取有效值。例如,将“Database Admin”用户的密码设置为new_password在my-cluster-name-secrets对象可以通过以下命令实现:
美元kubectl补丁秘密/ my-cluster-name-secrets- p{“数据”:{“MONGODB_DATABASE_ADMIN_PASSWORD”:“$ (回声- nnew_password|base64——包装=0)““}}”
美元kubectl补丁秘密/ my-cluster-name-secrets- p{“数据”:{“MONGODB_DATABASE_ADMIN_PASSWORD”:“$ (回声- nnew_password|base64)““}}”
请注意
操作符创建并更新基于集群名称命名的附加Secrets对象,例如internal-my-cluster-name-users。它仅由操作员使用,用户不应进行任何手动更改。该对象包含与中指定的密码相同的秘密spec.secrets.users(如。my-cluster-name-secrets).当用户更新时my-cluster-name-secrets,操作符将这些更改传播到内部internal-my-cluster-name-users秘密的对象。
密码轮换策略和定时¶
当用户机密发生变化时,操作员创建必要的事务来更改密码。这个旋转几乎是立即发生的(延迟可能长达几秒钟),除了更改密码之外不需要采取任何操作。
请注意
请不要改变secrets.users在CR中的选项中,在secrets对象本身内部进行更改。
发展模式¶
为了使开发和测试更容易,部署/ secrets.yaml“secrets”文件包含MongoDB系统用户的默认密码。
这些开发模式凭证来自部署/ secrets.yaml是:
| 秘密密钥 | 秘密值 |
|---|---|
| MONGODB_BACKUP_USER | 备份 |
| MONGODB_BACKUP_PASSWORD | backup123456 |
| MONGODB_DATABASE_ADMIN_USER | databaseAdmin |
| MONGODB_DATABASE_ADMIN_PASSWORD | databaseAdmin123456 |
| MONGODB_CLUSTER_ADMIN_USER | clusterAdmin |
| MONGODB_CLUSTER_ADMIN_PASSWORD | clusterAdmin123456 |
| MONGODB_CLUSTER_raybet雷竞技竞猜在线官网MONITOR_USER | clusterraybet雷竞技竞猜在线官网Monitor |
| MONGODB_CLUSTER_raybet雷竞技竞猜在线官网MONITOR_PASSWORD | clusterraybet雷竞技竞猜在线官网Monitor123456 |
| MONGODB_USER_ADMIN_USER | userAdmin |
| MONGODB_USER_ADMIN_PASSWORD | userAdmin123456 |
| PMM_SERVER_USER | 管理 |
| PMM_SERVER_PASSWORD | 管理 |
| PMM_SERVER_API_KEY | apikey |
警告
不要在生产环境中使用默认的MongoDB Users和/或默认的PMM API密钥!
MongoDB内部认证密钥(可选)¶
默认秘密名称:my-cluster-name-mongodb-key
秘密名称字段:spec.secrets.key
默认情况下,操作符将创建一个随机的1024字节密钥MongoDB内部认证如果它不存在。如果希望部署不同的密钥,请在启动操作符之前手动创建密钥。