Skip to main content
Kết nối tài khoản Snowflake của bạn để Tony (Database Engineer) đọc mức tiêu thụ credit của warehouse, xếp hạng các truy vấn chậm và lỗi, và đo chi phí lưu trữ của bảng. CloudThinker kết nối tới Snowflake qua SQL REST API bằng programmatic access token, và một kết nối mới chỉ đọc cho đến khi bạn bật công cụ ghi.

Yêu cầu trước

  • Quyền ACCOUNTADMIN (hoặc tương đương) để tạo role, service user và token.
  • Một network policy để gắn vào user đó. Snowflake từ chối xác thực bằng token cho đến khi có network policy.
  • Một warehouse mà role có thể dùng. Truy vấn metadata không cần compute, nên kiểm tra kết nối có thể thành công trong khi phân tích thật vẫn thất bại nếu thiếu warehouse.

Thiết lập

1

Tạo role chỉ đọc

Chạy với quyền ACCOUNTADMIN. USAGE_VIEWER bao phủ metering và storage, OBJECT_VIEWER bao phủ danh mục đối tượng, và GOVERNANCE_VIEWER là thứ làm cho QUERY_HISTORY đọc được:
2

Tạo service user

User kiểu SERVICE không có mật khẩu, không MFA và không SSO, nên nó chỉ xác thực bằng token:
3

Gắn network policy

Thu hẹp ALLOWED_IP_LIST về dải IP egress của bạn cho mọi trường hợp ngoài tài khoản thử nghiệm:
Bỏ qua bước này là lỗi thiết lập phổ biến nhất, và lỗi trả về (390403) không nhắc đến network policy.
4

Tạo programmatic access token

Snowflake chỉ hiển thị token một lần, khi tạo. DAYS_TO_EXPIRY là hạn cứng: đúng ngày đó kết nối bắt đầu lỗi 390318 và bạn phải tạo token mới.
5

Thêm kết nối trong CloudThinker

Vào Connections → Snowflake và nhập:
  • Account identifier: MYORG-MYACCOUNT, tìm trong Snowsight → Account details. Không phải URL đầy đủ.
  • Programmatic access token: token từ bước trước. Không phải mật khẩu tài khoản.
  • Role: tùy chọn; để trống để dùng role mặc định của user.
  • Warehouse: tùy chọn; để trống để dùng warehouse mặc định của user.
Nhấn Connect. Trạng thái hiển thị Connected khi CloudThinker phân giải được account, region, role và warehouse.

Chi tiết kết nối

Host REST chuyển account identifier về chữ thường và hiển thị dấu phân cách thành dấu gạch nối, nên identifier viết bằng dấu gạch dưới vẫn phân giải được.

Quyền cần thiết

Chỉ đọc (mặc định)

GOVERNANCE_VIEWER rất dễ bỏ sót. Thiếu nó, câu trả lời về chi phí và lưu trữ vẫn chạy trong khi mọi câu trả lời về truy vấn chậm và lỗi đều thất bại trên QUERY_HISTORY.

Quyền ghi (chỉ khi bạn bật)

Cấp OPERATE trên đúng những warehouse mà agent được phép tác động, không bao giờ trên warehouse production dùng chung. Một warehouse riêng cho agent kèm resource monitor tạo trần cứng cho compute của nó mà không prompt nào nâng lên được.

Khả năng của agent

Sau khi kết nối, Tony có thể:

Kiểm tra kết nối

Ví dụ prompt

Snowflake hiển thị credit chứ không phải tiền tệ, và đơn giá mỗi credit không đọc được qua kết nối này. Agent báo cáo credit đúng như credit.

Quyền ghi

Kết nối mặc định chỉ đọc, và quyền ghi là quyết định riêng của từng kết nối vì quyền truy cập đi theo credential. Một workspace có thể giữ đồng thời một token chỉ đọc và một token có quyền ghi. Bật tại Connections → Snowflake → Tool permissions. Hai điều cần cân nhắc trước:
  • Ghi ở đây nghĩa là đúng hai hành động, không phải SQL tùy ý. Nâng resource monitor, hạ DATA_RETENTION_TIME_IN_DAYS, hay đổi kích thước warehouse vẫn được báo lại cho bạn dưới dạng câu lệnh để tự chạy trong Snowsight.
  • Grant mới là lớp kiểm soát mạnh hơn. Quyền công cụ quyết định CloudThinker có yêu cầu ghi hay không; ROLE_RESTRICTION của token và các grant của role quyết định Snowflake có cho phép ghi hay không.
Snowflake không có suspend theo điều kiện. Bước kiểm tra bận và câu lệnh ALTER là hai câu lệnh riêng, nên một truy vấn có thể bắt đầu ở giữa và mất compute. Agent báo cáo thay đổi trạng thái cùng giới hạn này, không bao giờ nói rằng suspend là an toàn.
Mọi thao tác ghi vẫn cần bạn phê duyệt trên lời gọi công cụ.

Xử lý sự cố

User chưa có network policy. Snowflake từ chối xác thực bằng token cho đến khi có một cái được gắn: ALTER USER SVC_CLOUDTHINKER SET NETWORK_POLICY = CT_POLICY;
Token đã hết hạn hoặc bị thu hồi. DAYS_TO_EXPIRY là hạn cứng. Tạo token mới và cập nhật kết nối.
Thiếu database role, không phải gõ sai tên view. Yêu cầu agent chạy bước khám phá: nó liệt kê mọi view ACCOUNT_USAGE mà role đọc được và in ra đúng dòng GRANT cho những view không đọc được.
Một resource monitor đã vượt hạn mức, hoặc warehouse đang suspended và không resume được. Đây là vấn đề capacity của tài khoản, không phải quyền, nên không GRANT nào sửa được. Account admin cần nâng hoặc reset resource monitor.Kết nối vẫn ở trạng thái Connected vì credential hợp lệ và bước kiểm tra không cần compute.
Service user không có DEFAULT_WAREHOUSE và cũng không cấu hình warehouse nào. Đặt Warehouse trên kết nối, hoặc gán mặc định cho user.
Role nằm ngoài ROLE_RESTRICTION của token. Dùng một role mà token được phép sử dụng, hoặc xóa Role để lấy mặc định của user.
Không phải lỗi. ACCOUNT_USAGE trễ tới vài giờ và giữ một năm lịch sử, nên một khoảng thời gian hẹp trên tài khoản ít hoạt động sẽ không có dòng nào.

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.
  • Service user riêng — user TYPE = SERVICE không có mật khẩu, không MFA và không SSO, nên token là lối vào duy nhất và dấu vết kiểm toán vẫn dễ đọc.
  • Giới hạn và đặt hạn cho tokenROLE_RESTRICTION giới hạn mọi thứ kết nối chạm tới được, và DAYS_TO_EXPIRY buộc bạn xoay vòng token thay vì quên mất.

Liên quan

Tony Agent

Agent tối ưu hóa tập trung vào cơ sở dữ liệu

Kết nối ClickHouse

Thiết lập tương tự cho cluster ClickHouse