DANH MỤC TÀI LIỆU
Tìm hiểu về tính năng Security và Authentication trong MongoDB
Tìm hi u v tính năng Security và Authentication trong MongoDBể ề
Trong bài vi t sau, chúng tôi s ti p t c gi i thi u v i các b n v tính ế ẽ ế
năng Security và Authentication trong lo t bài vi t v h qu n tr c ế ị ơ
s d li u MongoDB. Th c ch t, tính năng xác nh n tài kho n m c c ả ở ơ
b n đã có s n trong MongoDB, nh ng đã b t t b ch đ m c đ nh, và ư ỏ ở ế
ch đ này thì h th ng yêu c u ít nh t 1 database ho t đ ng trong môi ế ộ
tr ng đ m b o (h n ch k t n i m ng).ườ ế ế
Khái ni m Trusted Environment:
Đây là tùy ch n m c đ nh và đ c khuy n cáo s d ng, t ra khá h u ích ượ ế ử ụ
khi ch y c s d li u trong ơ ở Trusted Environment mà không có ch c năng
b o m t t bên trong database cũng nh xác nh n tài kho n (hay còn g i ậ ừ ư
memcached). T t nhiên, trong quá trình c u hình thì 1 yêu c u t i thi u ầ ố
c n đ m b o là ch nh ng máy nh t đ nh nào đó m i đ c phép truy c p ầ ả ỉ ữ ượ
t i c s d li u qua c ng TCP. ơ ở
Mongo Security:
Phiên b n hi n t i c a Mongo ch h tr c ch b o m t m c c b n. ơ ế ậ ở ơ
Ng i s d ng xác nh n thông tinườ ử ụ UsernamePassword trong 1 database
nh t đ nh nào đó. Khi quá trình này hoàn t t thì 1 tài kho n ng i dùng ấ ị ườ
thông th ng s có đ y đ quy n truy c p đ c và ghi d li u t i c s d ườ ơ ở
li u, bên c nh đó thì chúng ta còn có th t o đ c các tài kho n ch ể ạ ượ
quy n đ c (read only) tùy theo yêu c u.ề ọ
Tuy nhiên, c s d li u admin là 1 tr ng h p đ c bi t, m t vài câu l nh ơ ở ườ
qu n tr ch có th ho t đ ng trên database admin này (và cũng ch đ c ỉ ượ
th c thi d i tài kho n có quy n qu n tr ). Và m t khác, quá trình xác ướ ả ị
nh n trên admin cũng cho phép ng i dùng đ c và ghi t i t t c c s d ườ ơ ở
li u trên server.
M c dù, các tài kho n qu n tr có th truy c p t i t t c database thì chúng ớ ấ
ta ph i đăng nh p vào c s d li u admin. Ví d , n u tài ơ ở ế
kho n someAdminUser có quy n admin thì l nh đăng nh p d i đây s ậ ướ
th t b i:ấ ạ
> use test
> db.auth("someAdminUser", password)
Còn l nh sau s thành công:ệ ẽ
> use admin
> db.auth("someAdminUser", password)
Đ kích ho t tính năng b o m t, hãy ch y c s d li u (quá ơ ở
trình mongod) v i l a ch n --auth (ho c --keyFile đ sharding và t o b n ạ ả
sao). Ng i dùng b t bu c ph i gán tài kho n t i database admin tr c khi ườ ả ớ ướ
kh i đ ng server v i quá trình xác nh n, ho c gán tài kho n ng i dùng ở ộ ườ
đ u tiên t localhost (không th gán ng i dùng đ u tiên t k t n i không ầ ừ ườ ầ ừ ế
liên quan t i database c a mongo).ớ ủ
Các b n có th tham kh o thêm v các khái ni m t ng ng ươ ứ
c a Python, Ruby, Java và PHP.
C u hình Authentication và Security:
Vi c tr c tiên c n làm đây là t o tài kho n administrator đ s d ng ướ ể ử
cho toàn b server. Và tài kho n này đ c l u tr trong 1 c s d li u ượ ư ơ ở
admin đ c bi t. Còn n u không có tài kho n admin thì có th truy c p t i ế ậ ớ
database t giao di n localhost mà không c n ph i xác nh n. Do v y, t ậ ừ
server đang ch y c s d li u (ho c localhost) hãy ch y shell và c u hình ơ ở
tài kho n qu n tr nh sau: ị ư
$ ./mongo
> use admin
> db.addUser("theadmin", "anadminpassword")
Và chúng ta đã có tài kho n ng i dùng đ c t o trong c s d li u ườ ượ ơ ở
admin. L u ý r ng n u ch a ti n hành xác nh n tài kho n thì ph i th c ư ế ư ế
hi n ngay n u mu n th c hi n thêm nhi u thao tác khác. ế ự ệ
> db.auth("theadmin", "anadminpassword")
Ti p theo, kh i t o 1 tài kho n ng i dùng bình th ng đ i v i c s d ế ả ườ ườ ố ơ
li u khác.
> use projectx
> db.addUser("joe", "passwordForJoe")
Và cu i cùng, gán tài kho n ng i dùng ả ườ readonly (ch h tr t phiên b n ợ ừ
1.3.2 tr lên):
> use projectx
> db.addUser("guest", "passwordForGuest", true)
Ki m tra thông tin tài kho n:ể ả
V c b n, toàn b thông tin c a ng i dùng đ c l u tr trong t ng ề ơ ườ ượ ư
collection system.users c a database. Ví d , trên c s d ơ ở
li u projectx thì projectx.system.users chính là thành ph n l u tr thông ầ ư
tin c n tìm. Chúng ta có th xem các tài kho n có s n trong database hi n ả ẵ
t i v i câu l nh query:ạ ớ
> db.system.users.find()
Thay đ i Password:
L nh shell addUser bên c nh ch c năng c b n còn đ c dùng đ thay đ i ơ ả ượ
m t kh u trong tr ng h p n u tài kho n ng i dùng đã có s n, thì m t ườ ợ ế ả ườ
kh u ch c n c p nh t. M t s driver Mongo còn cung c p ch c năng ẩ ỉ ấ ứ
t ng đ ng trong cú phápươ ươ addUser c a database shell.
Xóa tài kho n ng i dùng:ả ườ
Đ th c hi n vi c này, các b n hãy áp d ng l nh: ệ ệ ụ ệ
db.removeUser( username )
ho c:
db.system.users.remove( { user: username } )
Replica Set và Sharding Authentication:
Replica setsharding có th s d ng c ch xác nh n tài kho n trong ể ử ơ ế
phiên b n v1.9.1 ho c m i h n (còn trong phiên b n v1.8 thì ch ớ ơ replica
set và không có sharding). T phía client, quá trình này t ng đ i đ ng ươ ố ồ
nh t đ s d ng c ch xác nh n trên ể ử ơ ế server single: th c hi n k t n i t i ế ố ớ
h th ng mongos, t o tài kho n ng i dùng, và ki m tra, giám sát ng i ệ ố ườ ườ
dùng đó khi t o k t n i. ế ố
Đi m khác bi t duy nh t đây là server s s d ng key file đ xác nh n ấ ở
các thông tin liên l c bên trong. V c b n thì key file ch là 1 file text đ n ề ơ ơ
thu n đã đ c mã hóa b ng thu t toán hash và đ c dùng nh m t kh u ượ ượ ư ậ
bên trong.
Đ thi t l p ế replica set ho c sharding v i c ch xác nh n, các b n c n ơ ế ạ ầ
th c hi n theo quy trình sau:ự ệ
T o 1 key file có th đ c copy t i t ng server khác nhau trong h ể ượ
th ng, và key file này có bao g m nhi u ký t d a trên chu n Base64,
kho ng tr ng và dòng tr ng m i.ả ắ
Thay đ i m c phân quy n c a file này đ ch nh ng tài kho n hi n ề ủ ể ỉ
t i m i có th đ c và s d ng. ể ọ ử ụ
Kh i đ ng t ng server trong h th ng cluster (bao g m t t c các ấ ả
thành viên c a replica set, server c u hình và quy trình mongos) cùng
v i tùy ch n --keyFile /path/to/file
M i k t n i t client t i c s d li u ph i đ c xác nh n tr c khi ế ơ ở ượ ướ
s d ng, t ng t nh v i quá trình xác nh n trênử ụ ươ ư ớ server single.
B o m t c a Sharded: ậ ủ
Khi ng i dùng kích ho t c ch xác nh n trên cácườ ạ ơ ế cluster sharded thì toàn
b k t n i bên trong s đ c b o m t thông qua toàn b mongos ch ộ ế ẽ ượ
không ph i m t ngu n d li u riêng l nào, gi ng nh ữ ệ ư server
single ho c replica set. Đây cũng là 1 ph n không th thi u trong h th ng ế ệ ố
b i vì thông tin, d li u b o m t đ c l u tr trong c s d li u c u hình ữ ệ ượ ư ơ ữ ệ
sharding ch không ph i tr c ti p trên shard. M t đi u quan tr ng n a là ả ự ế
nh ng cluster shard ph i luôn luôn có máy client k t n i qua mongos ch ế ố
không ph i tr c ti p t i b t kỳ ngu n d li u nào nh ự ế ồ ữ ư server
shard ho c server c u hình.
N u các b n không gán t ng tài kho n ng i dùng trên ngu nế ườ shard cũng
nh t ng thành viênư ừ shard riêng r thì nh ng tài kho n đó s hoàn toàn ả ẽ
riêng bi t kh i ng i dùngệ ỏ ườ sharding. 2 ngu n tài kho n này khác ồ ả
v i cluster shardedshard, ng i s d ng nên tuy t đ i c n th n khi ườ ử ụ
phân vi t và áp d ng vào th c t . ự ế
T t ho c b t c ch xác nh n trên cluster có s n: ậ ơ ế
Đ kích ho t c ch này trên cluster đã có s n, các b n hãy t t ho t đ ng ạ ơ ế
c a toàn b thành viên ng i dùng trong h th ng, sau đó kh i đ ng l i ườ ệ ố ở ộ
v i tùy ch n --keyFile. Và hãy ghi nh r ng ph i gán tài kho n ng i dùngớ ằ ườ
tr c khi truy c p đ n l ng d li u t xa. Ng c l i, n u mu n t t b ướ ế ượ ệ ừ ư ế ố ắ ỏ
c ch nh n d ng thì ch c n kh i đ ng l i toàn b h th ng ng i dùng ơ ế ỉ ầ ườ
mà không có thông s --keyFile.
M t vài đ c đi m v Key File: ặ ể
1 key file đi n hình ph i có ch a ít nh t 6 ký t ứ ấ Base64, dung l ng không ượ
quá 1KB (tính c kho ng tr ng). Nh ng ký t kho ng tr ng này khá đ n ả ả ự ả ơ
gi n (ch y u là d t ng thích v i nhi u n n t ng khác nhau) cho nên ế ễ ươ
m t s key đ c bi t d i đây đ c quy chu n và áp d ng trên nhi u h ộ ố ư ượ
th ng database:
$ echo -e "my secret key" > key1
$ echo -e "my secret key\n" > key2
$ echo -e "my secret key" > key3
$ echo -e "my\r\nsecret\r\nkey\r\n" > key4
N u b n ch y l nhế mongod v i tham sớ ố -v thì các key s đ c l u vào ẽ ượ ư
file log.
M c phân quy n c a Key File: ề ủ
Tn *NIX, các nhóm và tài kho n ng i dùng cá nhân ph i có permission 0ả ườ
(t i đa là 700), n u m c permission này không đ c ki m soát đ y đ thì ế ượ ầ ủ
MongoDB s k t thúc đi kèm v i l i hi n th . Và t i th i đi m này, ẽ ế
permission không đ c ki m tra b i mongod trên Windows.ượ ể
Port:
Giá tr c ng TCP m c đ nh dành choị ổ MongoDB nh sau:ư
Standalone mongod : 27017
mongos : 27017
shard server (mongod --shardsvr) : 27018
config server (mongod --configsvr) : 27019
Trang stat dành cho mongod: gán 1000 vào giá tr c ng (m c đ nh ị ổ
28017). H u h t các trang trong ph n giao di n HTTP đ u không ầ ế
hi n th chu n xác cho t i khi tùy ch n --rest đ c xác đ nh rõ ràng. ượ ị
Đ t t b trang home thì chúng ta s d ng tùy ch n
nohttpinterface.
Bên c nh đó, các b n có th thay đ i c ng b ng giá tr port ngay khi kh i ổ ổ
đ ng mongod. L u ý r ng chúng ta không nên d a vào nh ng c ng ư non
standard nh 1 ph ng pháp b o m tư ươ server Mongo. Nh ng công c ữ ụ
chuyên rà soát l h ng s l i d ng đi u này đ tìm ki m đi m y u trên h ẽ ợ ế ế
th ng c a ng i dùng.ố ủ ườ
IP Address Binding:
ch đ m c đ nh, ế ộ server mongod s “l ng nghe” t t c các đ a ch IP ẽ ắ ấ ả
trên toàn b h th ng máy tính. Tuy nhiên, ng i dùng có th h n ch ộ ệ ườ ể ạ ế
thông tin tài liệu
Trong bài viết sau, chúng tôi sẽ tiếp tục giới thiệu với các bạn về tính năng Security và Authentication trong loạt bài viết về hệ quản trị cơ sở dữ liệu MongoDB. Thực chất, tính năng xác nhận tài khoản ở mức cơ bản đã có sẵn trong MongoDB, nhưng đã bị tắt bỏ ở chế độ mặc định, và ở chế độ này thì hệ thống yêu cầu ít nhất 1 database hoạt động trong môi trường đảm bảo (hạn chế kết nối mạng).
Mở rộng để xem thêm
từ khóa liên quan
xem nhiều trong tuần
yêu cầu tài liệu
Giúp bạn tìm tài liệu chưa có

LÝ THUYẾT TOÁN


×