Bỏ qua để đến nội dung

Khôi phục quyền truy cập từ dòng lệnh

Hướng dẫn thao tác
Dành cho:
Người vận hành máy chủ

Khi không ai sửa được một tài khoản trong ứng dụng, hãy đặt lại mật khẩu admin, xác thực hai lớp và gỡ khóa đăng nhập từ máy chủ bằng các lệnh reputecast user. Các lệnh này làm việc trực tiếp với cơ sở dữ liệu, nên dùng được cả trước khi kết nối bất kỳ nhà cung cấp gửi thư nào và khi mọi quản trị viên đều bị khóa ở ngoài.

  • Quyền truy cập shell vào máy chủ chạy ReputeCast.
  • Các lệnh cần cùng cấu hình với máy chủ, ít nhất là URL cơ sở dữ liệu:
    • Docker Compose: chạy lệnh bên trong container ứng dụng đang chạy, vốn đã có sẵn môi trường: docker compose exec app /usr/local/bin/reputecast user …
    • Tệp nhị phân: trước tiên hãy nạp môi trường mà dịch vụ dùng, ví dụ set -a; . /etc/reputecast/env; set +a, rồi chạy reputecast user ….
  • Email tài khoản của người cần khôi phục. Lệnh nào cũng nhận --email.

Mỗi lệnh ghi một mục nhật ký kiểm tra với người thực hiện CLI (server). Các lệnh thoát với mã 0 khi thành công, 2 khi dùng sai cú pháp (thiếu --reason, mật khẩu quá ngắn) và 1 với các lỗi khác, chẳng hạn Error: no account for <email>.

Tình huống Lệnh
Quên mật khẩu reputecast user reset-password --email <address>
Quên mật khẩu và không có cách nào gửi liên kết reputecast user reset-password --email <address> --password …
Mất ứng dụng xác thực reputecast user reset-2fa --email <address> --reason "…"
Bị khóa sau các lần đăng nhập thất bại Xem gỡ khóa đăng nhập
Không còn quản trị viên hệ thống nào reputecast user make-admin --email <address>
  1. In ra một liên kết đặt lại dùng một lần:

    Terminal window
    docker compose exec app /usr/local/bin/reputecast user reset-password --email [email protected]
    Kết quả
    One-time password reset link for [email protected] (works once, until 12:39 UTC):
    https://reputecast.acme.io/reset-password/<token>
    Send it to them privately. Their current password keeps working until they use it.

    Liên kết dùng URL công khai đã lưu trong Quản trị hệ thống, rồi Hệ thống và cập nhật, hoặc http.public_url khi chưa lưu URL nào. Tài khoản đã bị vô hiệu hóa sẽ bị từ chối: <email> is deactivated; reactivate the account first.

  2. Gửi liên kết cho người đó qua một kênh riêng tư. Liên kết chỉ dùng được một lần, trong 15 phút.

  3. Họ mở liên kết và chọn mật khẩu mới. Chính sách mật khẩu của hệ thống được áp dụng (độ dài, dùng lại, kiểm tra mật khẩu bị lộ). Việc đặt mật khẩu sẽ đăng xuất mọi phiên và gỡ khóa đăng nhập; lần đăng nhập tiếp theo vẫn hỏi yếu tố xác thực thứ hai của họ.

Khi chưa có nhà cung cấp gửi thư nào gửi được trên luồng Hệ thống, liên kết Quên mật khẩu? trên trang đăng nhập sẽ hiển thị chính lệnh này thay vì gửi email.

Với --password, lệnh đặt mật khẩu ngay thay vì in ra liên kết:

Terminal window
docker compose exec app /usr/local/bin/reputecast user reset-password --email [email protected] --password 'a long passphrase here'

Lệnh trả lời Password set for [email protected]. Every session was signed out. và hủy các liên kết đặt lại đang mở. Mật khẩu phải đáp ứng auth.password_min_length trong cấu hình (mặc định 12 ký tự), chứ không phải chính sách trong Quản trị hệ thống; mật khẩu ngắn hơn sẽ dừng với Error: Use at least 12 characters. Passphrases are fine.

  1. Xác nhận yêu cầu đến từ chính người đó, ví dụ qua một cuộc gọi, chứ không phải từ một email đề nghị làm việc này.

  2. Gỡ ứng dụng xác thực của họ kèm một lý do; lý do này được ghi vào nhật ký kiểm tra:

    Terminal window
    docker compose exec app /usr/local/bin/reputecast user reset-2fa --email [email protected] --reason "lost phone, verified by video call"

    Lệnh trả lời Two-factor reset for [email protected]. They have 72 hours to set it up again. Nếu thiếu --reason, lệnh dừng với Error: --reason is required; it's written to the audit log.

  3. Người đó đăng nhập bằng mật khẩu. Lệnh đã gỡ ứng dụng xác thực và mã khôi phục của họ, đồng thời đăng xuất các phiên; khóa truy cập vẫn giữ nguyên. Họ được yêu cầu thêm lại khóa truy cập hoặc ứng dụng xác thực, và phải làm việc đó trong vòng 72 giờ.

Người vẫn còn mã khôi phục thì không cần bước này: họ chọn tùy chọn mã khôi phục ở bước đăng nhập thứ hai. Trong ứng dụng, quản trị viên hệ thống có thể đặt lại tương tự bằng Quản trị hệ thống, rồi Người dùng, rồi ⋯ › Đặt lại xác thực hai lớp. Cách đó yêu cầu mật khẩu của quản trị viên, gửi thông báo cho người đó và dùng thời gian gia hạn của chính sách thay vì 72 giờ.

