Quản lý Bí mật
OpenClaw hỗ trợ SecretRefs bổ sung để thông tin đăng nhập không cần lưu dưới dạng văn bản thuần trong cấu hình. Văn bản thuần vẫn hoạt động. SecretRefs là tùy chọn cho từng thông tin đăng nhập.Mục tiêu và mô hình runtime
Bí mật được giải quyết thành một snapshot runtime trong bộ nhớ.- Giải quyết diễn ra nhanh chóng trong quá trình kích hoạt, không trì hoãn khi có yêu cầu.
- Khởi động sẽ thất bại nhanh chóng nếu một SecretRef đang hoạt động không thể được giải quyết.
- Tải lại sử dụng hoán đổi nguyên tử: thành công hoàn toàn, hoặc giữ lại snapshot tốt nhất đã biết.
- Yêu cầu runtime chỉ đọc từ snapshot trong bộ nhớ đang hoạt động.
- Các đường dẫn gửi đi cũng đọc từ snapshot đang hoạt động đó (ví dụ như gửi trả lời/chủ đề Discord và gửi hành động Telegram); chúng không giải quyết lại SecretRefs mỗi lần gửi.
Lọc bề mặt hoạt động
SecretRefs chỉ được xác thực trên các bề mặt thực sự hoạt động.- Bề mặt đã bật: các tham chiếu chưa giải quyết sẽ chặn khởi động/tải lại.
- Bề mặt không hoạt động: các tham chiếu chưa giải quyết không chặn khởi động/tải lại.
- Các tham chiếu không hoạt động phát ra chẩn đoán không gây tử vong với mã
SECRETS_REF_IGNORED_INACTIVE_SURFACE.
- Các mục kênh/tài khoản bị vô hiệu hóa.
- Thông tin đăng nhập kênh cấp cao nhất mà không có tài khoản nào được bật kế thừa.
- Bề mặt công cụ/tính năng bị vô hiệu hóa.
- Các khóa cụ thể của nhà cung cấp tìm kiếm web không được chọn bởi
tools.web.search.provider. Ở chế độ tự động (nhà cung cấp chưa được đặt), các khóa được tham khảo theo thứ tự ưu tiên để tự động phát hiện nhà cung cấp cho đến khi một khóa được giải quyết. Sau khi chọn, các khóa nhà cung cấp không được chọn được coi là không hoạt động cho đến khi được chọn. - Tài liệu xác thực SSH sandbox (
agents.defaults.sandbox.ssh.identityData,certificateData,knownHostsData, cùng với các ghi đè theo từng agent) chỉ hoạt động khi backend sandbox hiệu quả làsshcho agent mặc định hoặc một agent đã bật. - SecretRefs
gateway.remote.token/gateway.remote.passwordhoạt động nếu một trong những điều này đúng:gateway.mode=remotegateway.remote.urlđược cấu hìnhgateway.tailscale.modelàservehoặcfunnel- Ở chế độ cục bộ mà không có các bề mặt từ xa đó:
gateway.remote.tokenhoạt động khi xác thực token có thể thắng và không có token môi trường/xác thực nào được cấu hình.gateway.remote.passwordchỉ hoạt động khi xác thực mật khẩu có thể thắng và không có mật khẩu môi trường/xác thực nào được cấu hình.
- SecretRef
gateway.auth.tokenkhông hoạt động cho việc giải quyết xác thực khởi động khiOPENCLAW_GATEWAY_TOKEN(hoặcCLAWDBOT_GATEWAY_TOKEN) được đặt, vì đầu vào token môi trường thắng cho runtime đó.
Chẩn đoán bề mặt xác thực Gateway
Khi một SecretRef được cấu hình trêngateway.auth.token, gateway.auth.password,
gateway.remote.token, hoặc gateway.remote.password, nhật ký khởi động/tải lại gateway ghi rõ trạng thái bề mặt:
active: SecretRef là một phần của bề mặt xác thực hiệu quả và phải được giải quyết.inactive: SecretRef bị bỏ qua cho runtime này vì một bề mặt xác thực khác thắng, hoặc vì xác thực từ xa bị vô hiệu hóa/không hoạt động.
SECRETS_GATEWAY_AUTH_SURFACE và bao gồm lý do được sử dụng bởi chính sách bề mặt hoạt động, để bạn có thể thấy tại sao một thông tin đăng nhập được coi là hoạt động hoặc không hoạt động.
Kiểm tra trước tham chiếu khi onboard
Khi onboard chạy ở chế độ tương tác và bạn chọn lưu trữ SecretRef, OpenClaw thực hiện xác thực trước khi lưu:- Tham chiếu môi trường: xác thực tên biến môi trường và xác nhận giá trị không rỗng có thể nhìn thấy trong quá trình thiết lập.
- Tham chiếu nhà cung cấp (
filehoặcexec): xác thực lựa chọn nhà cung cấp, giải quyếtid, và kiểm tra loại giá trị đã giải quyết. - Đường dẫn tái sử dụng Quickstart: khi
gateway.auth.tokenđã là một SecretRef, onboarding giải quyết nó trước khi khởi động probe/dashboard (cho các tham chiếuenv,file, vàexec) sử dụng cổng nhanh chóng tương tự.
Hợp đồng SecretRef
Sử dụng một định dạng đối tượng duy nhất ở mọi nơi:source: "env"
providerphải khớp với^[a-z][a-z0-9_-]{0,63}$idphải khớp với^[A-Z][A-Z0-9_]{0,127}$
source: "file"
providerphải khớp với^[a-z][a-z0-9_-]{0,63}$idphải là một con trỏ JSON tuyệt đối (/...)- Escaping RFC6901 trong các đoạn:
~=>~0,/=>~1
source: "exec"
providerphải khớp với^[a-z][a-z0-9_-]{0,63}$idphải khớp với^[A-Za-z0-9][A-Za-z0-9._:/-]{0,255}$idkhông được chứa.hoặc..như các đoạn đường dẫn phân tách bằng dấu gạch chéo (ví dụa/../bbị từ chối)
Cấu hình nhà cung cấp
Định nghĩa các nhà cung cấp dướisecrets.providers:
Nhà cung cấp Env
- Danh sách cho phép tùy chọn qua
allowlist. - Giá trị môi trường thiếu/rỗng sẽ làm thất bại giải quyết.
Nhà cung cấp File
- Đọc tệp cục bộ từ
path. mode: "json"mong đợi payload đối tượng JSON và giải quyếtidnhư một con trỏ.mode: "singleValue"mong đợi id tham chiếu"value"và trả về nội dung tệp.- Đường dẫn phải vượt qua kiểm tra quyền sở hữu/quyền truy cập.
- Ghi chú thất bại trên Windows: nếu xác minh ACL không khả dụng cho một đường dẫn, giải quyết sẽ thất bại. Đối với các đường dẫn đáng tin cậy, đặt
allowInsecurePath: truetrên nhà cung cấp đó để bỏ qua kiểm tra bảo mật đường dẫn.
Nhà cung cấp Exec
- Chạy đường dẫn nhị phân tuyệt đối đã cấu hình, không có shell.
- Theo mặc định,
commandphải trỏ đến một tệp thông thường (không phải một liên kết tượng trưng). - Đặt
allowSymlinkCommand: trueđể cho phép các đường dẫn lệnh liên kết tượng trưng (ví dụ như các shims của Homebrew). OpenClaw xác thực đường dẫn mục tiêu đã giải quyết. - Ghép
allowSymlinkCommandvớitrustedDirscho các đường dẫn của trình quản lý gói (ví dụ["/opt/homebrew"]). - Hỗ trợ timeout, timeout không có đầu ra, giới hạn byte đầu ra, danh sách cho phép môi trường, và các thư mục đáng tin cậy.
- Ghi chú thất bại trên Windows: nếu xác minh ACL không khả dụng cho đường dẫn lệnh, giải quyết sẽ thất bại. Đối với các đường dẫn đáng tin cậy, đặt
allowInsecurePath: truetrên nhà cung cấp đó để bỏ qua kiểm tra bảo mật đường dẫn.
Ví dụ tích hợp Exec
1Password CLI
HashiCorp Vault CLI
sops
Tài liệu xác thực SSH sandbox
Backend sandboxssh cốt lõi cũng hỗ trợ SecretRefs cho tài liệu xác thực SSH:
- OpenClaw giải quyết các tham chiếu này trong quá trình kích hoạt sandbox, không trì hoãn trong mỗi cuộc gọi SSH.
- Các giá trị đã giải quyết được ghi vào các tệp tạm thời với quyền hạn chế và được sử dụng trong cấu hình SSH được tạo.
- Nếu backend sandbox hiệu quả không phải là
ssh, các tham chiếu này vẫn không hoạt động và không chặn khởi động.
Bề mặt thông tin đăng nhập được hỗ trợ
Các thông tin đăng nhập được hỗ trợ và không được hỗ trợ chính thức được liệt kê trong: Các thông tin đăng nhập được tạo ra hoặc xoay vòng runtime và tài liệu làm mới OAuth được loại trừ có chủ ý khỏi giải quyết SecretRef chỉ đọc.Hành vi và thứ tự ưu tiên yêu cầu
- Trường không có tham chiếu: không thay đổi.
- Trường có tham chiếu: yêu cầu trên các bề mặt hoạt động trong quá trình kích hoạt.
- Nếu cả văn bản thuần và tham chiếu đều có, tham chiếu sẽ được ưu tiên trên các đường dẫn ưu tiên được hỗ trợ.
SECRETS_REF_OVERRIDES_PLAINTEXT(cảnh báo runtime)REF_SHADOWED(phát hiện kiểm tra khi thông tin đăng nhậpauth-profiles.jsonđược ưu tiên hơn các tham chiếuopenclaw.json)
serviceAccountRefđược ưu tiên hơnserviceAccountvăn bản thuần.- Giá trị văn bản thuần bị bỏ qua khi tham chiếu anh em được đặt.
Kích hoạt kích hoạt
Kích hoạt bí mật chạy trên:- Khởi động (kiểm tra trước và kích hoạt cuối cùng)
- Đường dẫn áp dụng tải lại cấu hình nóng
- Đường dẫn kiểm tra khởi động lại tải lại cấu hình
- Tải lại thủ công qua
secrets.reload
- Thành công hoán đổi snapshot một cách nguyên tử.
- Thất bại khởi động sẽ hủy bỏ khởi động gateway.
- Thất bại tải lại runtime giữ lại snapshot tốt nhất đã biết.
- Cung cấp một token kênh cụ thể cho mỗi cuộc gọi công cụ/hỗ trợ gửi đi không kích hoạt SecretRef; các điểm kích hoạt vẫn là khởi động, tải lại, và
secrets.reloadrõ ràng.
Tín hiệu suy giảm và phục hồi
Khi kích hoạt thời gian tải lại thất bại sau một trạng thái khỏe mạnh, OpenClaw sẽ vào trạng thái bí mật suy giảm. Sự kiện hệ thống một lần và mã nhật ký:SECRETS_RELOADER_DEGRADEDSECRETS_RELOADER_RECOVERED
- Suy giảm: runtime giữ lại snapshot tốt nhất đã biết.
- Phục hồi: phát ra một lần sau khi kích hoạt thành công tiếp theo.
- Các thất bại lặp lại trong khi đã suy giảm ghi nhật ký cảnh báo nhưng không spam sự kiện.
- Khởi động nhanh chóng không phát ra sự kiện suy giảm vì runtime chưa bao giờ hoạt động.
Giải quyết đường dẫn lệnh
Các đường dẫn lệnh có thể chọn tham gia giải quyết SecretRef được hỗ trợ qua RPC snapshot gateway. Có hai hành vi rộng:- Các đường dẫn lệnh nghiêm ngặt (ví dụ như các đường dẫn bộ nhớ từ xa
openclaw memoryvàopenclaw qr --remote) đọc từ snapshot đang hoạt động và thất bại nhanh chóng khi một SecretRef cần thiết không có sẵn. - Các đường dẫn lệnh chỉ đọc (ví dụ như
openclaw status,openclaw status --all,openclaw channels status,openclaw channels resolve,openclaw security audit, và các luồng sửa chữa bác sĩ/cấu hình chỉ đọc) cũng ưu tiên snapshot đang hoạt động, nhưng suy giảm thay vì hủy bỏ khi một SecretRef được nhắm mục tiêu không có sẵn trong đường dẫn lệnh đó.
- Khi gateway đang chạy, các lệnh này đọc từ snapshot đang hoạt động trước.
- Nếu giải quyết gateway không hoàn chỉnh hoặc gateway không có sẵn, chúng cố gắng dự phòng cục bộ nhắm mục tiêu cho bề mặt lệnh cụ thể.
- Nếu một SecretRef được nhắm mục tiêu vẫn không có sẵn, lệnh tiếp tục với đầu ra chỉ đọc suy giảm và chẩn đoán rõ ràng như “được cấu hình nhưng không có sẵn trong đường dẫn lệnh này”.
- Hành vi suy giảm này chỉ là cục bộ lệnh. Nó không làm suy yếu khởi động runtime, tải lại, hoặc các đường dẫn gửi/xác thực.
- Làm mới snapshot sau khi xoay vòng bí mật backend được xử lý bởi
openclaw secrets reload. - Phương thức RPC gateway được sử dụng bởi các đường dẫn lệnh này:
secrets.resolve.
Quy trình kiểm tra và cấu hình
Luồng nhà điều hành mặc định:secrets audit
Các phát hiện bao gồm:
- các giá trị văn bản thuần tại chỗ (
openclaw.json,auth-profiles.json,.env, và các mụcagents/*/agent/models.jsonđược tạo) - dư lượng tiêu đề nhà cung cấp nhạy cảm văn bản thuần trong các mục
models.jsonđược tạo - các tham chiếu chưa giải quyết
- ưu tiên che khuất (thông tin đăng nhập
auth-profiles.jsonđược ưu tiên hơn các tham chiếuopenclaw.json) - dư lượng cũ (
auth.json, nhắc nhở OAuth)
- Theo mặc định, kiểm tra bỏ qua các kiểm tra khả năng giải quyết SecretRef exec để tránh các tác dụng phụ của lệnh.
- Sử dụng
openclaw secrets audit --allow-execđể thực thi các nhà cung cấp exec trong quá trình kiểm tra.
- Phát hiện tiêu đề nhà cung cấp nhạy cảm dựa trên tên-heuristic (các tên và đoạn tiêu đề xác thực/thông tin đăng nhập phổ biến như
authorization,x-api-key,token,secret,password, vàcredential).
secrets configure
Trợ giúp tương tác mà:
- cấu hình
secrets.providerstrước (env/file/exec, thêm/sửa/xóa) - cho phép bạn chọn các trường mang bí mật được hỗ trợ trong
openclaw.jsoncộng vớiauth-profiles.jsoncho một phạm vi agent - có thể tạo một ánh xạ
auth-profiles.jsonmới trực tiếp trong bộ chọn mục tiêu - nắm bắt chi tiết SecretRef (
source,provider,id) - chạy giải quyết trước
- có thể áp dụng ngay lập tức
- Kiểm tra trước bỏ qua các kiểm tra SecretRef exec trừ khi
--allow-execđược đặt. - Nếu bạn áp dụng trực tiếp từ
configure --applyvà kế hoạch bao gồm các tham chiếu/nhà cung cấp exec, hãy giữ--allow-execđược đặt cho bước áp dụng cũng vậy.
openclaw secrets configure --providers-onlyopenclaw secrets configure --skip-provider-setupopenclaw secrets configure --agent <id>
configure:
- xóa các thông tin đăng nhập tĩnh khớp từ
auth-profiles.jsoncho các nhà cung cấp được nhắm mục tiêu - xóa các mục
api_keytĩnh cũ từauth.json - xóa các dòng bí mật đã biết khớp từ
<config-dir>/.env
secrets apply
Áp dụng một kế hoạch đã lưu:
- chạy thử bỏ qua các kiểm tra exec trừ khi
--allow-execđược đặt. - chế độ ghi từ chối các kế hoạch chứa SecretRefs/nhà cung cấp exec trừ khi
--allow-execđược đặt.
Chính sách an toàn một chiều
OpenClaw cố ý không ghi các bản sao lưu rollback chứa các giá trị bí mật văn bản thuần lịch sử. Mô hình an toàn:- kiểm tra trước phải thành công trước chế độ ghi
- kích hoạt runtime được xác thực trước khi cam kết
- áp dụng cập nhật tệp bằng cách thay thế tệp nguyên tử và khôi phục nỗ lực tốt nhất khi thất bại
Ghi chú tương thích xác thực cũ
Đối với các thông tin đăng nhập tĩnh, runtime không còn phụ thuộc vào lưu trữ xác thực cũ văn bản thuần.- Nguồn thông tin đăng nhập runtime là snapshot trong bộ nhớ đã giải quyết.
- Các mục
api_keytĩnh cũ được xóa khi được phát hiện. - Hành vi tương thích liên quan đến OAuth vẫn tách biệt.
Ghi chú Web UI
Một số liên kết SecretInput dễ cấu hình hơn ở chế độ chỉnh sửa thô hơn là ở chế độ biểu mẫu.Tài liệu liên quan
- Lệnh CLI: secrets
- Chi tiết hợp đồng kế hoạch: Hợp đồng Kế hoạch Áp dụng Bí mật
- Bề mặt thông tin đăng nhập: Bề mặt Thông tin Đăng nhập SecretRef
- Thiết lập xác thực: Xác thực
- Tư thế bảo mật: Bảo mật
- Thứ tự ưu tiên môi trường: Biến Môi trường