Điều kiện tiên quyết
- Cluster CockroachDB có SQL endpoint mà CloudThinker truy cập được từ internet. Agent kết nối từ CloudThinker Cloud, nên
localhostvà địa chỉ private được phân giải ở đó, không phải trên mạng của bạn. Xem Truy cập dịch vụ private. - Tài khoản admin có thể tạo SQL user và cấp quyền.
- Xác thực bằng mật khẩu với TLS. Kết nối từ chối
sslmode=disable,allowvàprefer.
Thiết lập
1
Tạo hai SQL user
Mở một phiên SQL với quyền admin, từ SQL Shell trong CockroachDB Cloud console hoặc bằng
cockroach sql --url '<admin-connection-string>'. Sau đó tạo một user để đọc và một user cho các thao tác ghi đã được phê duyệt:2
Cấp quyền trên bảng
Chạy các lệnh này trong từng schema mà agent cần truy cập. Ví dụ này dùng User ghi cũng cần Bạn không thể bỏ qua user ghi, vì biểu mẫu bắt buộc phải có. Nếu chỉ muốn đọc, hãy tạo user ghi và không cấp quyền nào trên bảng. Mọi thao tác ghi đã phê duyệt khi đó sẽ thất bại tại cơ sở dữ liệu.
public:SELECT: CockroachDB yêu cầu quyền này cho mọi UPDATE hoặc DELETE đọc row qua mệnh đề WHERE, và agent luôn gửi kèm một mệnh đề như vậy.Các bảng được tạo sau này cũng cần các quyền tương tự. Để tự động áp dụng, hãy đặt default privileges cho role tạo bảng của bạn (ở đây là app_owner):3
Cho phép user đọc xem các câu lệnh đang chạy (tùy chọn)
Chỉ cấp
VIEWACTIVITY nếu agent cần xem câu lệnh từ các phiên khác. Đọc schema và dữ liệu vẫn hoạt động khi không có quyền này. Nội dung câu lệnh chứa các giá trị literal, có thể bao gồm dữ liệu cá nhân, nên đừng cấp quyền này nếu điều đó quan trọng với bạn.4
Mở quyền truy cập mạng
CloudThinker phải truy cập được cổng SQL (mặc định
26257). Trong CockroachDB Cloud, mở trang Networking của cluster và thêm các egress IP của CloudThinker vào IP Allowlist. Với cluster tự host, hãy cho phép các IP này trong firewall hoặc security group. Tài liệu này không công bố danh sách egress IP của CloudThinker: hãy hỏi đầu mối liên hệ CloudThinker của bạn, hoặc liên hệ chúng tôi.5
Tạo hai connection string
Tạo một chuỗi cho mỗi user, cả hai cùng trỏ đến một cluster và cơ sở dữ liệu. URL-encode các ký tự đặc biệt trong mỗi mật khẩu.
- CockroachDB Cloud
- Tự host
Mở hộp thoại Connect của cluster và sao chép connection string chung, rồi thay vào từng user:Xóa mọi đường dẫn
sslrootcert trỏ đến một tệp trên máy của bạn, vì CloudThinker không đọc được tệp đó.6
Thêm kết nối trong CloudThinker
Mở More → Workspace settings → Connections, chọn CockroachDB và nhấn Connect trên bảng chi tiết. Trong hộp thoại, bạn có thể đổi Alias và Description. Dán URL đọc vào Connection string và URL ghi vào Write connection string, rồi nhấn Connect.Trạng thái thành công: kết nối hiển thị Connecting và Verifying, sau đó là Connected. CloudThinker chạy Discovery một lần, và kết quả hiển thị trong phần Discovery trên bảng chi tiết của kết nối.
Chi tiết kết nối
Hai chuỗi phải khác nhau. Nếu chúng giống hệt nhau, hoặc chuỗi ghi để trống, CloudThinker sẽ không chạy kết nối.
Quyền yêu cầu
Khả năng của agent
Truy vấn dừng sau 30 giây và trả về tối đa 1.000 row.
EXPLAIN ANALYZE bị từ chối vì lệnh này thực thi câu lệnh thật. Danh sách node và danh sách SQL user không khả dụng: CockroachDB v26 hạn chế các bảng nội bộ chứa chúng, và agent sẽ nói rõ điều đó thay vì đoán.
Xác minh kết nối
relation does not exist nghĩa là tên sai hoặc user đọc không thấy được đối tượng đó.
Ví dụ prompt
Quyền ghi
Agent chỉ có thể chèn, cập nhật hoặc xóa row. Mỗi thay đổi đi qua Approvals và chạy với write connection string cho đúng lần gọi đó. Mọi thay đổi do agent thực hiện đều đi qua Approvals của workspace trước. Ở chế độ mặc định Auto · Rules + AI · Ask me, AI judgment có thể cho một thay đổi an toàn chạy mà không cần hỏi. Allow Rule cũng vậy, sau khi CloudThinker bật Rule enforcement cho workspace của bạn. Chọn Manual nếu bạn muốn tự phê duyệt mọi thay đổi.- Trước khi hỏi, agent nêu hành động, bảng và mệnh đề
WHEREchọn các row. UPDATEhoặcDELETEkhông có mệnh đềWHEREsẽ bị từ chối.- Agent không thể tạo, sửa, xóa hay truncate cơ sở dữ liệu, bảng hoặc index.
- Kết quả báo cáo hành động, bảng và số row bị ảnh hưởng, không bao giờ báo giá trị row.
- Phê duyệt một thay đổi không đồng nghĩa với phê duyệt thay đổi tiếp theo.
Khắc phục sự cố
SSL mode bị từ chối
SSL mode bị từ chối
Dùng
sslmode=require, verify-ca hoặc verify-full. Kết nối từ chối disable, allow và prefer vì chúng cho phép kết nối không mã hóa.Xác thực hoặc kết nối thất bại
Xác thực hoặc kết nối thất bại
Kiểm tra username, mật khẩu đã URL-encode, host, cổng (mặc định
26257) và cơ sở dữ liệu trong mỗi chuỗi. Sau khi đặt lại mật khẩu, hãy sao chép lại connection string từ CockroachDB Cloud console.Thiếu bảng hoặc truy vấn bị từ chối
Thiếu bảng hoặc truy vấn bị từ chối
User đọc thiếu
USAGE trên schema hoặc SELECT trên bảng. Bảng mới cần được cấp quyền riêng hoặc có default privileges.Thao tác ghi bị từ chối
Thao tác ghi bị từ chối
Xác nhận URL ghi khác URL đọc, user ghi có quyền trên bảng đó (cộng
SELECT cho cập nhật hoặc xóa), và thay đổi cụ thể này đã được phê duyệt. Mọi cập nhật hoặc xóa đều cần mệnh đề WHERE.LIMIT exceeds maximum
LIMIT exceeds maximum
Truy vấn yêu cầu hơn 1.000 row. Hãy yêu cầu tập nhỏ hơn, hoặc một phép đếm hay tổng hợp được lọc trên server.
Bảo mật
- Quyền tối thiểu — chỉ cấp các quyền mà agent cần cho trường hợp sử dụng của bạn; bắt đầu với quyền chỉ đọc và mở rộng sau.
- Chỉ đọc theo mặc định — sử dụng thông tin xác thực chỉ đọc trừ khi bạn muốn agent thực hiện thay đổi qua kết nối này.
- Xoay vòng thông tin xác thực — xoay vòng khóa và token theo lịch trình thông thường của bạn; CloudThinker sẽ lấy giá trị mới khi bạn cập nhật kết nối.
- Thu hồi khi bàn giao — xóa thông tin xác thực tại nhà cung cấp khi bạn xóa một kết nối hoặc khi đồng nghiệp rời nhóm.
- Tách user đọc và ghi: chỉ cho user đọc quyền
SELECT, và chỉ cấp quyền thay đổi row cho user ghi. Không bao giờ cấpINSERT,UPDATEhoặcDELETEcho user đọc. - Xác minh chứng chỉ server: ưu tiên
sslmode=verify-fullkhi chứng chỉ của cluster đến từ CA công khai và hostname khớp. Dùngrequirecho CA private.
Liên quan
PostgreSQL
Kết nối cơ sở dữ liệu PostgreSQL bằng user chỉ đọc.
Approvals
Quyết định thay đổi row nào được chạy, phải chờ người duyệt hoặc bị từ chối.