Chuyển tới nội dung chính

Cấu hình Public Endpoint

Database chỉ truy cập được từ bên trong VPC cho tới khi bạn bật Public Endpoint, thứ cấp cho nó một chuỗi kết nối thứ hai dùng được từ Internet. Sau đó có hai lớp kiểm soát quyết định ai dùng được: Security Group trên mạng của database, và IP Allowlist trên chính tab này.

cảnh báo

Public endpoint có thể truy cập từ bất cứ đâu trên Internet, không chỉ trong lúc bạn đang dùng. Việc bật cũng khiến dịch vụ khởi động lại, nên hãy chọn thời điểm ngoài giờ cao điểm và đảm bảo ứng dụng tự kết nối lại được.

Điều kiện cần​

  • Một cluster ở trạng thái Running. Xem Tạo database đầu tiên.
  • Địa chỉ IPv4 công khai của từng client cần truy cập. Ô nhập chỉ nhận địa chỉ đơn lẻ, không nhận dải CIDR.
  • Một khung giờ chấp nhận được việc khởi động lại, vì thao tác bật sẽ ngắt các kết nối đang có.
  • Một Security Group cho phép port MongoDB từ đúng những địa chỉ đó. Xem Kết nối bằng Floating IP.

Truy cập được kiểm soát ra sao​

Có hai lớp đứng trước public endpoint, và chúng làm hai việc khác nhau:

  • Security Group — luật mạng trên database. Client không thể chạm tới public endpoint nếu Security Group không cho phép địa chỉ của nó đi vào port MongoDB.
  • IP Allowlist — danh sách trên tab này. Nó thu hẹp những gì Security Group đã cho đi qua.
cảnh báo

Nếu Security Group mở cho mọi địa chỉ thì IP Allowlist không còn chặn được gì nữa, và database phơi thẳng ra Internet. Hãy đặt Security Group đúng bằng tập địa chỉ bạn khai trong allowlist, và sửa cả hai cùng lúc mỗi khi thay đổi.

Bật public endpoint​

Mở database rồi chọn tab Public Endpoint. Tab này có trên cả ba kiến trúc. Khi chưa bật, tab chỉ có trạng thái và nút Enable.

Tab Public Endpoint khi chưa bật, trạng thái Inactive

  1. Nhấn Enable.

  2. Đọc cả hai cảnh báo. Endpoint sẽ ra Internet, và thao tác này khiến dịch vụ khởi động lại, nên kết nối bị ngắt trong lúc chạy.

  3. Nhập access rule đầu tiên. IPv4 address là bắt buộc; Description không bắt buộc nhưng nên điền, vì nhiều tháng sau khi rà lại danh sách thì đó là manh mối duy nhất cho biết rule tồn tại để làm gì.

    Hộp thoại Enable Public Endpoint với hai cảnh báo và access rule đầu tiên

  4. Nhấn Add access rule để khai thêm địa chỉ ngay trong bước này, rồi nhấn Enable.

Trạng thái chuyển sang Processing kèm thanh tiến trình, và bản thân database hiện Updating trong lúc khởi động lại. Mất vài phút. Xong thì trạng thái là Active, và tab hiện chuỗi kết nối công khai cùng allowlist canh giữ nó.

Tab Public Endpoint sau khi bật, có chuỗi kết nối và hai access rule

Không thể bật endpoint mà không có rule nào — nút Enable vẫn khoá cho tới khi ô địa chỉ chứa một IPv4 hợp lệ.

Kết nối qua public endpoint​

  1. Sao chép Public connection string trên tab.
  2. Lấy username và password ở tab Overview của database. Xem Xem thông tin database cluster.
  3. Kết nối bằng mongosh, Compass hoặc driver, đặt chuỗi công khai vào đúng chỗ bạn vẫn dùng chuỗi private.
mongosh "mongodb://<USERNAME>:<PASSWORD>@<HOST>:27017/admin?replicaSet=<CLUSTER_ID>"

Chuỗi đã chứa sẵn host, port và tên database, nên thứ duy nhất bạn thêm vào là thông tin đăng nhập. Nó liệt kê gì là tuỳ cách database được dựng:

