[英]Mongo kubernetes securing
我正在嘗試在kubernetes上為mongodb創建用戶名/密碼。 但是似乎MONGO_INITDB_ROOT_USERNAME / PASSWORD無法正常工作或無法正常工作,因為我無法使用以下憑據登錄:
apiVersion: apps/v1beta1
kind: StatefulSet
metadata:
name: mongotest
spec:
revisionHistoryLimit: 3
selector:
matchLabels:
app: mongotest
replicas: 1
podManagementPolicy: Parallel
updateStrategy:
type: RollingUpdate
template:
metadata:
labels:
app: mongotest
spec:
hostname: mongotest
containers:
- name: mongotest
image: mongo
imagePullPolicy: Always
restartPolicy: Always
env:
- name: "MONGO_DATA_DIR"
value: "/data/db"
- name: "MONGO_LOG_DIR"
value: "/data/logs"
- name: MONGO_INITDB_ROOT_USERNAME
value: test
- name: MONGO_INITDB_ROOT_PASSWORD
value: test
- name: MONGO_INITDB_DATABASE
value: admin
lifecycle:
postStart:
exec:
command:
- /bin/sh
- -c
- >
mongo --eval 'db.auth('test', 'test');db = db.getSiblingDB("admin"); db.createUser({ user: "admin", pwd: "test", roles: [{ role: "root", db: "admin" }]});'
ports:
- name: port27017
containerPort: 27017
從注釋中收集所有信息:身份驗證失敗的原因是由於無法識別的用戶名/密碼。 刪除生命周期部分的工作原理是,它會禁用身份驗證,並且用戶可以訪問MongoDB並創建新用戶。
如果您不提供這兩個變量或未使用自己的自定義用戶設置來設置--auth標志,則MongoDB將不需要身份驗證。 有關此處描述的功能的更多詳細信息,請參閱官方文檔中的各節,其中更詳細地描述了身份驗證和授權。
以下MongoDB 文檔 :
連接到mongod或mongos實例時,請使用mongo命令行身份驗證選項(--username,-password和--authenticationDatabase),或者
首先連接到mongod或mongos實例,然后對身份驗證數據庫運行authenticate命令或db.auth()方法。
因此,在docker的情況下,您可以運行以下命令:
docker run -d --name some-mongo -e MONGO_INITDB_ROOT_USERNAME=mongoadmin -e MONGO_INITDB_ROOT_PASSWORD=secret mongo
在Kubernetes中,因為它具有不同的字符,所以您可以使容器在配置yaml中運行特定的命令:例如: containers: - image: mongo name: mongoadmin command: ["mongo", "--auth"]
盡管最安全的方法是使用機密,但因為在環境變量中傳遞用戶名和密碼不是最佳實踐。 您可以在官方文檔中找到有關機密的更多信息。 而更多的從泊塢秘密章泊塢窗角度來看這里 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.