Quy Tắc Phân Quyền Claude Code: Đường Dẫn 'path' Chỉ Có Tác Dụng Với Read/Edit
Phân tích chuyên sâu cơ chế bảo vệ tệp nhạy cảm trong Claude Code: vì sao deny Write(.env) không hoạt động, nguy cơ rò rỉ qua Grep(path) và giải pháp thiết lập bảo mật chuẩn.
Thông tin bài viết gốc & Loại nội dung
- Tác giả: kai_kou
- Tiêu đề gốc: Claude Code権限ルール、pathが効くのはRead/Editだけ
- Nguồn: Qiita (Công bố ngày 17/10/2026 - Qiita ID:
7a358290f3d5f6e8967c) - Loại nội dung: Trích đoạn ngắn nguyên văn đối chiếu kèm bài đọc tiếng Nhật chuyên ngành do đội ngũ biên soạn phát triển toàn diện dựa trên phát hiện kỹ thuật thực tế của tác giả.
Hero image là sơ đồ khái niệm SVG 1200×675 do BrSE.vn tự vẽ, phát hành theo giấy phép CC0 1.0. Alt của ảnh là tiêu đề bài viết. Minh họa trực quan ranh giới đánh giá thuộc tính path giữa các công cụ trong Claude Code.
Mục tiêu học tập
- Kiến thức công nghệ: Nắm vững cấu trúc phân loại công cụ đọc/ghi trong hệ thống quyền hạn của Claude Code (v2.1.300), hiểu rõ cách thức hoạt động của
permissions.denyvà cách khắc phục lỗ hổng rò rỉ dữ liệu qua công cụ tìm kiếm nội dung tệp. - Năng lực tiếng Nhật: Luyện đọc và phân tích cấu trúc câu tiếng Nhật kỹ thuật chuyên sâu về quản lý bảo mật, các dạng câu điều kiện giả định (
〜たつもり,〜かねない), đại từ chỉ định và ngữ pháp N2/N1 trong văn cảnh báo cáo an toàn thông tin.
Key Takeaways
- Ảo tưởng an toàn với cấu hình sai: Viết
"deny": ["Write(.env)"]trong.claude/settings.jsonhoàn toàn không bảo vệ được tệp.envvì bộ kiểm tra quyền hạn của Claude Code chỉ đánh giá đường dẫn đối với hai danh mục chính làReadvàEdit. - Lỗ hổng Grep(path) không có cảnh báo: Trong phiên bản v2.1.300, mặc dù các cú pháp
Write(path)đã bị cảnh báo lúc khởi động, cú phápGrep(path)vẫn bị bỏ qua một cách im lặng và cho phép đọc nội dung tệp bí mật. - Quy tắc vàng để khóa tệp nhạy cảm: Chỉ cần cấu hình một dòng duy nhất
"deny": ["Read(./secret/**)"]là có thể chặn đồng thời cả thao tác đọc và các thao tác ghi phát sinh từEditlẫnWrite.
Nội dung Bài học & Đọc hiểu Nhật – Việt
Phần 1: Thực trạng thiết lập sai quyền hạn và sự ngộ nhận của lập trình viên
(第1部:設定の誤解と開発者の思い込み)
.claude/settings.json に Write(.env) と書いて、.env への書き込みを塞いだつもりになっていないでしょうか。Claude Code はこのルールを読み込みますが、ファイルの権限チェックでは一度も参照しません。書いた本人だけが「守られている」と思い込む状態が、設定ファイルの中に静かに残ります。
Bản dịch tiếng Việt tương ứng
Liệu bạn có đang đinh ninh rằng mình đã ngăn chặn thành công việc ghi đè vào tệp .env chỉ bằng cách khai báo Write(.env) trong .claude/settings.json hay không? Thực tế, Claude Code tuy vẫn tải quy tắc này vào bộ nhớ nhưng lại không bao giờ tham chiếu đến nó trong quá trình kiểm tra quyền truy cập tệp. Tình trạng mà chỉ riêng người viết tự huyễn hoặc rằng hệ thống “đang được bảo vệ” vẫn âm thầm tồn tại bên trong tệp cấu hình.
自律型AIエージェントを開発に導入する際、最も警戒すべきなのは、設定したはずのセキュリティ制約が機能していない事態です。ツール名の指定に誤解があると、CIや自動化パイプラインにおいて重大な機密漏洩を引き起こしかねません。
Bản dịch đoạn đọc mở rộng
Khi áp dụng các AI Agent tự hành vào quy trình phát triển phần mềm, điều đáng báo động nhất chính là tình huống các ràng buộc bảo mật mà ta ngỡ đã thiết lập lại hoàn toàn không phát huy tác dụng. Nếu có sự hiểu lầm trong việc chỉ định tên công cụ, điều đó rất có thể dẫn tới sự cố rò rỉ thông tin mật nghiêm trọng trong hệ thống CI hoặc các đường ống tự động hóa.
- Giải thích kỹ thuật: Claude Code quản lý tệp theo 2 danh mục trừu tượng (Read/Edit). Quy tắc đường dẫn
pathkhông áp dụng riêng lẻ cho từng tên tool ngoại vi nhưWritehayMultiEditcũ mà chỉ áp dụng theo cơ chế gộp. - Phân tích câu khó:
- Cụm
〜たつもりになっていないでしょうか: Đặt câu hỏi tu từ mang sắc thái cảnh báo người đọc đang có niềm tin sai lệch về hành vi của hệ thống. - Cụm
書いた本人だけが...思い込む状態が、設定ファイルの中に静かに残ります: Chủ ngữ chính là状態(trạng thái), vị ngữ là残ります(tồn tại/lưu lại), động từ思い込むthể hiện sự ngộ nhận chủ quan.
- Cụm
Phần 2: Kiểm chứng thực nghiệm với Grep(path) và cơ chế Read deny
(第2部:Grep(path)の実測検証とRead拒否の波及効果)
秘密ファイルを守る目的なら、Read(path) の deny 1行で読み取りと Edit・Write による書き込みの両方を塞げます。警告が出ない Grep(path) は実際には効いておらず、中身をそのまま返してしまうため、完全な防護には Read ルールの設定が不可欠です。
Bản dịch tiếng Việt tương ứng
Nếu mục đích là bảo vệ tệp bí mật, chỉ một dòng deny áp dụng cho Read(path) là đủ để ngăn chặn cả thao tác đọc lẫn hành vi ghi đè thông qua Edit và Write. Ngược lại, cú pháp Grep(path) dù không phát cảnh báo lúc khởi động nhưng thực tế lại không hề có hiệu lực và vẫn trả về nguyên vẹn nội dung tệp; vì thế việc thiết lập quy tắc Read là điều kiện tiên quyết để bảo vệ trọn vẹn.
- Giải thích kỹ thuật: Tác giả thực hiện kiểm nghiệm bằng lệnh
claude -pvới tệp chứa chuỗiTOKEN=abc123. Khi đặtdeny: ["Grep(./secret/**)"], công cụ Grep vẫn trả về token thành công. Nhưng khi đổi thànhdeny: ["Read(./secret/**)"], lệnh Grep lập tức bị chặn với thông báo lỗiPermission to read ... has been denied. - Phân tích câu khó:
- Từ nối
ため(chỉ nguyên nhân) kết nối vế câu thực tế không có hiệu lực với vế kết luận cần thiết lập quy tắc Read. - Động từ
塞ぐ(ふさぐ - đóng lại / chặn đứng) thường được dùng trong bảo mật mạng với nghĩa khóa chặt các lỗ hổng truy cập.
- Từ nối
Ví dụ Cấu hình Thực tế & Giới hạn Áp dụng
Dưới đây là mẫu cấu hình chuẩn xác cho .claude/settings.json trong dự án phối hợp với đối tác Nhật Bản:
{
"permissions": {
"deny": [
"Read(./.env*)",
"Read(./config/secrets/**)",
"Edit(./.env*)",
"Edit(./config/secrets/**)",
"Bash(rm -rf *)",
"Bash(git push --force *)"
]
}
}
Giới hạn kỹ thuật cần lưu ý:
- Trường hợp ngoại lệ NotebookEdit: Theo tài liệu chính thức từ Anthropic, công cụ
NotebookEditdùng cho Jupyter Notebook không chịu sự điều phối tự động từ quy tắc phủ địnhRead. Với các dự án Data/AI có tệp.ipynb, bắt buộc phải bổ sung quy tắcEdit(path)cụ thể. - Quyền chạy Shell: Phân quyền tệp chỉ kiểm soát công cụ tệp của Claude Code. Nếu Agent được cấp quyền chạy lệnh Bash tự do (
Bash), nó vẫn có thể dùng lệnhcathoặcpythonđể đọc tệp nếu không được cô lập qua container/sandbox.
6. Học tiếng Nhật qua chủ đề — 技術日本語を学ぶ
6.1. Sổ tay thuật ngữ Phân quyền và Bảo mật Claude Code
Bảng tổng hợp các thuật ngữ cốt lõi về phân quyền tệp, quản lý quyền hạn và phòng chống rò rỉ dữ liệu trong AI coding:
| Thuật ngữ Nhật | Furigana | Hán Việt | Nghĩa tiếng Việt / English | Câu ví dụ Nhật | Dịch nghĩa |
|---|---|---|---|---|---|
| 権限 | けんげん | Quyền Hạn | Quyền hạn, đặc quyền truy cập (Permissions) | 権限設定を定期的に見直す。 | Rà soát định kỳ thiết lập quyền hạn. |
| 塞ぐ | ふさぐ | Tắc | Chặn đứng, bịt kín (lỗ hổng, nguy cơ) | セキュリティホールを迅速に塞ぐ。 | Kịp thời bịt kín lỗ hổng bảo mật. |
| 思い込む | おもいこむ | Tư Khâm | Đinh ninh, ngộ nhận chủ quan | 安全だと思い込むのは危険である。 | Đinh ninh là an toàn sẽ rất nguy hiểm. |
| 警告 | けいこく | Cảnh Cáo | Cảnh báo, thông báo lỗi nguy cơ | 設定不備による起動時警告を確認する。 | Kiểm tra cảnh báo khởi động do cấu hình sai. |
| 制約 | せいやく | Chế Ước | Ràng buộc, điều kiện hạn chế | セキュリティ制約が正しく機能しているか検証する。 | Kiểm chứng xem ràng buộc bảo mật có hoạt động đúng không. |
| 漏洩 | ろうえい | Lậu Duệ | Rò rỉ thông tin mật (Leakage) | CIパイプラインでの機密漏洩を防止する。 | Phòng chống rò rỉ bí mật trong pipeline CI. |
| 秘密 | ひみつ | Bí Mật | Bí mật, tệp cấu hình mật (Secret) | 秘密ファイルを安全に保護する。 | Bảo vệ an toàn tệp bí mật. |
| 防護 | ぼうご | Phòng Hộ | Phòng vệ, bảo vệ an toàn (Protection) | 完全な防護にはReadルールの指定が必要だ。 | Để phòng hộ hoàn toàn cần chỉ định quy tắc Read. |
| 不可欠 | ふかけつ | Bất Khả Khiết | Không thể thiếu, tất yếu | チーム開発における厳格な監査は不可欠だ。 | Kiểm toán nghiêm ngặt là tất yếu trong dự án. |
| 参照 | さんしょう | Tham Chiếu | Tham chiếu, tra cứu dữ liệu (Reference) | ファイルの権限チェックでルールを参照する。 | Tham chiếu quy tắc khi kiểm tra quyền truy cập tệp. |
| 波及 | はきゅう | Ba Cập | Lan truyền, ảnh hưởng dây chuyền (Ripple effect) | 1行の拒否ルールが全体に波及する。 | Một dòng quy tắc từ chối sẽ lan tỏa hiệu lực ra toàn bộ. |
| 監査 | かんさ | Giám Tra | Kiểm toán, thanh tra an toàn (Audit) | アクセスログを監査して不正を検知する。 | Kiểm toán nhật ký truy cập để phát hiện hành vi bất thường. |
Tra cứu Kanji trong bài
6.2. Ngữ pháp và mẫu diễn đạt trọng tâm
Bảng tổng hợp các cấu trúc ngữ pháp dùng trong phân tích an toàn thông tin và báo cáo kỹ thuật:
| Mẫu | Ý nghĩa | Ví dụ |
|---|---|---|
| 〜たつもり | Đinh ninh rằng đã làm gì đó / Cứ ngỡ là… | 書き込みを塞いだつもりになっていた。 |
| 〜かねない | Rất có thể sẽ dẫn đến kết quả xấu | 重大な機密漏洩を引き起こしかねない。 |
| 〜に基づいて | Dựa trên cơ sở / Căn cứ vào | セキュリティ要件に基づいて設定を変更する。 |
Chi tiết từng mẫu ngữ pháp:
-
〜たつもり (
N3): Đinh ninh rằng đã làm gì đó / Cứ ngỡ bản thân đã hoàn thành- Cấu trúc: Động từ thể Ta (た) + つもり (thường đi với だ / でいる / になっている)
- Ý nghĩa & sắc thái: Biểu thị nhận thức chủ quan rằng mình đã hoàn tất việc gì, nhưng thực tế khách quan thì chưa làm hoặc kết quả trái ngược.
- Ví dụ 1: 設定ファイルを更新してアクセスを制限したつもりだったが、実際にはキャッシュが残っていた。(Cứ ngỡ rằng cập nhật tệp cấu hình là đã hạn chế được truy cập, nhưng thực chất bộ nhớ đệm vẫn còn lưu.)
- Ví dụ 2: 暗号化したつもりで平文のまま送信してしまった。(Cứ đinh ninh là đã mã hóa rồi nhưng lại gửi đi dưới dạng văn bản thuần.)
- Lỗi thường gặp: Tránh nhầm với 〜つもりだ (thể từ điển + つもりだ: dự định làm gì trong tương lai).
-
〜かねない (
N2): Rất có thể sẽ dẫn đến hậu quả tiêu cực / E rằng sẽ xảy ra sự cố- Cấu trúc: Động từ thể Masu bỏ ます + かねない
- Ý nghĩa & sắc thái: Cảnh báo một kết quả xấu hoàn toàn có khả năng xảy ra nếu duy trì trạng thái hoặc nguyên nhân hiện tại.
- Ví dụ 1: ツール名の指定に誤解があると、重大な漏洩を引き起こしかねません。(Nếu có sự hiểu lầm trong việc chỉ định tên công cụ, e rằng rất dễ gây ra sự cố rò rỉ nghiêm trọng.)
- Ví dụ 2: 不適切な権限ルールはシステム障害を招きかねない。(Quy tắc phân quyền bất cập rất có thể dẫn tới sự cố sập hệ thống.)
- Lỗi thường gặp: Chỉ dùng cho kết quả tiêu cực, không dùng cho các kết quả tích cực hay may mắn.
-
〜に基づいて (
N3): Dựa trên cơ sở / Căn cứ vào tiêu chuẩn- Cấu trúc: Danh từ + に基づいて / に基づく + Danh từ
- Ý nghĩa & sắc thái: Biểu thị hành động hoặc phán đoán được đưa ra dựa trên tài liệu chuẩn mực hoặc căn cứ pháp lý/kỹ thuật xác thực.
- Ví dụ 1: 公式ドキュメントの仕様に基づいて権限ルールを設計します。(Thiết kế quy tắc quyền hạn dựa trên đặc tả của tài liệu chính thức.)
- Ví dụ 2: セキュリティポリシーに基づいたアクセス制御を実施する。(Thực thi kiểm soát truy cập dựa trên chính sách bảo mật.)
7. Thực hành vai trò BrSE — 現場で伝える
7.1. Câu hỏi Luyện Đọc hiểu Tiếng Nhật (リーディング問題)
Câu 1 (Ý chính): なぜ Write(.env) という設定では不十分なのか?
- A.
.envファイルは常に暗号化されているため。 - B. Claude Code の権限チェックにおいて、ファイルパス規則は Read/Edit のカテゴリでしか参照されないため。
- C.
Writeツールはプロジェクト設定で常に無効化されているため。 - D.
.claude/settings.json自体が読み込まれない仕様だから。
Đáp án đúng: B
Giải thích tiếng Việt: Trong Phần 1, văn bản nêu rõ Claude Code tải quy tắc vào nhưng không hề tham chiếu đến Write(path) khi kiểm tra tệp, do hệ thống chỉ thẩm định đường dẫn theo danh mục Read/Edit.
Câu 2 (Chi tiết): Grep(path) を deny に設定した場合、どのような挙動になるか?
- A. 起動時に文法エラーの警告が表示される。
- B. Grep ツールの呼び出しが即座に拒否され、権限エラーになる。
- C. 警告は表示されず、Grep ツールはそのままファイルの中身を返してしまう。
- D. プロジェクト全体のファイルが自動的に削除される。
Đáp án đúng: C
Giải thích tiếng Việt: Tác giả đã thực nghiệm chỉ ra rằng Grep(path) không phát cảnh báo nhưng cũng không có tác dụng ngăn chặn, công cụ Grep vẫn trả về nội dung của tệp bí mật.
Câu 3 (Hành động): 秘密ファイルを読み書き両方から安全に守るための最も簡潔な設定はどれか?
- A.
"deny": ["Write(path)"] - B.
"deny": ["Grep(path)"] - C.
"deny": ["Read(path)"] - D.
"allow": ["Read(path)"]
Đáp án đúng: C
Giải thích tiếng Việt: Quy tắc Read(path) trong cơ chế mới của Claude Code sẽ tự động khóa cả thao tác đọc lẫn các thao tác ghi phát sinh từ Edit và Write.
7.2. Bài luyện Viết & Báo cáo Dành cho BrSE
Đề bài: Hãy viết một tin nhắn Slack (khoảng 3-4 câu) gửi Tech Lead đối tác Nhật Bản thông báo về việc phát hiện cấu hình permissions.deny hiện tại chưa chặn được lệnh tìm kiếm tệp nhạy cảm và đề xuất thay đổi sang quy tắc Read.
Mẫu câu trả lời tham khảo (参考回答例)
お疲れ様です。ベトナム開発チームの〇〇です。
Claude Codeの権限設定を確認したところ、現行の Write(.env) ではGrep経由での情報参照を防ぎきれないことが判明いたしました。
そのため、安全面を考慮し、.claude/settings.json のルールを Read(./.env*) の deny に変更することを提案いたします。
こちらの方針で進めてよろしいか、ご確認いただけますと幸いです。
Nguồn tham khảo và phạm vi xác minh
- kai_kou, Claude Code権限ルール、pathが効くのはRead/Editだけ: Bài viết gốc thực nghiệm trên Qiita ngày 17/10/2026.
- Anthropic Official Documentation, Claude Code Tool & Permission Specifications: Tài liệu chuẩn về danh mục phân quyền và ranh giới kiểm soát công cụ CLI.