Kiến trúcChuỗi công khai liệt kê
StandaloneNode duy nhất, vẫn kèm tham số replicaSet
ReplicaSetToàn bộ node chứa dữ liệu, kèm tham số replicaSet
Sharded ClusterChỉ các mongos router, không có tham số replicaSet
mẹo

Kết nối treo rồi timeout, thay vì báo sai thông tin đăng nhập, là bị chặn ở tầng mạng chứ không phải lỗi xác thực. Kiểm tra Security Group trước, rồi đối chiếu IPv4 công khai hiện tại của client với allowlist — địa chỉ văn phòng hay nhà riêng có thể đổi mà không báo trước.

Thêm access rule​

  1. Nhấn Add access rule phía trên bảng allowlist.
  2. Điền IPv4 address, và Description nếu thấy cần.
  3. Dùng nút Add access rule bên trong hộp thoại để khai nhiều địa chỉ cùng lúc, rồi nhấn Add.

Ô này chỉ nhận một địa chỉ IPv4. Dải CIDR bị từ chối với thông báo IPv4 address fails to match the pattern.

Địa chỉ chồng lấn bị bắt ngay khi gõ, trước cả khi bạn kịp submit:

Hộp thoại Add Access Rule từ chối địa chỉ đã tồn tại

Thêm rule không có tác dụng tức thì. Thao tác chạy nền và dòng mới chỉ xuất hiện trong allowlist khi hoàn tất, mất vài phút. Theo dõi ở mục Action logs cuối tab.

Xoá access rule​

  1. Nhấn Delete rule phía trên bảng allowlist.
  2. Tích chọn các rule cần xoá. Hộp thoại cảnh báo rằng client đang phụ thuộc vào chúng sẽ mất quyền truy cập.
  3. Nhấn Delete.

Endpoint đang bật buộc phải còn ít nhất một rule, và console chặn ở hai chỗ. Khi chỉ còn một rule, chính nút Delete rule bị khoá. Khi còn nhiều rule, hộp thoại mở ra nhưng nút Delete trong đó vẫn khoá nếu bạn chọn hết — bỏ tích một cái là mở lại.

Xoá địa chỉ cuối cùng sẽ để lại một endpoint đã công khai nhưng không ai vào được, nên mới có ràng buộc này. Muốn chặn hẳn thì tắt endpoint đi.

Tắt public endpoint​

  1. Nhấn Disable ở góc trên bên phải của tab.

  2. Gõ disable vào ô xác nhận.

    Hộp thoại Disable Public Endpoint yêu cầu gõ disable để xác nhận

  3. Nhấn Disable.

Client đang dùng public endpoint mất kết nối ngay lập tức. Kết nối qua private VPC endpoint không bị ảnh hưởng, nên ứng dụng bên trong VPC vẫn chạy bình thường. Trạng thái quay về Inactive, chuỗi kết nối công khai biến mất, và allowlist cũng mất theo, nên bật lại sau này nghĩa là khai lại địa chỉ từ đầu.

Thu hẹp bề mặt phơi nhiễm​

IP Allowlist không xác thực ai cả, và nó không lấy lại được những gì Security Group đã mở. Hãy coi Security Group mới là hàng rào thật, và giữ thông tin đăng nhập database mạnh như với bất kỳ dịch vụ nào mở ra Internet.

  • Giữ Security Group và IP Allowlist trên cùng một tập địa chỉ. Một địa chỉ bị gỡ khỏi danh sách này nhưng còn sót ở danh sách kia chính là khe hở sẽ bị tìm ra.
  • Đặt Description cho mọi rule, ghi rõ nó thuộc về client nào. Một danh sách toàn địa chỉ trần không nói lên điều gì với người rà soát.
  • Xoá rule ngay khi client phía sau nó không còn cần truy cập. Một dòng bỏ quên là một cánh cửa không ai canh.
  • Tắt endpoint khi công việc cần tới nó đã xong, thay vì để bật giữa các lần dùng.
  • Giữ lưu lượng production trên private VPC endpoint. Public endpoint hợp với tích hợp bên ngoài, truy cập quản trị tạm thời, và môi trường phát triển hay kiểm thử.

Bước tiếp theo​