Hạ tầng của bạn. Dữ liệu của bạn. Khóa của bạn.
Cronable được xây dựng để chạy như một phần đáng tin cậy trong chính stack của bạn. Đây là chính xác cách nó giữ tự động hóa, secret và lịch sử của bạn trong tầm kiểm soát của bạn.
Tại chỗ theo thiết kế
Cronable cài trên máy của riêng bạn — một ứng dụng máy tính để bàn Mac hoặc Windows, hoặc một máy chủ chạy dưới systemd/launchd. Không có tầng SaaS và không phụ thuộc đám mây. Các cuộc gọi ra ngoài thường lệ của nó là một lần kiểm tra giấy phép định kỳ — xác nhận gói đăng ký của bạn và báo cáo số lượng tác vụ và người dùng đơn giản — và một lần kiểm tra các bản phát hành mới đã ký; ngoài ra, chỉ khi bạn bật chúng, một kết nối ra ngoài tới relay được lưu trữ của Cronable cho webhook đến hoặc điều khiển từ xa. Khối lượng công việc của bạn — định nghĩa tác vụ, secret, lần chạy và kết quả đầu ra — ở lại trên máy và không bao giờ được gửi cho chúng tôi. Ngoại lệ duy nhất là một phiên điều khiển từ xa đang hoạt động: lưu lượng bảng điều khiển của nó được chuyển tiếp qua hạ tầng biên của chúng tôi (cùng mức tin cậy như bất kỳ proxy được lưu trữ nào), với mã hóa đầu cuối tới chính máy của bạn là một tùy chọn Enterprise đang được lên kế hoạch.
Secret & thông tin đăng nhập được mã hóa khi lưu trữ
Các giá trị secret được mã hóa bằng AES-256-GCM với một khóa dẫn xuất từ khóa mã hóa của riêng bạn (scrypt với một salt ngẫu nhiên riêng cho mỗi bản cài). Các thông tin đăng nhập có kiểu — khóa API, bearer token, xác thực cơ bản, header tùy chỉnh và chuỗi kết nối Postgres — nằm trong cùng kho mã hóa đó và được tham chiếu bằng tên, không bao giờ dán vào file tác vụ. Không có gì được ghi vào git, và không có gì rời khỏi máy của bạn. Bạn tự sao lưu khóa riêng — mất nó thì secret không thể khôi phục, theo thiết kế.
Được che trong mọi log và luồng
Các giá trị secret và thông tin đăng nhập đã được giải mã sẽ bị che thành “***” trên các file log, kết quả tác vụ và luồng log trực tiếp — kể cả khi một giá trị bị chia nhỏ qua các đoạn streaming. Những gì chạy trên máy của bạn ở lại trên máy của bạn.
Có xác thực và đặc quyền tối thiểu
Bảng điều khiển web yêu cầu đăng nhập theo từng người dùng với băm mật khẩu argon2id và khóa chống dò mật khẩu. Engine gắn với localhost theo mặc định và được thiết kế để chạy dưới một người dùng đặc quyền thấp chuyên biệt. Các bên gọi máy-đến-máy dùng một bearer token riêng tư; trình duyệt dùng một cookie phiên tồn tại ngắn — và đăng xuất, hoặc một phiên hết hạn, sẽ đóng cả những luồng log trực tiếp đang mở trong vòng vài giây. Mật khẩu cũng phải vượt qua kiểm tra độ mạnh — độ dài tối thiểu cùng với phép thử khả năng đoán được — để những mật khẩu yếu hoặc dễ đoán bị từ chối. Xác thực hai yếu tố (TOTP) tùy chọn bổ sung một mã dùng một lần từ ứng dụng xác thực như Google Authenticator, kèm theo mã khôi phục phòng khi mất thiết bị; nó bắt buộc để dùng truy cập từ xa, nên một máy chỉ có thể được mở tới bảng điều khiển lưu trữ bởi người đã bật tính năng này.
Truy cập nhóm theo vai trò
Bảng điều khiển web hỗ trợ nhiều người dùng, với bốn vai trò xếp theo thứ tự — người xem (chỉ đọc), người chỉnh sửa (tạo tác vụ, secret và lần chạy), quản trị viên (quản lý người dùng, vai trò và cài đặt), và chủ sở hữu, tài khoản đầu tiên của bản cài. Quản trị viên thêm và xóa người dùng, đặt vai trò cho từng người, đặt lại mật khẩu hoặc thiết bị hai yếu tố, và thu hồi quyền truy cập tại Settings → Users — nên một đồng đội rời đi mất quyền truy cập ngay lập tức và không ai dùng chung một đăng nhập. Các bản cài siết chặt có thể chọn bật thêm: phân tầng thực thi giới hạn ai được tạo các tác vụ chạy lệnh, và phê duyệt thay đổi bổ sung cơ chế soát xét kép, nên một quản trị viên thứ hai phải phê duyệt một thay đổi tác vụ hoặc secret đang chờ trước khi nó có hiệu lực.
Đăng nhập một lần qua OIDC
Mang theo nhà cung cấp danh tính của bạn — Okta, Entra ID, Google, Keycloak — qua luồng authorization-code OIDC với PKCE và xác minh ID-token đầy đủ. Các lần đăng nhập SSO phải ánh xạ tới một tài khoản cục bộ đã có: không có gì được cấp tự động, và lỗi của nhà cung cấp hiện ra dưới dạng các thông báo cố định, thân thiện thay vì các chuyển hướng thô.
Một dấu vết kiểm toán bạn thực sự đọc được
Các lần đăng nhập và nỗ lực thất bại, thay đổi secret và thông tin đăng nhập, chỉnh sửa tác vụ, cập nhật cài đặt và đồng bộ git đều được ghi vào một dấu vết kiểm toán chỉ ghi thêm — chỉ tên và metadata, không bao giờ giá trị — có thể xem và lọc ngay trong bảng điều khiển tại Settings → Audit.
Webhook đến được tăng cường bảo mật
Các webhook đến chạm tới daemon của bạn qua relay có kiểm soát giấy phép của chúng tôi trên một kết nối mà máy chủ của bạn mở ra hướng ngoài, nên bạn không bao giờ phải phơi bày một cổng — trừ khi bạn chủ động chọn làm vậy. Mỗi hook được gắn với giấy phép của bạn — không khách hàng nào khác có thể chiếm nó hay nhận sự kiện của nó, dù biết URL của nó — và được bảo vệ bằng một token riêng cho mỗi hook, chỉ lưu dưới dạng băm SHA-256 và được kiểm tra theo thời gian hằng định. URL cần ít nhất 32 ký tự không đoán được cộng với token đó; sai, thiếu, đã tắt hay không xác định đều trả về cùng một lỗi 401 chung, và các lượt dò lặp lại từ một IP bị cấm tạm thời — nên chẳng có gì để liệt kê và chẳng có gì để dò tìm bằng vét cạn. Token chỉ được hiển thị một lần khi tạo và có thể xoay vòng chỉ bằng một cú nhấp. Nếu bạn muốn dữ liệu đến hoàn toàn không đi qua máy chủ của chúng tôi, bạn có thể bỏ qua relay và tự phục vụ điểm cuối HTTPS của mình — đó là trường hợp duy nhất bạn thực sự mở một cổng, và webhook khi đó đến thẳng máy của bạn.
Lịch sử được kiểm toán bằng git, có thể đảo ngược
Mỗi định nghĩa tác vụ là một file trong một git repository bạn sở hữu. Mỗi thay đổi là một commit — hoàn toàn có thể so sánh, quy trách nhiệm và đảo ngược. Lịch sử tác vụ của bạn có thể kiểm toán bằng chính những công cụ mà đội của bạn đã dùng. Khi bạn liên kết một kho lưu trữ để đồng bộ hai chiều, Cronable chỉ chấp nhận kho riêng tư — nó từ chối kho công khai và dừng đồng bộ nếu một kho đã liên kết sau đó được đặt thành công khai — để các định nghĩa công việc của bạn không bao giờ có thể bị đọc công khai.
Trung thực về ranh giới tin cậy
Nhiệm vụ của Cronable là chạy lệnh, AI agent và HTTP thay mặt bạn, nên hãy coi nó như một shell trên máy. Các biểu thức chạy trong một sandbox phòng-lỗi-ngớ-ngẩn, không phải một ranh giới được tăng cường bảo mật — đừng bao giờ đưa cho nó dữ liệu không đáng tin. Chúng tôi giúp bạn triển khai nó với đặc quyền tối thiểu và cách ly mạng hợp lý.
Chạy nó sau tường lửa của bạn.
Có yêu cầu bảo mật cần đáp ứng? Cho chúng tôi biết môi trường của bạn và chúng tôi sẽ cùng đi qua việc triển khai, tăng cường bảo mật và kiểm soát truy cập.
Cronable, và nó không bao giờ rời khỏi máy của bạn.