Skip to content

Commit 9769ffa

Browse files
PSMDB. Add kerberos auth to RS setup (#156)
1 parent 73abc62 commit 9769ffa

File tree

8 files changed

+129
-7
lines changed

8 files changed

+129
-7
lines changed
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
FROM alpine
2+
RUN apk add --no-cache bash krb5 krb5-server krb5-pkinit
3+
COPY conf/configure_krb5.sh /var/lib/krb5kdc/
4+
EXPOSE 88/udp
5+
ENTRYPOINT [ "sh", "/var/lib/krb5kdc/configure_krb5.sh"]
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
#! /env/sh
2+
3+
cat > /etc/krb5.conf << EOL
4+
[libdefaults]
5+
default_realm = PERCONATEST.COM
6+
forwardable = true
7+
dns_lookup_realm = false
8+
dns_lookup_kdc = false
9+
ignore_acceptor_hostname = true
10+
rdns = false
11+
[realms]
12+
PERCONATEST.COM = {
13+
kdc_ports = 88
14+
kdc = kerberos
15+
admin_server = kerberos
16+
}
17+
[domain_realm]
18+
.perconatest.com = PERCONATEST.COM
19+
perconatest.com = PERCONATEST.COM
20+
kerberos = PERCONATEST.COM
21+
EOL
22+
23+
kdb5_util -P password create -s
24+
kadmin.local -q "addprinc -pw password root/admin"
25+
for i in 101 102 103 201 202 203; do
26+
kadmin.local -q "addprinc -pw mongodb mongodb/rs$i"
27+
done
28+
kadmin.local -q "addprinc -pw password1 pmm"
29+
for i in 101 102 103 201 202 203; do
30+
kadmin.local -q "ktadd -k /keytabs/mongodb.keytab mongodb/rs$i@PERCONATEST.COM"
31+
done
32+
33+
krb5kdc -n

pmm_psmdb-pbm_setup/conf/mongod-cfg/mongod.conf

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,3 +25,6 @@ operationProfiling:
2525

2626
security:
2727
keyFile: /etc/keyfile
28+
authorization: enabled
29+
setParameter:
30+
authenticationMechanisms: SCRAM-SHA-1,GSSAPI

pmm_psmdb-pbm_setup/conf/mongod-rs/mongod.conf

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,3 +22,6 @@ operationProfiling:
2222

2323
security:
2424
keyFile: /etc/keyfile
25+
authorization: enabled
26+
setParameter:
27+
authenticationMechanisms: SCRAM-SHA-1,GSSAPI

pmm_psmdb-pbm_setup/conf/mongod-rs1/mongod.conf

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,3 +25,6 @@ operationProfiling:
2525

2626
security:
2727
keyFile: /etc/keyfile
28+
authorization: enabled
29+
setParameter:
30+
authenticationMechanisms: SCRAM-SHA-1,GSSAPI

pmm_psmdb-pbm_setup/conf/mongod-rs2/mongod.conf

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,3 +25,6 @@ operationProfiling:
2525

2626
security:
2727
keyFile: /etc/keyfile
28+
authorization: enabled
29+
setParameter:
30+
authenticationMechanisms: SCRAM-SHA-1,GSSAPI

pmm_psmdb-pbm_setup/configure-replset.sh

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ db.getSiblingDB("admin").createUser({
8484
});
8585
EOF
8686
echo
87-
echo "creating pmm user"
87+
echo "creating pmm regular user"
8888
docker compose -f docker-compose-rs.yaml exec -T rs101 mongo "mongodb://root:root@localhost/?replicaSet=rs" --quiet << EOF
8989
db.getSiblingDB("admin").createUser({
9090
user: "${pmm_mongo_user}",
@@ -100,4 +100,19 @@ db.getSiblingDB("admin").createUser({
100100
{ "db" : "admin", "role" : "pbmAnyAction" }
101101
]
102102
});
103+
echo "creating pmm kerberos user"
104+
docker compose -f docker-compose-rs.yaml exec -T rs101 mongo "mongodb://root:root@localhost/?replicaSet=rs" --quiet << EOF
105+
db.getSiblingDB("\$external").createUser({
106+
user: "${pmm_mongo_user}@PERCONATEST.COM",
107+
roles: [
108+
{ role: "explainRole", db: "admin" },
109+
{ role: "clusterMonitor", db: "admin" },
110+
{ role: "read", db: "local" },
111+
{ "db" : "admin", "role" : "readWrite", "collection": "" },
112+
{ "db" : "admin", "role" : "backup" },
113+
{ "db" : "admin", "role" : "clusterMonitor" },
114+
{ "db" : "admin", "role" : "restore" },
115+
{ "db" : "admin", "role" : "pbmAnyAction" }
116+
]
117+
});
103118
EOF

pmm_psmdb-pbm_setup/docker-compose-rs.yaml

Lines changed: 63 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,10 @@ services:
1717

1818
rs101:
1919
depends_on:
20-
- build_member
20+
build_member:
21+
condition: service_started
22+
kerberos:
23+
condition: service_healthy
2124
image: replica_member/local
2225
profiles: ["classic", "extra"]
2326
ports:
@@ -34,6 +37,7 @@ services:
3437
- ./conf/datagen:/etc/datagen:ro
3538
- /sys/fs/cgroup:/sys/fs/cgroup:rw
3639
- /tmp/backup_data:/tmp/backup_data:rw
40+
- keytabs:/keytabs
3741
privileged: true
3842
cgroup: host
3943
environment:
@@ -44,10 +48,14 @@ services:
4448
PMM_AGENT_SERVER_INSECURE_TLS: 1
4549
container_name: rs101
4650
hostname: rs101
51+
entrypoint: bash -c "chown -R mongod:mongod /keytabs && exec /usr/sbin/init"
4752

4853
rs102:
4954
depends_on:
50-
- build_member
55+
build_member:
56+
condition: service_started
57+
kerberos:
58+
condition: service_healthy
5159
image: replica_member/local
5260
profiles: ["classic", "extra"]
5361
networks:
@@ -61,6 +69,7 @@ services:
6169
- ./conf/mongod-rs:/etc/mongod
6270
- /sys/fs/cgroup:/sys/fs/cgroup:rw
6371
- /tmp/backup_data:/tmp/backup_data:rw
72+
- keytabs:/keytabs
6473
privileged: true
6574
cgroup: host
6675
environment:
@@ -71,10 +80,14 @@ services:
7180
PMM_AGENT_SERVER_INSECURE_TLS: 1
7281
container_name: rs102
7382
hostname: rs102
83+
entrypoint: bash -c "chown -R mongod:mongod /keytabs && exec /usr/sbin/init"
7484

7585
rs103:
7686
depends_on:
77-
- build_member
87+
build_member:
88+
condition: service_started
89+
kerberos:
90+
condition: service_healthy
7891
image: replica_member/local
7992
profiles: ["classic", "extra"]
8093
networks:
@@ -88,6 +101,7 @@ services:
88101
- ./conf/mongod-rs:/etc/mongod
89102
- /sys/fs/cgroup:/sys/fs/cgroup:rw
90103
- /tmp/backup_data:/tmp/backup_data:rw
104+
- keytabs:/keytabs
91105
privileged: true
92106
cgroup: host
93107
environment:
@@ -98,10 +112,14 @@ services:
98112
PMM_AGENT_SERVER_INSECURE_TLS: 1
99113
container_name: rs103
100114
hostname: rs103
115+
entrypoint: bash -c "chown -R mongod:mongod /keytabs && exec /usr/sbin/init"
101116

102117
rs201:
103118
depends_on:
104-
- build_member
119+
build_member:
120+
condition: service_started
121+
kerberos:
122+
condition: service_healthy
105123
image: replica_member/local
106124
profiles: ["extra"]
107125
ports:
@@ -117,6 +135,7 @@ services:
117135
- ./conf/mongod-rs:/etc/mongod
118136
- /sys/fs/cgroup:/sys/fs/cgroup:rw
119137
- /tmp/backup_data:/tmp/backup_data:rw
138+
- keytabs:/keytabs
120139
privileged: true
121140
cgroup: host
122141
environment:
@@ -127,10 +146,14 @@ services:
127146
PMM_AGENT_SERVER_INSECURE_TLS: 1
128147
container_name: rs201
129148
hostname: rs201
149+
entrypoint: bash -c "chown -R mongod:mongod /keytabs && exec /usr/sbin/init"
130150

131151
rs202:
132152
depends_on:
133-
- build_member
153+
build_member:
154+
condition: service_started
155+
kerberos:
156+
condition: service_healthy
134157
image: replica_member/local
135158
profiles: ["extra"]
136159
networks:
@@ -144,6 +167,7 @@ services:
144167
- ./conf/mongod-rs:/etc/mongod
145168
- /sys/fs/cgroup:/sys/fs/cgroup:rw
146169
- /tmp/backup_data:/tmp/backup_data:rw
170+
- keytabs:/keytabs
147171
privileged: true
148172
cgroup: host
149173
environment:
@@ -154,10 +178,14 @@ services:
154178
PMM_AGENT_SERVER_INSECURE_TLS: 1
155179
container_name: rs202
156180
hostname: rs202
181+
entrypoint: bash -c "chown -R mongod:mongod /keytabs && exec /usr/sbin/init"
157182

158183
rs203:
159184
depends_on:
160-
- build_member
185+
build_member:
186+
condition: service_started
187+
kerberos:
188+
condition: service_healthy
161189
image: replica_member/local
162190
profiles: ["extra"]
163191
networks:
@@ -171,6 +199,7 @@ services:
171199
- ./conf/mongod-rs:/etc/mongod
172200
- /sys/fs/cgroup:/sys/fs/cgroup:rw
173201
- /tmp/backup_data:/tmp/backup_data:rw
202+
- keytabs:/keytabs
174203
privileged: true
175204
cgroup: host
176205
environment:
@@ -181,6 +210,7 @@ services:
181210
PMM_AGENT_SERVER_INSECURE_TLS: 1
182211
container_name: rs203
183212
hostname: rs203
213+
entrypoint: bash -c "chown -R mongod:mongod /keytabs && exec /usr/sbin/init"
184214

185215
minio:
186216
image: minio/minio
@@ -218,6 +248,29 @@ services:
218248
entrypoint: >
219249
/bin/sh -c " sleep 5; /usr/bin/mc alias set myminio http://minio:9000 minio1234 minio1234; /usr/bin/mc mb myminio/bcp; exit 0; "
220250
251+
kerberos:
252+
image: kerberos/local
253+
build:
254+
dockerfile: ./Dockerfile-kerberos
255+
context: .
256+
container_name: kerberos
257+
hostname: kerberos
258+
networks:
259+
- pmm-qa
260+
- pmm-ui-tests1
261+
- qa-integration
262+
- pmm-ui-tests3
263+
- pmm-ui-tests2
264+
environment:
265+
- "KRB5_TRACE=/dev/stderr"
266+
volumes:
267+
- keytabs:/keytabs
268+
healthcheck:
269+
test: ["CMD", "kadmin.local", "-q", "listprincs"]
270+
interval: 2s
271+
timeout: 1s
272+
retries: 5
273+
221274
networks:
222275
qa-integration:
223276
external: true
@@ -233,3 +286,7 @@ networks:
233286
pmm-qa:
234287
name: pmm-qa
235288
external: true
289+
290+
volumes:
291+
keytabs:
292+
driver: local

0 commit comments

Comments
 (0)