Tìm, xem xét, chấp nhận và chỉnh sửa các Rule cho phép một thao tác ghi của agent tự chạy, chờ người duyệt, hoặc không bao giờ chạy
Mỗi Rule áp dụng cho một loại thao tác ghi, chẳng hạn ec2:StopInstances trên tài khoản AWS staging của bạn, và được xét trước Approval mode, một khi CloudThinker bật Rule enforcement cho workspace của bạn. Tính năng này tắt theo mặc định: khi bước Rules hiển thị In preview, Rules chỉ ghi lại kết quả lẽ ra sẽ đưa ra, còn quyết định thực tế vẫn do Approval mode, vì vậy hãy chọn Manual cho các thao tác ghi bắt buộc phải chờ người duyệt (chi tiết). Agent đề xuất Rule trong lúc làm việc, nhưng chưa có gì thay đổi cho đến khi Admin workspace chấp nhận.
Allow chạy thao tác ghi. Ask first chờ người duyệt. Deny từ chối.
Operations
Các lệnh gọi mà Rule bao phủ. Dấu * khớp với bất kỳ phần nào, ví dụ ec2:Stop* hoặc *:*. AWS dùng tên action IAM, chẳng hạn ec2:StopInstances. Các loại kết nối khác đặt tên thao tác theo cách riêng, vì vậy hãy yêu cầu các Rule đó bằng /create-policy và CloudThinker sẽ chọn tên hợp lệ từ danh mục của kết nối.
Connection type và Connections
Các kết nối mà Rule bao phủ. Để trống Connections để bao phủ mọi kết nối thuộc loại đó.
Runs from
Các loại run mà Rule bao phủ: Chat, Resolve, Optimize, Automations, Review. Để trống nghĩa là mọi run.
Window
Rule kéo dài bao lâu. Để trống nghĩa là không hết hạn.
Note
Lý do Rule tồn tại, dành cho người đọc tiếp theo
Who approves this?
Chỉ với Ask first: Default approvers hoặc một nhóm người phê duyệt, và có cần Needs 2 different people hay không
Never allow break-glass
Chỉ với Deny: không ai có thể ghi đè, kể cả owner của workspace
Rule không bao giờ áp dụng cho thao tác đọc, kể cả thao tác đọc nhạy cảm, vì thao tác đọc luôn chạy. Rule Allow không bao giờ khớp với lệnh gọi mà CloudThinker không xác định được, chẳng hạn một lệnh tạo đối số lúc chạy, một chương trình CloudThinker không mô hình hóa, hoặc một đường dẫn API nằm ngoài danh mục của kết nối. Rule Allow trên mọi thao tác phải nêu tên các kết nối của nó.Mỗi Rule có huy hiệu quyền truy cập để bạn nhận ra ngay Rule nào rủi ro:
Huy hiệu
Rule bao phủ
Write
Các lệnh gọi thay đổi tài nguyên
Destructive
Lệnh xóa và các lệnh gọi phá hủy khác, chẳng hạn Git force push
Session
Các lệnh gọi mở remote shell, chẳng hạn ssh
Sensitive read
Thao tác đọc secret, chẳng hạn một tệp thông tin xác thực. Các thao tác này vẫn chạy, nên phần này của Rule không bao giờ khớp.
Check-up là một cuộc chat mà CloudThinker dùng để đọc các kết nối, phát hiện Optimize, sự cố, cảnh báo và lịch sử phê duyệt của bạn, rồi đề xuất Rule để bạn chấp nhận.
1
Mở tab Rules
Mở Approvals trong sidebar, rồi chọn tab Rules.
Tab Rules: các Rule đang hoạt động, các Rule đang chờ xem xét, và Add from template hoặc Find rules
2
Chọn nội dung cần tìm
Nhấn Find rules. Giữ hoặc bỏ từng trọng tâm:
Trọng tâm
Đề xuất gì
Hand off toil
Rule Allow cho thao tác ghi trên các kết nối development và staging
Guard production
Rule Ask first cho các lệnh gọi phá hủy và session, cùng Ask first hoặc Deny cho các thao tác ghi production mà mọi người đã từ chối
Clean up Rules
Sửa các Rule không được dùng, quá rộng hoặc thiếu kết nối
3
Bắt đầu check-up
Nhấn Start check-up. Quá trình mất 5–10 phút và tiêu tốn credit. Trong khi chạy, nút hiển thị Check-up running và mở cuộc chat đó.Trạng thái thành công: banner trên tab Rules cho biết có bao nhiêu Rule cần bạn xem xét, kèm nút Review.
Bạn cũng có thể bắt đầu check-up từ bất kỳ cuộc chat nào bằng cách nhập /find-rules.
Khi bạn đã biết Rule mình muốn, hãy nhập /create-policy trong chat. CloudThinker hỏi bạn cần gì, kiểm tra các Rule hiện tại đang làm gì, và đăng một thẻ đề xuất.
/create-policy Let agents stop and start EC2 instances on aws-staging without asking. Keep everything else on that account as it is./create-policy Always ask the On-call SRE group before any rds:Delete* call on production.
Để biến một lệnh gọi bạn vừa phê duyệt thành Rule, nhấn Approve and draft rule trên thẻ phê duyệt của nó. Lệnh gọi chạy ngay, và một cuộc chat bên cạnh soạn Rule.
Trên tab Rules, nhấn Review trong banner, hoặc mở tab Needs review.
2
Kiểm tra từng Rule
Mở một Rule để đọc. What would change phát lại các lệnh gọi trong 7 hoặc 30 ngày qua với Rule đó và cho bạn biết bao nhiêu lệnh sẽ chạy không cần hỏi, hỏi trước, hoặc bị từ chối, kèm các lệnh ví dụ.
3
Chọn và chấp nhận
Ban đầu không có gì được chọn. Chọn tối đa 50 Rule, rồi nhấn Accept hoặc Dismiss. Với Rule Allow trên mọi thao tác, Allow cho thao tác phá hủy, hoặc Allow bị gắn cờ (nhập từ quyền cũ có bao gồm loại truy cập rủi ro, như lệnh gọi session), bạn sẽ được yêu cầu xác nhận trước.Trạng thái thành công: một thông báo hiển thị “Accepted N Rules” và đề nghị Undo. Rule nào thất bại sẽ ở lại trong danh sách kèm lý do.
Các đề xuất tương tự hiển thị dưới dạng thẻ trong cuộc chat đã tạo ra chúng. Accept trên thẻ có tác dụng giống Accept trên tab Rules.
Đề xuất nào trùng với Always blocked (danh sách có sẵn gồm các lệnh gọi không bao giờ được chạy) thì không thể chấp nhận. Đề xuất đó sẽ không bao giờ có hiệu lực, nên hãy bỏ qua.
Window là Rule ngắn hạn, tạo bằng một cú nhấn vào Approve for… trên thẻ phê duyệt. Window chỉ áp dụng cho đúng thao tác và kết nối vừa được duyệt, trong đúng cuộc chat hoặc sự cố đó, và luôn có thời điểm kết thúc: sau 1 giờ, khi sự cố kết thúc (This incident), hoặc sau 30 ngày. Kể cả Window 30 ngày cũng không áp dụng bên ngoài cuộc chat nơi bạn đã duyệt.Window hiển thị trên tab Rules với nguồn Window và thời điểm kết thúc. Bạn không thể chỉnh sửa Window. Để kết thúc sớm, nhấn Disable trong menu của dòng.
Lưu policy của bạn dưới dạng tệp, ví dụ trong Git, và nạp vào workspace khác. Cả hai hành động nằm trong menu … cạnh Find rules.
Export active Rules tải xuống policy-<workspace>-<date>.yaml. Tệp chứa các Rule đang hoạt động, nhóm người phê duyệt, Approval mode và cài đặt hai người. Tệp không bao giờ chứa Window, đề xuất hoặc secret.
Import policy đọc một tệp YAML hoặc JSON tối đa 1 MB. Trước khi áp dụng, CloudThinker cho bạn xem những gì sẽ thay đổi và liệt kê từng lỗi theo dòng và trường. Tệp chỉ được áp dụng khi bạn nhấn, và vẫn được giữ lại nếu áp dụng thất bại. Import theo kiểu hợp nhất: các Rule trong tệp được thêm hoặc cập nhật theo slug, và các Rule không có trong tệp vẫn giữ nguyên. Nếu muốn bỏ các Rule đó, chọn Remove Rules that are not in the file. Các Rule Ask first và Deny được nhập sẽ bắt đầu ở trạng thái hoạt động. Rule Allow được nhập sẽ chờ xem xét trừ khi bạn bật Activate Allow Rules.
Công cụ policy của agent chưa được bật cho bản triển khai CloudThinker của bạn, nên check-up, Change with AI, và các lệnh /find-rules và /create-policy bị ẩn. Đây không phải cài đặt trên trang này. Liên hệ bộ phận hỗ trợ CloudThinker, hoặc người vận hành bản triển khai self-hosted của bạn, để yêu cầu bật. Bạn vẫn có thể chỉnh sửa Rule trong biểu mẫu, thêm từ template, hoặc nhập tệp policy.
Find rules yêu cầu bạn kết nối trước
Check-up cần ít nhất một tài khoản cloud hoặc cluster. Thêm một kết nối trong Connections, rồi thử lại.
Accept bị tắt
Bạn cần vai trò Admin workspace, hoặc Rule trùng với Always blocked. Nếu Rule đã thay đổi sau khi bạn mở, hãy tải lại và xem xét lần nữa.
Tab Rules báo Rules đang ở chế độ preview
Rules chưa quyết định trong workspace này. Mỗi lệnh gọi được kiểm tra với chúng và chỉ kết quả được ghi lại, nên bạn có thể xem xét và chấp nhận đề xuất ngay bây giờ. Cho đến khi tính năng thực thi được bật, chỉ Approval mode quyết định mỗi thao tác ghi. CloudThinker bật tính năng thực thi cho từng workspace; liên hệ bộ phận hỗ trợ CloudThinker để yêu cầu.
Rule Allow không cho thao tác ghi chạy
Kiểm tra tính năng thực thi trước: nếu tab Rules báo Rules đang ở chế độ preview, chưa có Rule nào quyết định gì (xem ở trên). Sau đó kiểm tra chế độ: Manual hỏi trước mọi thao tác ghi, kể cả thao tác mà một Rule Allow bao phủ. Sau đó kiểm tra Runs from và Connections. Rule chỉ áp dụng cho các loại run và kết nối được nêu trong đó.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"CloudThinker","colors":{"primary":"#0c93c0","light":"#2897c1","dark":"#0c93c0"},"logo":{"light":"https://mintcdn.com/cloudthinker/-4m9DUjwzDxHfABz/logo/light.svg?fit=max\u0026auto=format\u0026n=-4m9DUjwzDxHfABz\u0026q=85\u0026s=a56a571509d1cd246f5b0e68db015e5f","dark":"https://mintcdn.com/cloudthinker/-4m9DUjwzDxHfABz/logo/dark.svg?fit=max\u0026auto=format\u0026n=-4m9DUjwzDxHfABz\u0026q=85\u0026s=4252f33496bbaa527e5408338963a31e"},"favicon":"https://mintcdn.com/cloudthinker/PoYnb4baZ54aMMQW/favicon.ico?fit=max\u0026auto=format\u0026n=PoYnb4baZ54aMMQW\u0026q=85\u0026s=6570e99ed2a763d9632c8f933fe9c164","background":{"color":{"light":"#eef0f3","dark":"#000000"}},"navbar":{"links":[{"href":"https://discord.com/invite/sRBWRWtaNR","label":"Community"},{"href":"https://cloudthinker.io/blogs","label":"Blog"},{"href":"https://cloudthinker.io/contact","label":"Contact us"}],"primary":{"type":"button","label":"Open app","href":"https://app.cloudthinker.io"}},"footer":{"socials":{"x":"https://x.com/cloudthinkerio?s=21","linkedin":"https://www.linkedin.com/company/cloud-thinker","github":"https://github.com/cloudthinker-ai","discord":"https://discord.com/invite/sRBWRWtaNR","youtube":"https://www.youtube.com/@cloudthinkerai"}},"seo":{"indexing":"navigable"},"fonts":{"family":"Poppins"},"contextual":{"options":["copy","view","chatgpt","claude"],"display":"header"},"metadata":{"timestamp":false},"styling":{"latex":true},"navigation":{"languages":[{"language":"en","href":""},{"language":"vi","href":"vi"},{"language":"ja","href":"ja"},{"language":"ko","href":"ko"}]}},"deployment":{"deploymentMetadataValue":{"subdomain":"cloudthinker","hasAudioNarration":false,"actualSubdomain":"cloudthinker","customDomains":["docs.cloudthinker.io"],"gitSource":{"type":"github","owner":"nhat-tranvan","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":false,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ae15a4fd86e510dddaf7235","collectionId":"4bee09ef-014a-46f1-a560-f2d4cfb62382","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae15a4fd86e510dddaf7235"},"feedback":{"thumbs":true,"edits":true,"issues":true,"agentFeedback":true},"entitlements":{},"buildId":"6ae15a4fd86e510dddaf7235","clientVersion":"0.0.3990","searchFilterCounts":[{"language":"vi","tag":"Nền tảng","count":131},{"language":"vi","tag":"Kết nối","count":101},{"language":"default","tag":"Platform","count":67},{"language":"en","tag":"Platform","count":63},{"language":"ja","tag":"プラットフォーム","count":63},{"language":"ko","tag":"플랫폼","count":63},{"language":"vi","tag":"Sản phẩm","count":55},{"language":"default","tag":"Connections","count":52},{"language":"en","tag":"Connections","count":49},{"language":"ja","tag":"接続","count":48},{"language":"ko","tag":"연결","count":48},{"language":"vi","tag":"Tài nguyên","count":39},{"language":"vi","tag":"Học","count":30},{"language":"en","tag":"Products","count":29},{"language":"ja","tag":"プロダクト","count":29},{"language":"ko","tag":"제품","count":29},{"language":"default","tag":"Products","count":26},{"language":"default","tag":"Resources","count":26},{"language":"vi","tag":"Bắt đầu","count":26},{"language":"vi","tag":"Observability \u0026 Monitoring","count":24},{"language":"vi","tag":"Resolve","count":20},{"language":"default","tag":"Learn","count":18},{"language":"default","tag":"Agentic Infrastructure Operations - Engineer Edition","count":18},{"language":"vi","tag":"Agentic Infrastructure Operations - Engineer Edition","count":18},{"language":"vi","tag":"Databases","count":16},{"language":"en","tag":"Get started","count":15},{"language":"ja","tag":"はじめに","count":15},{"language":"ko","tag":"시작하기","count":15},{"language":"en","tag":"Resources","count":13},{"language":"ja","tag":"リソース","count":13},{"language":"ko","tag":"리소스","count":13},{"language":"en","tag":"Monitoring","count":12},{"language":"en","tag":"Learn","count":12},{"language":"en","tag":"Agentic Infrastructure Operations - Leadership Edition","count":12},{"language":"ja","tag":"Observability \u0026 Monitoring","count":12},{"language":"ja","tag":"学ぶ","count":12},{"language":"ja","tag":"Agentic Infrastructure Operations - Leadership Edition","count":12},{"language":"ko","tag":"Observability \u0026 Monitoring","count":12},{"language":"ko","tag":"배우기","count":12},{"language":"ko","tag":"Agentic Infrastructure Operations - Leadership Edition","count":12},{"language":"default","tag":"Get started","count":11},{"language":"en","tag":"Resolve","count":11},{"language":"ja","tag":"Resolve","count":11},{"language":"ko","tag":"Resolve","count":11},{"language":"default","tag":"Resolve","count":9},{"language":"en","tag":"Enterprise","count":9},{"language":"ja","tag":"Databases","count":8},{"language":"ko","tag":"Databases","count":8},{"language":"default","tag":"Review","count":6},{"language":"default","tag":"Set up","count":6}]},"assistantConfig":{},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-v7-file-tree","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"pause-universal-search-reconcile","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"per-site-search-delta","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-private-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-nav-generations","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-agent-model-picker","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"isAtlas":false,"googleFontsInlined":true},"customCss":[{"filePath":"style.css","content":".ct-landing a,a.ct-featured{text-decoration:none!important}a.ct-featured{display:block;margin:1.25rem 0 1rem;padding:1.75rem 1.75rem 1.5rem;border:1px solid rgba(12,147,192,.45)!important;border-radius:16px;background:radial-gradient(120% 160% at 0 0,rgba(12,147,192,.14),transparent 55%),#fff;box-shadow:0 12px 32px -16px rgba(12,147,192,.45);transition:border-color .15s ease,transform .15s ease,box-shadow .15s ease}a.ct-featured:hover{border-color:#0c93c0!important;transform:translateY(-1px);box-shadow:0 16px 40px -16px rgba(12,147,192,.6)}.dark a.ct-featured{border-color:rgba(40,151,193,.45)!important;background:radial-gradient(120% 160% at 0 0,rgba(40,151,193,.16),transparent 55%),#05070a;box-shadow:0 12px 32px -16px rgba(40,151,193,.35)}.dark a.ct-featured:hover{border-color:#2897c1!important}.ct-featured-head{display:flex;align-items:center;gap:.75rem;margin-bottom:.875rem}.ct-featured-icon{display:inline-flex;align-items:center;justify-content:center;width:2.25rem;height:2.25rem;border-radius:999px;background:rgba(12,147,192,.12);color:#0a7aa0}.dark .ct-featured-icon{background:rgba(40,151,193,.14);color:#5bb8e0}.ct-eyebrow{font-size:.75rem;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:#0a7aa0}.dark .ct-eyebrow{color:#5bb8e0}.ct-hero h1,.ct-title{font-weight:600;color:#0b1a2b}.ct-title{font-size:1.375rem;line-height:1.3}.dark .ct-card .ct-card-head span,.dark .ct-card h3,.dark .ct-hero h1,.dark .ct-section>h2,.dark .ct-step h3,.dark .ct-title{color:#f5f5f7}.ct-body{margin:.5rem 0 0!important;font-weight:400!important;font-size:1rem;max-width:46rem;color:#5b6577;line-height:1.6}.dark .ct-body,.dark .ct-hero .ct-promise,.dark .ct-hero p.ct-lead,.dark .ct-section>p.ct-section-lead{color:#a1a1a6}.ct-cta{display:inline-block;margin-top:1rem;font-weight:600;color:#0a7aa0}.dark .ct-cta{color:#5bb8e0}.ct-illustration{margin:1.5rem 0}.ct-illustration img{max-width:720px;margin:0 auto}.ct-iso-scene{margin:1.5rem 0 2rem;border:1px solid rgba(12,147,192,.18);border-radius:16px;background:#fff;overflow:hidden}.dark .ct-iso-scene{border-color:rgba(40,151,193,.22);background:#000}.ct-illustration img,.ct-iso-scene .ct-iso-svg{display:block;width:100%;height:auto}.ct-landing{max-width:1120px;margin:0 auto;padding:3rem 1.5rem 5rem}.ct-landing a{border-bottom-width:0}.ct-kicker{font-size:.8125rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:#0c93c0}.dark .ct-card .ct-tagline,.dark .ct-hero .ct-promise strong,.dark .ct-kicker{color:#2897c1}.ct-hero{text-align:center;padding:1.5rem 0 1rem}.ct-hero h1{margin:.75rem 0 0;font-size:clamp(2.25rem,5vw,3.75rem);line-height:1.05;letter-spacing:-.03em;-webkit-text-fill-color:currentColor;background:0 0}.ct-hero .ct-promise{margin:1rem auto 0;font-size:clamp(1.125rem,2.2vw,1.5rem);color:#5b6577}.ct-hero .ct-promise strong,.ct-section>h2{color:#0c93c0;font-weight:600}.ct-hero p.ct-lead{max-width:44rem;margin:1rem auto 0;font-size:1.0625rem;line-height:1.65;color:#5b6577}.ct-actions{display:flex;flex-wrap:wrap;gap:.75rem;justify-content:center;margin-top:1.75rem}.ct-btn{display:inline-flex;align-items:center;gap:.5rem;padding:.7rem 1.25rem;border-radius:999px;font-weight:600;font-size:.95rem;transition:transform .15s ease,background .15s ease}.ct-btn:hover{transform:translateY(-1px)}.ct-btn-primary{background:#0c93c0;color:#fff!important}.ct-btn-primary:hover{background:#0a7aa0}.ct-btn-ghost{border:1px solid rgba(12,147,192,.35)!important;color:#0b1a2b!important}.dark .ct-btn-ghost{color:#f5f5f7!important;border-color:rgba(40,151,193,.4)!important}.ct-landing .ct-iso-scene{margin-top:2.5rem}.ct-section{margin-top:4.5rem}.ct-section>h2{margin:.4rem 0 0;font-size:1.75rem;letter-spacing:-.02em;color:#0b1a2b;-webkit-text-fill-color:currentColor;background:0 0}.ct-section>p.ct-section-lead{margin:.5rem 0 0;color:#5b6577;max-width:46rem}.ct-steps{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1rem;margin-top:1.5rem}.ct-step{display:block;padding:1.25rem;border-radius:14px;border:1px solid rgba(12,147,192,.18)!important;background:#fff;transition:border-color .15s ease,transform .15s ease}.dark .ct-step{background:#05070a;border-color:rgba(40,151,193,.22)!important}.ct-step:hover{border-color:#0c93c0!important;transform:translateY(-1px)}.ct-step-num{display:inline-flex;width:1.75rem;height:1.75rem;border-radius:999px;align-items:center;justify-content:center;font-size:.85rem;font-weight:700;color:#fff;background:#0c93c0}.ct-card h3,.ct-step h3{margin:.75rem 0 .25rem;font-size:1.05rem}.ct-card p,.ct-step p{margin:0;font-size:.925rem;line-height:1.55;color:#5b6577}.dark .ct-card p,.dark .ct-landing td,.dark .ct-step p{color:#a1a1a6}.ct-grid{display:grid;gap:1rem;margin-top:1.5rem}.ct-grid-3{grid-template-columns:repeat(3,minmax(0,1fr))}.ct-grid-5{grid-template-columns:repeat(5,minmax(0,1fr))}.ct-card{display:flex;flex-direction:column;padding:1.25rem;border-radius:14px;border:1px solid rgba(12,147,192,.18);background:#fff}.dark .ct-card{background:#05070a;border-color:rgba(40,151,193,.22)}.ct-card .ct-card-head{display:flex;align-items:center;gap:.6rem}.ct-card .ct-card-head span,.ct-card h3,.ct-step h3{font-weight:600;color:#0b1a2b}.ct-card .ct-tagline{margin-top:.75rem;font-size:1.05rem;font-weight:600;line-height:1.35;color:#0c93c0}.ct-card .ct-links{margin-top:auto;padding-top:1rem;display:flex;gap:1rem;font-size:.9rem;font-weight:600}.ct-card .ct-links a{color:#0c93c0!important}.dark .ct-card .ct-links a,.dark .ct-card-head .ct-arrow,.dark .ct-landing td a{color:#2897c1!important}a.ct-card{transition:border-color .15s ease,transform .15s ease}a.ct-card:hover{border-color:#0c93c0!important;transform:translateY(-1px)}.ct-strip{display:flex;flex-wrap:wrap;gap:.6rem;margin-top:1.25rem}.ct-strip a{display:inline-flex;align-items:center;gap:.45rem;padding:.55rem .95rem;border-radius:999px;border:1px solid rgba(12,147,192,.25)!important;font-size:.9rem;font-weight:500;color:#0b1a2b!important}.dark .ct-strip a{color:#f5f5f7!important;border-color:rgba(40,151,193,.3)!important}.ct-strip a:hover{border-color:#0c93c0!important}@media (max-width:900px){.ct-grid-3,.ct-grid-5,.ct-steps{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:560px){.ct-landing{padding:2rem 1rem 4rem}.ct-grid-3,.ct-grid-5,.ct-steps{grid-template-columns:minmax(0,1fr)}}.ct-landing table{width:100%;margin-top:1.25rem;border-collapse:collapse;font-size:.925rem}.ct-landing th{text-align:left;font-weight:600;padding:.7rem .9rem;border-bottom:1px solid rgba(12,147,192,.3)}.ct-landing td{vertical-align:top;padding:.8rem .9rem;border-bottom:1px solid rgba(12,147,192,.12);color:#5b6577;line-height:1.55}.ct-landing td:first-child{font-weight:600;color:#0b1a2b;width:22%}.dark .ct-landing td:first-child{color:#f5f5f7}.ct-landing td a{color:#0c93c0!important;font-weight:600}.ct-product{padding:1.1rem 1.2rem}.ct-product .ct-tagline{margin-top:.55rem;font-size:1rem}.ct-product p{margin-top:.3rem}.ct-card-head .ct-arrow{margin-left:auto;font-weight:500!important;color:#0c93c0!important;transition:transform .15s ease}a.ct-product:hover .ct-arrow{transform:translateX(3px)}html:not(.dark) .ct-card,html:not(.dark) .ct-iso-scene,html:not(.dark) .ct-step{background:#f6f7f9}html:not(.dark) .ct-iso-scene{border-color:rgba(12,147,192,.12)}html:not(.dark) #content-area,html:not(.dark) .prose,html:not(.dark) body{color:#2b3240}html:not(.dark) .prose :where(h1, h2, h3, h4, strong){color:#1c2230}html:not(.dark) .ct-card .ct-card-head span,html:not(.dark) .ct-card h3,html:not(.dark) .ct-hero h1,html:not(.dark) .ct-section>h2,html:not(.dark) .ct-step h3{color:#1c2230}"}],"page":{"pagePath":"vi/guide/approvals/rules","slug":"/vi/guide/approvals/rules","pageMetadata":{"title":"Approval Rules","description":"Tìm, xem xét, chấp nhận và chỉnh sửa các Rule cho phép một thao tác ghi của agent tự chạy, chờ người duyệt, hoặc không bao giờ chạy","icon":"list-check","href":"/vi/guide/approvals/rules"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Tìm, xem xét, chấp nhận và chỉnh sửa các Rule cho phép một thao tác ghi của agent tự chạy, chờ người duyệt, hoặc không bao giờ chạy\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,li:`li`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,..._provideComponents(),...props.components},{Accordion,AccordionGroup,Card,CardGroup,CodeBlock,Frame,Heading,Note,OptimizedImage,Step,Steps,Table}=_components;if(!Accordion)_missingMdxReference(`Accordion`,true);if(!AccordionGroup)_missingMdxReference(`AccordionGroup`,true);if(!Card)_missingMdxReference(`Card`,true);if(!CardGroup)_missingMdxReference(`CardGroup`,true);if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Frame)_missingMdxReference(`Frame`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Note)_missingMdxReference(`Note`,true);if(!OptimizedImage)_missingMdxReference(`OptimizedImage`,true);if(!Step)_missingMdxReference(`Step`,true);if(!Steps)_missingMdxReference(`Steps`,true);if(!Table)_missingMdxReference(`Table`,true);return _jsxs(_Fragment,{children:[_jsxs(_components.p,{children:[`Mỗi Rule áp dụng cho một loại thao tác ghi, chẳng hạn `,_jsx(_components.code,{children:`ec2:StopInstances`}),` trên tài khoản AWS staging của bạn, và được xét trước `,_jsx(_components.a,{href:`/vi/guide/approvals/approval-mode`,children:`Approval mode`}),`, một khi CloudThinker bật Rule enforcement cho workspace của bạn. Tính năng này tắt theo mặc định: khi bước `,_jsx(_components.strong,{children:`Rules`}),` hiển thị `,_jsx(_components.strong,{children:`In preview`}),`, Rules chỉ ghi lại kết quả lẽ ra sẽ đưa ra, còn quyết định thực tế vẫn do Approval mode, vì vậy hãy chọn `,_jsx(_components.strong,{children:`Manual`}),` cho các thao tác ghi bắt buộc phải chờ người duyệt (`,_jsx(_components.a,{href:`#kh%E1%BA%AFc-ph%E1%BB%A5c-s%E1%BB%B1-c%E1%BB%91`,children:`chi tiết`}),`). Agent đề xuất Rule trong lúc làm việc, nhưng chưa có gì thay đổi cho đến khi Admin workspace chấp nhận.`]}),`\n`,_jsx(Heading,{level:`2`,id:`điều-kiện-tiên-quyết`,children:`Điều kiện tiên quyết`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Vai trò Admin workspace để chấp nhận, chỉnh sửa, vô hiệu hóa hoặc khôi phục một Rule. Developer và Viewer có thể đọc Rule.`}),`\n`,_jsxs(_components.li,{children:[`Ít nhất một `,_jsx(_components.a,{href:`/vi/guide/connections/overview`,children:`kết nối`}),` tài khoản cloud hoặc cluster để dùng `,_jsx(_components.strong,{children:`Find rules`}),`.`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`rule-gồm-những-gì`,children:`Rule gồm những gì`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Trường`}),_jsx(_components.th,{children:`Ý nghĩa`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Effect`})}),_jsxs(_components.td,{children:[_jsx(_components.strong,{children:`Allow`}),` chạy thao tác ghi. `,_jsx(_components.strong,{children:`Ask first`}),` chờ người duyệt. `,_jsx(_components.strong,{children:`Deny`}),` từ chối.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Operations`})}),_jsxs(_components.td,{children:[`Các lệnh gọi mà Rule bao phủ. Dấu `,_jsx(_components.code,{children:`*`}),` khớp với bất kỳ phần nào, ví dụ `,_jsx(_components.code,{children:`ec2:Stop*`}),` hoặc `,_jsx(_components.code,{children:`*:*`}),`. AWS dùng tên action IAM, chẳng hạn `,_jsx(_components.code,{children:`ec2:StopInstances`}),`. Các loại kết nối khác đặt tên thao tác theo cách riêng, vì vậy hãy yêu cầu các Rule đó bằng `,_jsx(_components.code,{children:`/create-policy`}),` và CloudThinker sẽ chọn tên hợp lệ từ danh mục của kết nối.`]})]}),_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[_jsx(_components.strong,{children:`Connection type`}),` và `,_jsx(_components.strong,{children:`Connections`})]}),_jsxs(_components.td,{children:[`Các kết nối mà Rule bao phủ. Để trống `,_jsx(_components.strong,{children:`Connections`}),` để bao phủ mọi kết nối thuộc loại đó.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Runs from`})}),_jsxs(_components.td,{children:[`Các loại run mà Rule bao phủ: `,_jsx(_components.strong,{children:`Chat`}),`, `,_jsx(_components.strong,{children:`Resolve`}),`, `,_jsx(_components.strong,{children:`Optimize`}),`, `,_jsx(_components.strong,{children:`Automations`}),`, `,_jsx(_components.strong,{children:`Review`}),`. Để trống nghĩa là mọi run.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Window`})}),_jsx(_components.td,{children:`Rule kéo dài bao lâu. Để trống nghĩa là không hết hạn.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Note`})}),_jsx(_components.td,{children:`Lý do Rule tồn tại, dành cho người đọc tiếp theo`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Who approves this?`})}),_jsxs(_components.td,{children:[`Chỉ với `,_jsx(_components.strong,{children:`Ask first`}),`: Default approvers hoặc một nhóm người phê duyệt, và có cần `,_jsx(_components.strong,{children:`Needs 2 different people`}),` hay không`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Never allow break-glass`})}),_jsxs(_components.td,{children:[`Chỉ với `,_jsx(_components.strong,{children:`Deny`}),`: không ai có thể ghi đè, kể cả owner của workspace`]})]})]})]}),`\n`,_jsxs(_components.p,{children:[`Rule không bao giờ áp dụng cho thao tác đọc, kể cả thao tác đọc nhạy cảm, vì thao tác đọc luôn chạy. Rule `,_jsx(_components.strong,{children:`Allow`}),` không bao giờ khớp với lệnh gọi mà CloudThinker không xác định được, chẳng hạn một lệnh tạo đối số lúc chạy, một chương trình CloudThinker không mô hình hóa, hoặc một đường dẫn API nằm ngoài danh mục của kết nối. Rule `,_jsx(_components.strong,{children:`Allow`}),` trên mọi thao tác phải nêu tên các kết nối của nó.`]}),`\n`,_jsx(_components.p,{children:`Mỗi Rule có huy hiệu quyền truy cập để bạn nhận ra ngay Rule nào rủi ro:`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Huy hiệu`}),_jsx(_components.th,{children:`Rule bao phủ`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Write`})}),_jsx(_components.td,{children:`Các lệnh gọi thay đổi tài nguyên`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Destructive`})}),_jsx(_components.td,{children:`Lệnh xóa và các lệnh gọi phá hủy khác, chẳng hạn Git force push`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Session`})}),_jsxs(_components.td,{children:[`Các lệnh gọi mở remote shell, chẳng hạn `,_jsx(_components.code,{children:`ssh`})]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Sensitive read`})}),_jsx(_components.td,{children:`Thao tác đọc secret, chẳng hạn một tệp thông tin xác thực. Các thao tác này vẫn chạy, nên phần này của Rule không bao giờ khớp.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Every operation`})}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`*:*`}),`, mọi lệnh gọi trên các kết nối của Rule`]})]})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`tìm-rule-cho-workspace-của-bạn`,children:`Tìm Rule cho workspace của bạn`}),`\n`,_jsx(_components.p,{children:`Check-up là một cuộc chat mà CloudThinker dùng để đọc các kết nối, phát hiện Optimize, sự cố, cảnh báo và lịch sử phê duyệt của bạn, rồi đề xuất Rule để bạn chấp nhận.`}),`\n`,_jsxs(Steps,{children:[_jsxs(Step,{title:`Mở tab Rules`,children:[_jsxs(_components.p,{children:[`Mở `,_jsx(_components.strong,{children:`Approvals`}),` trong sidebar, rồi chọn tab `,_jsx(_components.strong,{children:`Rules`}),`.`]}),_jsx(Frame,{caption:`Tab Rules: các Rule đang hoạt động, các Rule đang chờ xem xét, và Add from template hoặc Find rules`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/cloudthinker/7N5Axt6gSxkmeWiW/images/v2/approvals-rules.webp?fit=max\u0026auto=format\u0026n=7N5Axt6gSxkmeWiW\u0026q=85\u0026s=628b2d66f5933714902a76aee3ef60f3`,alt:`Tab Rules với các tab Active, Needs review và Dismissed, cùng nút Add from template và Find rules`,\"data-og-width\":`2176`,width:`2176`,\"data-og-height\":`1224`,height:`1224`,\"data-path\":`images/v2/approvals-rules.webp`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/cloudthinker/7N5Axt6gSxkmeWiW/images/v2/approvals-rules.webp?w=280\u0026fit=max\u0026auto=format\u0026n=7N5Axt6gSxkmeWiW\u0026q=85\u0026s=d2380c46e2c75c1dff1e4f6e7f4462d5 280w, https://mintcdn.com/cloudthinker/7N5Axt6gSxkmeWiW/images/v2/approvals-rules.webp?w=560\u0026fit=max\u0026auto=format\u0026n=7N5Axt6gSxkmeWiW\u0026q=85\u0026s=97a611ea50253bdb3de5f4a1d3e3a5af 560w, https://mintcdn.com/cloudthinker/7N5Axt6gSxkmeWiW/images/v2/approvals-rules.webp?w=840\u0026fit=max\u0026auto=format\u0026n=7N5Axt6gSxkmeWiW\u0026q=85\u0026s=8b2d9d36caa57c7d70e193be1be2ada8 840w, https://mintcdn.com/cloudthinker/7N5Axt6gSxkmeWiW/images/v2/approvals-rules.webp?w=1100\u0026fit=max\u0026auto=format\u0026n=7N5Axt6gSxkmeWiW\u0026q=85\u0026s=a8d8c09975f069816eef5cd3ca6c83e6 1100w, https://mintcdn.com/cloudthinker/7N5Axt6gSxkmeWiW/images/v2/approvals-rules.webp?w=1650\u0026fit=max\u0026auto=format\u0026n=7N5Axt6gSxkmeWiW\u0026q=85\u0026s=bb1096fb9a22c92d83cddf1b85afc975 1650w, https://mintcdn.com/cloudthinker/7N5Axt6gSxkmeWiW/images/v2/approvals-rules.webp?w=2500\u0026fit=max\u0026auto=format\u0026n=7N5Axt6gSxkmeWiW\u0026q=85\u0026s=40220c41e6dafdd30bf6d27286b89b13 2500w`})})]}),_jsxs(Step,{title:`Chọn nội dung cần tìm`,children:[_jsxs(_components.p,{children:[`Nhấn `,_jsx(_components.strong,{children:`Find rules`}),`. Giữ hoặc bỏ từng trọng tâm:`]}),_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Trọng tâm`}),_jsx(_components.th,{children:`Đề xuất gì`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Hand off toil`})}),_jsx(_components.td,{children:`Rule Allow cho thao tác ghi trên các kết nối development và staging`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Guard production`})}),_jsx(_components.td,{children:`Rule Ask first cho các lệnh gọi phá hủy và session, cùng Ask first hoặc Deny cho các thao tác ghi production mà mọi người đã từ chối`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Clean up Rules`})}),_jsx(_components.td,{children:`Sửa các Rule không được dùng, quá rộng hoặc thiếu kết nối`})]})]})]})]}),_jsxs(Step,{title:`Bắt đầu check-up`,children:[_jsxs(_components.p,{children:[`Nhấn `,_jsx(_components.strong,{children:`Start check-up`}),`. Quá trình mất 5–10 phút và tiêu tốn credit. Trong khi chạy, nút hiển thị `,_jsx(_components.strong,{children:`Check-up running`}),` và mở cuộc chat đó.`]}),_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Trạng thái thành công:`}),` banner trên tab `,_jsx(_components.strong,{children:`Rules`}),` cho biết có bao nhiêu Rule cần bạn xem xét, kèm nút `,_jsx(_components.strong,{children:`Review`}),`.`]})]})]}),`\n`,_jsxs(_components.p,{children:[`Bạn cũng có thể bắt đầu check-up từ bất kỳ cuộc chat nào bằng cách nhập `,_jsx(_components.code,{children:`/find-rules`}),`.`]}),`\n`,_jsx(Heading,{level:`2`,id:`yêu-cầu-một-rule-trong-chat`,children:`Yêu cầu một Rule trong chat`}),`\n`,_jsxs(_components.p,{children:[`Khi bạn đã biết Rule mình muốn, hãy nhập `,_jsx(_components.code,{children:`/create-policy`}),` trong chat. CloudThinker hỏi bạn cần gì, kiểm tra các Rule hiện tại đang làm gì, và đăng một thẻ đề xuất.`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`3`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`3`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`/create-policy Let agents stop and start EC2 instances on aws-staging without asking. Keep everything else on that account as it is.`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`/create-policy Always ask the On-call SRE group before any rds:Delete* call on production.`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`,_jsxs(_components.p,{children:[`Để biến một lệnh gọi bạn vừa phê duyệt thành Rule, nhấn `,_jsx(_components.strong,{children:`Approve and draft rule`}),` trên thẻ phê duyệt của nó. Lệnh gọi chạy ngay, và một cuộc chat bên cạnh soạn Rule.`]}),`\n`,_jsx(Heading,{level:`2`,id:`xem-xét-và-chấp-nhận-rule`,children:`Xem xét và chấp nhận Rule`}),`\n`,_jsxs(Steps,{children:[_jsx(Step,{title:`Mở phần xem xét`,children:_jsxs(_components.p,{children:[`Trên tab `,_jsx(_components.strong,{children:`Rules`}),`, nhấn `,_jsx(_components.strong,{children:`Review`}),` trong banner, hoặc mở tab `,_jsx(_components.strong,{children:`Needs review`}),`.`]})}),_jsx(Step,{title:`Kiểm tra từng Rule`,children:_jsxs(_components.p,{children:[`Mở một Rule để đọc. `,_jsx(_components.strong,{children:`What would change`}),` phát lại các lệnh gọi trong 7 hoặc 30 ngày qua với Rule đó và cho bạn biết bao nhiêu lệnh sẽ chạy không cần hỏi, hỏi trước, hoặc bị từ chối, kèm các lệnh ví dụ.`]})}),_jsxs(Step,{title:`Chọn và chấp nhận`,children:[_jsxs(_components.p,{children:[`Ban đầu không có gì được chọn. Chọn tối đa 50 Rule, rồi nhấn `,_jsx(_components.strong,{children:`Accept`}),` hoặc `,_jsx(_components.strong,{children:`Dismiss`}),`. Với Rule `,_jsx(_components.strong,{children:`Allow`}),` trên mọi thao tác, `,_jsx(_components.strong,{children:`Allow`}),` cho thao tác phá hủy, hoặc `,_jsx(_components.strong,{children:`Allow`}),` bị gắn cờ (nhập từ quyền cũ có bao gồm loại truy cập rủi ro, như lệnh gọi session), bạn sẽ được yêu cầu xác nhận trước.`]}),_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Trạng thái thành công:`}),` một thông báo hiển thị “Accepted N Rules” và đề nghị `,_jsx(_components.strong,{children:`Undo`}),`. Rule nào thất bại sẽ ở lại trong danh sách kèm lý do.`]})]})]}),`\n`,_jsxs(_components.p,{children:[`Các đề xuất tương tự hiển thị dưới dạng thẻ trong cuộc chat đã tạo ra chúng. `,_jsx(_components.strong,{children:`Accept`}),` trên thẻ có tác dụng giống `,_jsx(_components.strong,{children:`Accept`}),` trên tab `,_jsx(_components.strong,{children:`Rules`}),`.`]}),`\n`,_jsx(Note,{children:_jsxs(_components.p,{children:[`Đề xuất nào trùng với `,_jsx(_components.strong,{children:`Always blocked`}),` (danh sách có sẵn gồm các lệnh gọi không bao giờ được chạy) thì không thể chấp nhận. Đề xuất đó sẽ không bao giờ có hiệu lực, nên hãy bỏ qua.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`chỉnh-sửa-vô-hiệu-hóa-hoặc-khôi-phục-rule`,children:`Chỉnh sửa, vô hiệu hóa hoặc khôi phục Rule`}),`\n`,_jsxs(_components.p,{children:[`Mở một Rule trên tab `,_jsx(_components.strong,{children:`Rules`}),`. Với tư cách admin, bạn thấy biểu mẫu chỉnh sửa ngay.`]}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Hành động`}),_jsx(_components.th,{children:`Kết quả`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[_jsx(_components.strong,{children:`Save`}),` trên một Rule đang hoạt động`]}),_jsxs(_components.td,{children:[`Thay thế ngay lập tức. Phiên bản cũ được giữ dưới dạng `,_jsx(_components.strong,{children:`Replaced`}),` và rời khỏi danh sách.`]})]}),_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[_jsx(_components.strong,{children:`Save`}),` trên một đề xuất`]}),_jsxs(_components.td,{children:[`Giữ đề xuất trong `,_jsx(_components.strong,{children:`Needs review`}),`. Chấp nhận để bật đề xuất.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Change with AI`})}),_jsx(_components.td,{children:`Mở một cuộc chat soạn thay đổi dưới dạng đề xuất mới`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Disable`})}),_jsxs(_components.td,{children:[`Ngăn Rule khớp với bất kỳ lệnh gọi nào và chuyển nó sang `,_jsx(_components.strong,{children:`Dismissed`})]})]}),_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[_jsx(_components.strong,{children:`Restore`}),` trên một Rule đã bỏ qua`]}),_jsx(_components.td,{children:`Kích hoạt lại ngay lập tức, không hết hạn`})]})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`window`,children:`Window`}),`\n`,_jsxs(_components.p,{children:[`Window là Rule ngắn hạn, tạo bằng một cú nhấn vào `,_jsx(_components.strong,{children:`Approve for…`}),` trên thẻ phê duyệt. Window chỉ áp dụng cho đúng thao tác và kết nối vừa được duyệt, trong đúng cuộc chat hoặc sự cố đó, và luôn có thời điểm kết thúc: sau `,_jsx(_components.strong,{children:`1 giờ`}),`, khi sự cố kết thúc (`,_jsx(_components.strong,{children:`This incident`}),`), hoặc sau `,_jsx(_components.strong,{children:`30 ngày`}),`. Kể cả Window 30 ngày cũng không áp dụng bên ngoài cuộc chat nơi bạn đã duyệt.`]}),`\n`,_jsxs(_components.p,{children:[`Window hiển thị trên tab `,_jsx(_components.strong,{children:`Rules`}),` với nguồn `,_jsx(_components.strong,{children:`Window`}),` và thời điểm kết thúc. Bạn không thể chỉnh sửa Window. Để kết thúc sớm, nhấn `,_jsx(_components.strong,{children:`Disable`}),` trong menu của dòng.`]}),`\n`,_jsx(Heading,{level:`2`,id:`lọc-danh-sách`,children:`Lọc danh sách`}),`\n`,_jsxs(_components.p,{children:[`Các tab `,_jsx(_components.strong,{children:`Active`}),`, `,_jsx(_components.strong,{children:`Needs review`}),` và `,_jsx(_components.strong,{children:`Dismissed`}),` hiển thị số lượng của chúng. Lọc theo `,_jsx(_components.strong,{children:`Source`}),`, `,_jsx(_components.strong,{children:`Connector`}),`, `,_jsx(_components.strong,{children:`Runs from`}),` hoặc `,_jsx(_components.strong,{children:`Approved by`}),`, hoặc tìm theo tên.`]}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Nguồn`}),_jsx(_components.th,{children:`Ai tạo Rule`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Person`})}),_jsx(_components.td,{children:`Một người trong biểu mẫu Rule`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Agent`})}),_jsx(_components.td,{children:`Một đề xuất của agent hoặc một check-up`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Runbook`})}),_jsx(_components.td,{children:`Một runbook`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Imported`})}),_jsx(_components.td,{children:`Một quyền trust hoặc runbook cũ, hoặc một tệp policy`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Window`})}),_jsxs(_components.td,{children:[_jsx(_components.strong,{children:`Approve for…`}),` trên thẻ phê duyệt`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Template`})}),_jsxs(_components.td,{children:[_jsx(_components.strong,{children:`Add from template`}),` trên tab `,_jsx(_components.strong,{children:`Rules`})]})]})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`xuất-và-nhập-policy`,children:`Xuất và nhập policy`}),`\n`,_jsxs(_components.p,{children:[`Lưu policy của bạn dưới dạng tệp, ví dụ trong Git, và nạp vào workspace khác. Cả hai hành động nằm trong menu `,_jsx(_components.strong,{children:`…`}),` cạnh `,_jsx(_components.strong,{children:`Find rules`}),`.`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Export active Rules`}),` tải xuống `,_jsx(_components.code,{children:`policy-\u003cworkspace>-\u003cdate>.yaml`}),`. Tệp chứa các Rule đang hoạt động, nhóm người phê duyệt, Approval mode và cài đặt hai người. Tệp không bao giờ chứa Window, đề xuất hoặc secret.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Import policy`}),` đọc một tệp YAML hoặc JSON tối đa 1 MB. Trước khi áp dụng, CloudThinker cho bạn xem những gì sẽ thay đổi và liệt kê từng lỗi theo dòng và trường. Tệp chỉ được áp dụng khi bạn nhấn, và vẫn được giữ lại nếu áp dụng thất bại. Import theo kiểu hợp nhất: các Rule trong tệp được thêm hoặc cập nhật theo `,_jsx(_components.code,{children:`slug`}),`, và các Rule không có trong tệp vẫn giữ nguyên. Nếu muốn bỏ các Rule đó, chọn `,_jsx(_components.strong,{children:`Remove Rules that are not in the file`}),`. Các Rule `,_jsx(_components.strong,{children:`Ask first`}),` và `,_jsx(_components.strong,{children:`Deny`}),` được nhập sẽ bắt đầu ở trạng thái hoạt động. Rule `,_jsx(_components.strong,{children:`Allow`}),` được nhập sẽ chờ xem xét trừ khi bạn bật `,_jsx(_components.strong,{children:`Activate Allow Rules`}),`.`]}),`\n`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`19`,language:`yaml`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`yaml`,children:_jsxs(_components.code,{language:`yaml`,numberOfLines:`19`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`version`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`1`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`level`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`auto_ai_ask`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`origin_levels`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` automation`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`auto_ai_refuse`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`approver_groups`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` - `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`name`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`On-call SRE`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` members`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: [`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`sre-lead@example.com`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`]`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`rules`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` - `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`slug`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`stop-staging`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` description`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`Let the agent stop staging instances`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` effect`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`allow`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` connector`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`aws`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` aliases`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: [`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`aws-staging`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`]`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` operations`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: [`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`ec2:StopInstances`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`]`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` - `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`slug`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`ask-before-rds-delete`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` effect`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`require_approval`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` connector`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`aws`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` operations`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: [`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`rds:Delete*`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`]`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` approver_group`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`On-call SRE`})]}),`\n`]})})}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Khóa`}),_jsx(_components.th,{children:`Giá trị`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[_jsx(_components.code,{children:`level`}),`, và mỗi giá trị trong `,_jsx(_components.code,{children:`origin_levels`})]}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`manual`}),`, `,_jsx(_components.code,{children:`auto_rules_ask`}),` (Rules · Ask me), `,_jsx(_components.code,{children:`auto_rules_refuse`}),` (Rules · Refuse), `,_jsx(_components.code,{children:`auto_ai_ask`}),` (Rules + AI · Ask me), `,_jsx(_components.code,{children:`auto_ai_refuse`}),` (Rules + AI · Refuse)`]})]}),_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[`Các khóa `,_jsx(_components.code,{children:`origin_levels`}),`, và `,_jsx(_components.code,{children:`applies_to`}),` của Rule (`,_jsx(_components.strong,{children:`Runs from`}),`)`]}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`chat`}),`, `,_jsx(_components.code,{children:`resolve`}),`, `,_jsx(_components.code,{children:`keeper`}),` (Optimize), `,_jsx(_components.code,{children:`automation`}),`, `,_jsx(_components.code,{children:`review`})]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`effect`})}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`allow`}),`, `,_jsx(_components.code,{children:`require_approval`}),` (Ask first), `,_jsx(_components.code,{children:`deny`})]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`aliases`})}),_jsxs(_components.td,{children:[`Tên kết nối (`,_jsx(_components.strong,{children:`Connections`}),`)`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`description`})}),_jsxs(_components.td,{children:[_jsx(_components.strong,{children:`Note`}),` của Rule`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`expires_at`})}),_jsxs(_components.td,{children:[`Thời điểm kết thúc của Rule (trường `,_jsx(_components.strong,{children:`Window`}),`)`]})]}),_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[_jsx(_components.code,{children:`approver_group`}),`, `,_jsx(_components.code,{children:`two_person`})]}),_jsxs(_components.td,{children:[_jsx(_components.strong,{children:`Who approves this?`}),` và `,_jsx(_components.strong,{children:`Needs 2 different people`})]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`break_glass_blocked`})}),_jsxs(_components.td,{children:[_jsx(_components.strong,{children:`Never allow break-glass`}),`, chỉ với Deny`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`settings.two_person_mode`})}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`off`}),`, `,_jsx(_components.code,{children:`destructive`}),`, `,_jsx(_components.code,{children:`all_writes`})]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`approver_groups[].members`})}),_jsx(_components.td,{children:`Địa chỉ email của thành viên`})]})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`khắc-phục-sự-cố`,children:`Khắc phục sự cố`}),`\n`,_jsxs(AccordionGroup,{children:[_jsx(Accordion,{title:`Find rules không hiển thị`,id:`find-rules-khong-hien-thi`,children:_jsxs(_components.p,{children:[`Công cụ policy của agent chưa được bật cho bản triển khai CloudThinker của bạn, nên check-up, `,_jsx(_components.strong,{children:`Change with AI`}),`, và các lệnh `,_jsx(_components.code,{children:`/find-rules`}),` và `,_jsx(_components.code,{children:`/create-policy`}),` bị ẩn. Đây không phải cài đặt trên trang này. Liên hệ bộ phận hỗ trợ CloudThinker, hoặc người vận hành bản triển khai self-hosted của bạn, để yêu cầu bật. Bạn vẫn có thể chỉnh sửa Rule trong biểu mẫu, thêm từ template, hoặc nhập tệp policy.`]})}),_jsx(Accordion,{title:`Find rules yêu cầu bạn kết nối trước`,id:`find-rules-yeu-cau-ban-ket-noi-truoc`,children:_jsxs(_components.p,{children:[`Check-up cần ít nhất một tài khoản cloud hoặc cluster. Thêm một kết nối trong `,_jsx(_components.a,{href:`/vi/guide/connections/overview`,children:`Connections`}),`, rồi thử lại.`]})}),_jsx(Accordion,{title:`Accept bị tắt`,id:`accept-bi-tat`,children:_jsxs(_components.p,{children:[`Bạn cần vai trò Admin workspace, hoặc Rule trùng với `,_jsx(_components.strong,{children:`Always blocked`}),`. Nếu Rule đã thay đổi sau khi bạn mở, hãy tải lại và xem xét lần nữa.`]})}),_jsx(Accordion,{title:`Tab Rules báo Rules đang ở chế độ preview`,id:`tab-rules-bao-rules-dang-o-che-do-preview`,children:_jsxs(_components.p,{children:[`Rules chưa quyết định trong workspace này. Mỗi lệnh gọi được kiểm tra với chúng và chỉ kết quả được ghi lại, nên bạn có thể xem xét và chấp nhận đề xuất ngay bây giờ. Cho đến khi tính năng thực thi được bật, chỉ `,_jsx(_components.a,{href:`/vi/guide/approvals/approval-mode`,children:`Approval mode`}),` quyết định mỗi thao tác ghi. CloudThinker bật tính năng thực thi cho từng workspace; liên hệ bộ phận hỗ trợ CloudThinker để yêu cầu.`]})}),_jsx(Accordion,{title:`Rule Allow không cho thao tác ghi chạy`,id:`rule-allow-khong-cho-thao-tac-ghi-chay`,children:_jsxs(_components.p,{children:[`Kiểm tra tính năng thực thi trước: nếu tab `,_jsx(_components.strong,{children:`Rules`}),` báo Rules đang ở chế độ preview, chưa có Rule nào quyết định gì (xem ở trên). Sau đó kiểm tra chế độ: `,_jsx(_components.strong,{children:`Manual`}),` hỏi trước mọi thao tác ghi, kể cả thao tác mà một Rule Allow bao phủ. Sau đó kiểm tra `,_jsx(_components.strong,{children:`Runs from`}),` và `,_jsx(_components.strong,{children:`Connections`}),`. Rule chỉ áp dụng cho các loại run và kết nối được nêu trong đó.`]})})]}),`\n`,_jsx(Heading,{level:`2`,id:`bước-tiếp-theo`,children:`Bước tiếp theo`}),`\n`,_jsxs(CardGroup,{cols:2,children:[_jsx(Card,{title:`Approval mode`,icon:`bolt`,href:`/vi/guide/approvals/approval-mode`,children:_jsx(_components.p,{children:`Quyết định điều gì xảy ra với một thao tác ghi mà không Rule nào bao phủ`})}),_jsx(Card,{title:`Người phê duyệt và Activity`,icon:`users`,href:`/vi/guide/approvals/approvers`,children:_jsx(_components.p,{children:`Chọn ai trả lời một Rule Ask first và kiểm tra những gì Rules đã quyết định`})})]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Approval Rules","description":"Tìm, xem xét, chấp nhận và chỉnh sửa các Rule cho phép một thao tác ghi của agent tự chạy, chờ người duyệt, hoặc không bao giờ chạy","icon":"list-check","href":"/vi/guide/approvals/rules"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Điều kiện tiên quyết","slug":"điều-kiện-tiên-quyết","depth":2,"children":[]},{"title":"Rule gồm những gì","slug":"rule-gồm-những-gì","depth":2,"children":[]},{"title":"Tìm Rule cho workspace của bạn","slug":"tìm-rule-cho-workspace-của-bạn","depth":2,"children":[]},{"title":"Yêu cầu một Rule trong chat","slug":"yêu-cầu-một-rule-trong-chat","depth":2,"children":[]},{"title":"Xem xét và chấp nhận Rule","slug":"xem-xét-và-chấp-nhận-rule","depth":2,"children":[]},{"title":"Chỉnh sửa, vô hiệu hóa hoặc khôi phục Rule","slug":"chỉnh-sửa-vô-hiệu-hóa-hoặc-khôi-phục-rule","depth":2,"children":[]},{"title":"Window","slug":"window","depth":2,"children":[]},{"title":"Lọc danh sách","slug":"lọc-danh-sách","depth":2,"children":[]},{"title":"Xuất và nhập policy","slug":"xuất-và-nhập-policy","depth":2,"children":[]},{"title":"Khắc phục sự cố","slug":"khắc-phục-sự-cố","depth":2,"children":[]},{"title":"Bước tiếp theo","slug":"bước-tiếp-theo","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"cloudthinker","siteName":"CloudThinker","title":"Approval Rules - CloudThinker","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{"en":{"href":"/guide/approvals/rules","matchLevel":1},"vi":{"href":"/vi/guide/approvals/rules","matchLevel":0},"ja":{"href":"/guide/approvals/rules","matchLevel":1},"ko":{"href":"/guide/approvals/rules","matchLevel":1}}},"lastModified":"2026-10-28T02:14:48.301Z","originalFileLocation":"vi/guide/approvals/rules.mdx","locale":"vi"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Tìm, xem xét, chấp nhận và chỉnh sửa các Rule cho phép một thao tác ghi của agent tự chạy, chờ người duyệt, hoặc không bao giờ chạy\">\u003cmeta data-mint-head name=\"application-name\" content=\"CloudThinker\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/cloudthinker/2UjfrgdSjUW0wAzv/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/cloudthinker/2UjfrgdSjUW0wAzv/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/cloudthinker/2UjfrgdSjUW0wAzv/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/cloudthinker/2UjfrgdSjUW0wAzv/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/cloudthinker/2UjfrgdSjUW0wAzv/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/cloudthinker/2UjfrgdSjUW0wAzv/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/cloudthinker/2UjfrgdSjUW0wAzv/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/cloudthinker/2UjfrgdSjUW0wAzv/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/cloudthinker/2UjfrgdSjUW0wAzv/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Approval Rules - CloudThinker\">\u003cmeta data-mint-head property=\"og:description\" content=\"Tìm, xem xét, chấp nhận và chỉnh sửa các Rule cho phép một thao tác ghi của agent tự chạy, chờ người duyệt, hoặc không bao giờ chạy\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"CloudThinker\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.cloudthinker.io/vi/guide/approvals/rules\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://cloudthinker.mintlify.app/_mintlify/api/og/v2?division=Approvals\u0026amp;title=Approval+Rules\u0026amp;description=T%C3%ACm%2C+xem+x%C3%A9t%2C+ch%E1%BA%A5p+nh%E1%BA%ADn+v%C3%A0+ch%E1%BB%89nh+s%E1%BB%ADa+c%C3%A1c+Rule+cho+ph%C3%A9p+m%E1%BB%99t+thao+t%C3%A1c+ghi+c%E1%BB%A7a+agent+t%E1%BB%B1+ch%E1%BA%A1y%2C+ch%E1%BB%9D+ng%C6%B0%E1%BB%9Di+duy%E1%BB%87t%2C+ho%E1%BA%B7c+kh%C3%B4ng+bao+gi%E1%BB%9D+ch%E1%BA%A1y\u0026amp;theme=a662466b4ca99701c5f8fbf0\u0026amp;signature=434ca59d104af7c4cc784158c743fe83de4f631eaedd644287f4c6ba5b536916\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Approval Rules - CloudThinker\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Tìm, xem xét, chấp nhận và chỉnh sửa các Rule cho phép một thao tác ghi của agent tự chạy, chờ người duyệt, hoặc không bao giờ chạy\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://cloudthinker.mintlify.app/_mintlify/api/og/v2?division=Approvals\u0026amp;title=Approval+Rules\u0026amp;description=T%C3%ACm%2C+xem+x%C3%A9t%2C+ch%E1%BA%A5p+nh%E1%BA%ADn+v%C3%A0+ch%E1%BB%89nh+s%E1%BB%ADa+c%C3%A1c+Rule+cho+ph%C3%A9p+m%E1%BB%99t+thao+t%C3%A1c+ghi+c%E1%BB%A7a+agent+t%E1%BB%B1+ch%E1%BA%A1y%2C+ch%E1%BB%9D+ng%C6%B0%E1%BB%9Di+duy%E1%BB%87t%2C+ho%E1%BA%B7c+kh%C3%B4ng+bao+gi%E1%BB%9D+ch%E1%BA%A1y\u0026amp;theme=a662466b4ca99701c5f8fbf0\u0026amp;signature=434ca59d104af7c4cc784158c743fe83de4f631eaedd644287f4c6ba5b536916\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/cloudthinker/2UjfrgdSjUW0wAzv/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"CloudThinker\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#0c93c0\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.cloudthinker.io/vi/guide/approvals/rules\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/vi/guide/approvals/rules.md\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"vi\" href=\"https://docs.cloudthinker.io/vi/guide/approvals/rules\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"en\" href=\"https://docs.cloudthinker.io/guide/approvals/rules\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"ja\" href=\"https://docs.cloudthinker.io/guide/approvals/rules\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"ko\" href=\"https://docs.cloudthinker.io/guide/approvals/rules\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"x-default\" href=\"https://docs.cloudthinker.io/guide/approvals/rules\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.cloudthinker.io/#organization\",\"name\":\"CloudThinker\",\"url\":\"https://docs.cloudthinker.io\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/cloudthinker/-4m9DUjwzDxHfABz/logo/light.svg?fit=max\u0026auto=format\u0026n=-4m9DUjwzDxHfABz\u0026q=85\u0026s=a56a571509d1cd246f5b0e68db015e5f\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.cloudthinker.io#website\",\"name\":\"CloudThinker\",\"url\":\"https://docs.cloudthinker.io\",\"publisher\":{\"@id\":\"https://docs.cloudthinker.io/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.cloudthinker.io/vi/guide/approvals/rules#webpage\",\"url\":\"https://docs.cloudthinker.io/vi/guide/approvals/rules\",\"name\":\"Approval Rules\",\"description\":\"Tìm, xem xét, chấp nhận và chỉnh sửa các Rule cho phép một thao tác ghi của agent tự chạy, chờ người duyệt, hoặc không bao giờ chạy\",\"dateModified\":\"2026-10-28T02:14:48.301Z\",\"isPartOf\":{\"@id\":\"https://docs.cloudthinker.io#website\"},\"breadcrumb\":{\"@id\":\"https://docs.cloudthinker.io/vi/guide/approvals/rules#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.cloudthinker.io/vi/guide/approvals/rules#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Approvals\",\"item\":\"https://docs.cloudthinker.io/vi/guide/approvals/overview\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Approval Rules\",\"item\":\"https://docs.cloudthinker.io/vi/guide/approvals/rules\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.cloudthinker.io/vi/guide/approvals/rules#article\",\"headline\":\"Approval Rules\",\"name\":\"Approval Rules\",\"description\":\"Tìm, xem xét, chấp nhận và chỉnh sửa các Rule cho phép một thao tác ghi của agent tự chạy, chờ người duyệt, hoặc không bao giờ chạy\",\"url\":\"https://docs.cloudthinker.io/vi/guide/approvals/rules\",\"mainEntityOfPage\":{\"@id\":\"https://docs.cloudthinker.io/vi/guide/approvals/rules#webpage\"},\"dateModified\":\"2026-10-28T02:14:48.301Z\",\"publisher\":{\"@id\":\"https://docs.cloudthinker.io/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.cloudthinker.io#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"CloudThinker\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"CloudThinker","nav":{"global":null,"languages":[{"language":"en","pages":[{"title":"en","href":"/guide/approvals/rules"}]},{"language":"vi","tabs":[{"tab":"Bắt đầu","pages":[{"title":"Bắt đầu","href":"/vi"}]},{"tab":"Sản phẩm","pages":[{"title":"Sản phẩm","href":"/vi/guide/incident/overview"}]},{"tab":"Nền tảng","groups":[{"group":"Kết nối","pages":[{"title":"Connections","icon":"plug","href":"/vi/guide/connections/overview"},{"group":"Cloud Platforms","pages":[{"title":"Amazon Web Services","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/aws.svg","href":"/vi/guide/connections/aws"},{"title":"Google Cloud Platform","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/gcp.svg","href":"/vi/guide/connections/gcp"},{"title":"Microsoft Azure","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/azure.svg","href":"/vi/guide/connections/azure"},{"title":"Firebase","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/firebase.svg","href":"/vi/guide/connections/firebase"},{"title":"Cloudflare","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/cloudflare.svg","href":"/vi/guide/connections/cloudflare"},{"title":"Vercel","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/vercel.svg","href":"/vi/guide/connections/vercel"},{"title":"Netlify","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/netlify.svg","href":"/vi/guide/connections/netlify"},{"title":"Heroku","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/heroku.svg","href":"/vi/guide/connections/heroku"},{"title":"Render","icon":"server","href":"/vi/guide/connections/render"},{"title":"DigitalOcean","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/digitalocean.svg","href":"/vi/guide/connections/digitalocean"},{"title":"Fly.io","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/flyio.svg","href":"/vi/guide/connections/flyio"},{"title":"GreenNode","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/greennode.svg","href":"/vi/guide/connections/greennode"},{"title":"FPT Cloud","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/fptcloud.svg","href":"/vi/guide/connections/fptcloud"},{"title":"OpenStack","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/openstack.svg","href":"/vi/guide/connections/openstack"},{"title":"VMware vCenter","icon":"server","href":"/vi/guide/connections/vmware"}]},{"group":"Infrastructure \u0026 Access","pages":[{"title":"Kubernetes","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/kubernetes.svg","href":"/vi/guide/connections/kubernetes"},{"title":"Rancher","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/rancher.svg","href":"/vi/guide/connections/rancher"},{"title":"Pulumi","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/pulumi.svg","href":"/vi/guide/connections/pulumi"},{"title":"HCP Terraform","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/terraform.svg","href":"/vi/guide/connections/terraform"},{"title":"SSH","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/ssh.svg","href":"/vi/guide/connections/ssh"},{"title":"HashiCorp Vault","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/vault.svg","href":"/vi/guide/connections/vault"},{"title":"Keycloak","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/keycloak.svg","href":"/vi/guide/connections/keycloak"},{"title":"Backstage","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/backstage.svg","href":"/vi/guide/connections/backstage"},{"title":"Okta","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/okta.svg","href":"/vi/guide/connections/okta"}]},{"group":"Databases","pages":[{"title":"PostgreSQL","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/postgresql.svg","href":"/vi/guide/connections/postgresql"},{"title":"CockroachDB","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/cockroachdb.svg","href":"/vi/guide/connections/cockroachdb"},{"title":"MySQL","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/mysql.svg","href":"/vi/guide/connections/mysql"},{"title":"MongoDB","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/mongodb.svg","href":"/vi/guide/connections/mongodb"},{"title":"Redis","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/redis.svg","href":"/vi/guide/connections/redis"},{"title":"ClickHouse","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/clickhouse.svg","href":"/vi/guide/connections/clickhouse"},{"title":"Apache Cassandra","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/cassandra.svg","href":"/vi/guide/connections/cassandra"},{"title":"Snowflake","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/snowflake.svg","href":"/vi/guide/connections/snowflake"},{"title":"Databricks","icon":"layer-group","href":"/vi/guide/connections/databricks"},{"title":"Neon","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/neon.svg","href":"/vi/guide/connections/neon"},{"title":"Supabase","icon":"bolt","href":"/vi/guide/connections/supabase"},{"title":"Elasticsearch","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/elasticsearch.svg","href":"/vi/guide/connections/elasticsearch"},{"title":"OpenSearch","icon":"magnifying-glass-chart","href":"/vi/guide/connections/opensearch"},{"title":"InfluxDB","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/influxdb.svg","href":"/vi/guide/connections/influxdb"},{"title":"Microsoft SQL Server","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/mssql.svg","href":"/vi/guide/connections/mssql"},{"title":"Pinecone","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/pinecone.svg","href":"/vi/guide/connections/pinecone"}]},{"group":"Messaging \u0026 Streaming","pages":[{"title":"Apache Kafka","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/kafka.svg","href":"/vi/guide/connections/kafka"},{"title":"RabbitMQ","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/rabbitmq.svg","href":"/vi/guide/connections/rabbitmq"},{"title":"Flespi","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/flespi.svg","href":"/vi/guide/connections/flespi"}]},{"group":"Observability \u0026 Monitoring","pages":[{"title":"Grafana","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/grafana.svg","href":"/vi/guide/connections/grafana"},{"title":"Prometheus","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/prometheus.svg","href":"/vi/guide/connections/prometheus"},{"title":"PRTG Network Monitor","href":"/vi/guide/connections/prtg"},{"title":"Datadog","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/datadog.svg","href":"/vi/guide/connections/datadog"},{"title":"New Relic","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/newrelic.svg","href":"/vi/guide/connections/newrelic"},{"title":"Dynatrace","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/dynatrace.svg","href":"/vi/guide/connections/dynatrace"},{"title":"AppDynamics","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/appdynamics.svg","href":"/vi/guide/connections/appdynamics"},{"title":"Coralogix","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/coralogix.svg","href":"/vi/guide/connections/coralogix"},{"title":"SigNoz","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/signoz.svg","href":"/vi/guide/connections/signoz"},{"title":"Honeycomb","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/honeycomb.svg","href":"/vi/guide/connections/honeycomb"},{"title":"Splunk Observability","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/splunkobservability.svg","href":"/vi/guide/connections/splunkobservability"},{"title":"Sumo Logic","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/sumologic.svg","href":"/vi/guide/connections/sumologic"},{"title":"Graylog","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/graylog.svg","href":"/vi/guide/connections/graylog"},{"title":"Zabbix","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/zabbix.svg","href":"/vi/guide/connections/zabbix"},{"title":"Better Stack","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/betterstack.svg","href":"/vi/guide/connections/betterstack"},{"title":"Rollbar","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/rollbar.svg","href":"/vi/guide/connections/rollbar"},{"title":"Sentry","icon":"bug","href":"/vi/guide/connections/sentry"},{"title":"Langfuse","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/langfuse.svg","href":"/vi/guide/connections/langfuse"},{"title":"PostHog","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/posthog.svg","href":"/vi/guide/connections/posthog"},{"title":"Splunk Platform","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/splunkplatform.svg","href":"/vi/guide/connections/splunkplatform"},{"title":"Braintrust","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/braintrust.svg","href":"/vi/guide/connections/braintrust"},{"title":"LangSmith","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/langsmith.svg","href":"/vi/guide/connections/langsmith"},{"title":"UptimeRobot","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/uptimerobot.svg","href":"/vi/guide/connections/uptimerobot"},{"title":"Microsoft Clarity","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/clarity.svg","href":"/vi/guide/connections/clarity"}]},{"group":"CI/CD \u0026 Code Quality","pages":[{"title":"GitHub","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/github.svg","href":"/vi/guide/connections/github"},{"title":"GitLab","icon":"gitlab","href":"/vi/guide/connections/gitlab"},{"title":"Bitbucket","icon":"bitbucket","href":"/vi/guide/connections/bitbucket"},{"title":"Azure DevOps","icon":"microsoft","href":"/vi/guide/connections/azure-devops"},{"title":"Jenkins","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/jenkins.svg","href":"/vi/guide/connections/jenkins"},{"title":"CircleCI","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/circleci.svg","href":"/vi/guide/connections/circleci"},{"title":"Buildkite","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/buildkite.svg","href":"/vi/guide/connections/buildkite"},{"title":"Docker Hub","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/dockerhub.svg","href":"/vi/guide/connections/dockerhub"},{"title":"ArgoCD","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/argocd.svg","href":"/vi/guide/connections/argocd"},{"title":"AWX","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/awx.svg","href":"/vi/guide/connections/awx"},{"title":"SonarQube","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/sonarqube.svg","href":"/vi/guide/connections/sonarqube"},{"title":"GitGuardian","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/gitguardian.svg","href":"/vi/guide/connections/gitguardian"},{"title":"Harness","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/harness.svg","href":"/vi/guide/connections/harness"},{"title":"AWS CodeCommit","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/aws-codecommit.svg","href":"/vi/guide/connections/aws-codecommit"},{"title":"Semgrep","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/semgrep.svg","href":"/vi/guide/connections/semgrep"}]},{"group":"Incident \u0026 Ticketing","pages":[{"title":"PagerDuty","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/pagerduty.svg","href":"/vi/guide/connections/pagerduty"},{"title":"Rootly","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/rootly.svg","href":"/vi/guide/connections/rootly"},{"title":"ServiceNow","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/servicenow.svg","href":"/vi/guide/connections/servicenow"},{"title":"Atlassian","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/atlassian.svg","href":"/vi/guide/connections/atlassian"},{"title":"Jira Service Management","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/jsm.svg","href":"/vi/guide/connections/jsm"},{"title":"Backlog","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/backlog.svg","href":"/vi/guide/connections/backlog"},{"title":"monday.com","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/monday.svg","href":"/vi/guide/connections/monday"},{"title":"Linear","icon":"list-check","href":"/vi/guide/connections/linear"},{"title":"Notion","icon":"book-open","href":"/vi/guide/connections/notion"},{"title":"ClickUp","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/clickup.svg","href":"/vi/guide/connections/clickup"},{"title":"Asana","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/asana.svg","href":"/vi/guide/connections/asana"},{"title":"HubSpot","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/hubspot.svg","href":"/vi/guide/connections/hubspot"},{"title":"FireHydrant","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/firehydrant.svg","href":"/vi/guide/connections/firehydrant"}]},{"group":"Security \u0026 Compliance","pages":[{"title":"FortiGate","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/fortigate.svg","href":"/vi/guide/connections/fortigate"},{"title":"Prowler","icon":"shield-check","href":"/vi/guide/connections/prowler"},{"title":"Wazuh","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/wazuh.svg","href":"/vi/guide/connections/wazuh"},{"title":"Drata","icon":"clipboard-check","href":"/vi/guide/connections/drata"}]},{"group":"Custom MCP","pages":[{"title":"MCP","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/mcp.svg","href":"/vi/guide/connections/mcp"}]}]},{"group":"Customize","pages":[{"title":"Dạy CloudThinker","icon":"graduation-cap","href":"/vi/guide/teach-cloudthinker"},{"title":"Bắt đầu nhanh với agent tùy chỉnh","icon":"rocket","href":"/vi/guide/agents/quickstart"},{"title":"Skill tùy chỉnh","icon":"wand-magic-sparkles","href":"/vi/guide/skills/custom-skills"},{"title":"Định dạng skill","icon":"file-code","href":"/vi/guide/skills/skill-format"}]},{"group":"Approvals","pages":[{"title":"Approvals","description":"Quyết định thao tác ghi nào của agent tự chạy, thao tác nào chờ người duyệt và thao tác nào không bao giờ chạy, đồng thời trả lời yêu cầu phê duyệt.","icon":"shield-check","href":"/vi/guide/approvals/overview"},{"title":"Approval Rules","icon":"list-check","href":"/vi/guide/approvals/rules"},{"title":"Approval Mode","description":"Chọn Manual hoặc Auto cho workspace, từng loại run, một Automation hoặc một cuộc chat, và xem mỗi lựa chọn hoạt động thế nào","icon":"bolt","href":"/vi/guide/approvals/approval-mode"},{"title":"Người phê duyệt và Activity","icon":"users","href":"/vi/guide/approvals/approvers"}]},{"group":"Cài đặt workspace","pages":[{"title":"Workspace Settings","icon":"gear","href":"/vi/guide/workspace-settings"},{"title":"Thành viên workspace","icon":"users","href":"/vi/guide/workspace-users"},{"title":"Thương hiệu workspace","icon":"palette","href":"/vi/guide/workspace-branding"},{"title":"Skill","icon":"sparkles","href":"/vi/guide/skills/overview"},{"title":"Bộ nhớ workspace","icon":"brain-circuit","href":"/vi/guide/memory"},{"title":"Dreaming","icon":"moon","href":"/vi/guide/memory-dreaming"},{"title":"Customize","icon":"wand-magic-sparkles","href":"/vi/guide/agents/customize"},{"title":"Knowledge Base","icon":"book","href":"/vi/guide/knowledge"},{"title":"Credentials","icon":"vault","href":"/vi/guide/credentials"},{"title":"Thông báo","icon":"bell","href":"/vi/guide/notifications"}]},{"group":"Admin Settings","pages":[{"title":"Admin Settings","icon":"building","href":"/vi/guide/admin-settings"},{"title":"Tổ chức","icon":"building-columns","href":"/vi/guide/organization"},{"title":"Workspaces","icon":"building","href":"/vi/guide/workspaces"},{"title":"Quản lý gói đăng ký","icon":"file-invoice-dollar","href":"/vi/guide/billing/subscription"},{"title":"Bảng giá","icon":"credit-card","href":"/vi/guide/billing/pricing"},{"title":"Giới hạn credit","icon":"sliders","href":"/vi/guide/billing/credit-limits"},{"title":"Mức sử dụng và credit","icon":"coins","href":"/vi/guide/billing/usage"},{"title":"Capabilities","icon":"toggle-on","href":"/vi/guide/capabilities"},{"title":"Sandbox tự host (Workers)","sidebarTitle":"Sandbox tự host (Workers)","icon":"server","href":"/vi/guide/workers"}]},{"group":"Triển khai","pages":[{"title":"Các phương án triển khai","sidebarTitle":"Triển khai","icon":"server","href":"/vi/guide/deployment/overview"}]},{"group":"Artifacts và chia sẻ","pages":[{"title":"Artifacts","icon":"chart-mixed","href":"/vi/guide/artifacts/overview"},{"title":"Chia sẻ","icon":"share-nodes","href":"/vi/guide/sharing"}]}]},{"tab":"Doanh nghiệp","pages":[{"title":"Doanh nghiệp","href":"/vi/guide/security/overview"}]},{"tab":"Nhà phát triển","pages":[{"title":"Nhà phát triển","href":"/vi/guide/api/overview"}]},{"tab":"Tài nguyên","pages":[{"title":"Tài nguyên","href":"/vi/learn/aio/introduction"}]},{"tab":"Nhật ký thay đổi","pages":[{"title":"Nhật ký thay đổi","href":"/changelog"}]},{"tab":"Bảng giá","href":"https://cloudthinker.io/pricing"}]},{"language":"ja","pages":[{"title":"ja","href":"/guide/approvals/rules"}]},{"language":"ko","pages":[{"title":"ko","href":"/guide/approvals/rules"}]}]},"title":"Approval Rules - CloudThinker","buildId":"dpl_2oYXwqkEXirXBPk8wV1FtM5USFWi","deploymentId":"dpl_2oYXwqkEXirXBPk8wV1FtM5USFWi","dynamics":["07c022d89b","a74be98ba7"],"chunks":["Frame-BbYRHtLl.js","DynamicMarkdown-DN96a4Ur.js","zoom-image-lightbox-D7yRe3On.js","lightbox-handle-r17bVUz3.js"]}