Sau quá nhiều lần nhập sai mật khẩu (mặc định 10 lần), đăng nhập cho email đó trả lời Đăng nhập đã bị khóa sau quá nhiều lần thử. Hãy thử lại sau <time>, đặt lại mật khẩu hoặc dùng khóa truy cập.

  • Trong ứng dụng: Quản trị hệ thống, rồi Người dùng, rồi ⋯ › Mở khóa đăng nhập gỡ khóa ngay lập tức.
  • Bằng liên kết đặt lại: đặt mật khẩu mới qua một liên kết từ reputecast user reset-password sẽ gỡ khóa.
  • Chờ hết thời gian khóa: khóa tự hết sau thời gian khóa (mặc định 15 phút).

reputecast user unlock --email <address> trả lời <email> can sign in again. và xóa bộ đếm số lần thất bại của tài khoản. Ở phiên bản này, lệnh không gỡ khóa mà bước đăng nhập bằng mật khẩu kiểm tra trước tiên, nên đăng nhập bằng mật khẩu vẫn bị khóa cho đến khi hết thời gian khóa. Hãy dùng một trong ba cách ở trên.

Cấp quyền quản trị viên hệ thống cho một người

Phần tiêu đề “Cấp quyền quản trị viên hệ thống cho một người”
Terminal window
docker compose exec app /usr/local/bin/reputecast user make-admin --email [email protected]

Lệnh trả lời [email protected] is now an instance admin. Lệnh này chỉ cấp cờ. Để thu hồi, hãy dùng Quản trị hệ thống, rồi Người dùng, rồi ⋯ › Gỡ quyền quản trị hệ thống.

  • Người đó đăng nhập được, hoặc mở được liên kết đặt lại trước khi liên kết hết hạn.
  • Quản trị hệ thống, rồi Nhật ký kiểm tra liệt kê lệnh với người thực hiện CLI (server).
  • Error: no account for <email>: email không khớp với tài khoản nào. Các lệnh so khớp địa chỉ không phân biệt chữ hoa chữ thường; hãy kiểm tra lỗi gõ hoặc địa chỉ cũ.
  • Liên kết đặt lại trỏ đến http://localhost:8080: chưa lưu URL công khai nào, và http.public_url đang ở giá trị mặc định. Hãy đặt URL công khai, hoặc thay host trong liên kết bằng địa chỉ mọi người vẫn dùng.
  • Lệnh không kết nối được cơ sở dữ liệu khi dùng tệp nhị phân: lệnh không có URL cơ sở dữ liệu của máy chủ nên quay về giá trị mặc định localhost:5432. Hãy nạp môi trường của dịch vụ trước.
  • Vẫn bị khóa sau reputecast user unlock: đây là hành vi đã biết ở phiên bản này. Hãy dùng Mở khóa đăng nhập trong ứng dụng, một liên kết đặt lại, hoặc chờ khóa hết hạn.
Thiết lậpMặc địnhCách thay đổi
Thời hạn phiên14 daysQuản trị hệ thống › Xác thực; 1 ngày, 7 ngày, 14 ngày hoặc 30 ngày (API 1–2,160 giờ); áp dụng cho phiên mới
Thời gian chờ khi không hoạt động12 hoursQuản trị hệ thống › Xác thực; 1, 4, 12 hoặc 24 giờ (API 5–4,320 phút), không bao giờ dài hơn thời hạn phiên
Khóa đăng nhập sau các lần thất bại10 failed attempts for one email lock it for 15 minutesQuản trị hệ thống › Xác thực; 3–100 lần thử, 5 phút, 15 phút hoặc 1 giờ (API 1–1,440 phút)
Bắt buộc xác thực hai lớp vớiMembers with a sensitive permissionQuản trị hệ thống › Xác thực; mọi người, thành viên có quyền nhạy cảm, hoặc tắt
Thời gian gia hạn để thiết lập xác thực hai lớp7 daysQuản trị hệ thống › Xác thực; không có, 1, 3, 7 hoặc 14 ngày (API 0–90)
Độ dài mật khẩu tối thiểu12 charactersQuản trị hệ thống › Xác thực, 8–128; mật khẩu có thể dài đến 256 ký tự
Dùng lại mật khẩuThe last 5 passwords are blockedQuản trị hệ thống › Xác thực; chặn 5 mật khẩu gần nhất, chặn 10 mật khẩu gần nhất, hoặc cho phép dùng lại
Kiểm tra mật khẩu mới với các vụ lộ lọt dữ liệu đã biếtOffQuản trị hệ thống › Xác thực
Tên miền email được phép cho tài khoản SSO mớiUp to 50 (none means any domain the identity provider allows)Quản trị hệ thống › Xác thực
Liên kết đặt lại mật khẩuWorks once, for 15 minutesCố định
Thời gian để thiết lập lại xác thực hai lớp sau reputecast user reset-2fa72 hoursCố định; đặt lại trong Quản trị hệ thống › Người dùng dùng thời gian gia hạn của chính sách
Mã khôi phục10, each works onceTài khoản và bảo mật › Tạo lại mã (thay toàn bộ)
Liên kết xác minh khi đổi email24 hoursCố định
Thời gian để hoàn tất bước đăng nhập thứ hai10 minutes; 5 wrong codes restart the sign-inCố định