Skip to content
ეს გვერდი შეიქმნა და ითარგმნა ხელოვნური ინტელექტის დახმარებით. თუ შეამჩნევთ უზუსტობას, გთხოვთ, დაგვეხმარეთ გაუმჯობესებაში. GitHub-ზე რედაქტირება

ფაილის ოპერაციები

PRX ორ ძირითად ფაილის ოპერაციის ინსტრუმენტს გთავაზობთ -- file_read და file_write -- რომლებიც მინიმალური default_tools() ნაკრების ნაწილია. ეს ინსტრუმენტები ყოველთვის ხელმისაწვდომია, დამატებითი კონფიგურაცია არ სჭირდება და აგენტის ლოკალურ ფაილურ სისტემასთან ურთიერთქმედების საფუძველს ქმნის.

ორივე ინსტრუმენტი უსაფრთხოების პოლიტიკის ძრავის ქვეშ მოქმედებს. ბილიკის ვალიდაცია უზრუნველყოფს, რომ აგენტს მხოლოდ ნებადართულ დირექტორიებში ფაილებზე წვდომა ჰქონდეს. მეხსიერების ACL-ის ჩართვისას file_read დამატებით ბლოკავს მეხსიერების markdown ფაილებზე წვდომას.

shell ინსტრუმენტისგან განსხვავებით, ფაილის ოპერაციები გარე პროცესებს არ იწყებს. ისინი PRX პროცესში პირდაპირი Rust I/O ოპერაციების სახით არის განხორციელებული.

კონფიგურაცია

ფაილის ოპერაციებს გამოყოფილი კონფიგურაციის სექცია არ აქვს. მათი ქცევა უსაფრთხოების პოლიტიკის ძრავითა და მეხსიერების ACL პარამეტრებით კონტროლდება:

toml
# მეხსიერების ACL გავლენას ახდენს file_read-ის ქცევაზე
[memory]
acl_enabled = false    # true-ზე, file_read ბლოკავს მეხსიერების ფაილებზე წვდომას

# უსაფრთხოების პოლიტიკით ფაილებზე წვდომის ბილიკების შეზღუდვა
[security.tool_policy.tools]
file_read = "allow"    # "allow" | "deny" | "supervised"
file_write = "allow"

# ბილიკზე დაფუძნებული პოლიტიკის წესები
[[security.policy.rules]]
name = "allow-workspace-read"
action = "allow"
tools = ["file_read"]
paths = ["/home/user/workspace/**"]

[[security.policy.rules]]
name = "block-sensitive-paths"
action = "deny"
tools = ["file_read", "file_write"]
paths = ["/etc/shadow", "/root/**", "**/.ssh/**", "**/.env"]

გამოყენება

file_read

file_read ინსტრუმენტი ფაილის შინაარსს კითხულობს და სტრიქონად აბრუნებს.

json
{
  "name": "file_read",
  "arguments": {
    "path": "/home/user/project/src/main.rs"
  }
}

file_write

file_write ინსტრუმენტი ფაილში კონტენტს ჩაწერს, ქმნის თუ არ არსებობს, ან გადაწერს არსებულს.

json
{
  "name": "file_write",
  "arguments": {
    "path": "/home/user/project/src/config.toml",
    "content": "[server]\nport = 8080\nhost = \"0.0.0.0\"\n"
  }
}

პარამეტრები

file_read პარამეტრები

პარამეტრიტიპისავალდებულონაგულისხმევიაღწერა
pathstringდიახ--ფაილის აბსოლუტური ან ფარდობითი ბილიკი წასაკითხად

file_write პარამეტრები

პარამეტრიტიპისავალდებულონაგულისხმევიაღწერა
pathstringდიახ--ფაილის აბსოლუტური ან ფარდობითი ბილიკი ჩასაწერად
contentstringდიახ--ფაილში ჩასაწერი კონტენტი

ბილიკის ვალიდაცია

ორივე ინსტრუმენტი I/O ოპერაციის შესრულებამდე ბილიკის ვალიდაციას ახორციელებს:

  1. ბილიკის ნორმალიზაცია -- ფარდობითი ბილიკები მიმდინარე სამუშაო დირექტორიის მიმართ იხსნება. სიმბოლური ბმულები იხსნება ბილიკის გადახრის გამოსავლენად.
  2. პოლიტიკის შემოწმება -- გადაწყვეტილი ბილიკი უსაფრთხოების პოლიტიკის წესებთან მოწმდება.
  3. სპეციალური ბილიკების ბლოკირება -- გარკვეული ბილიკები ყოველთვის დაბლოკილია პოლიტიკის მიუხედავად:
    • /proc/, /sys/ (Linux ბირთვის ინტერფეისები)
    • მოწყობილობის ფაილები /dev/-ში (/dev/null, /dev/urandom-ის გარდა)
    • მეხსიერების შენახვის ფაილები, როცა memory.acl_enabled = true

მეხსიერების ACL აღსრულება

როცა memory.acl_enabled = true, file_read დამატებით შეზღუდვებს აღასრულებს:

  • მეხსიერების ფაილები დაბლოკილია: file_read უარს ამბობს მეხსიერების დირექტორიაში შენახული markdown ფაილების წაკითხვაზე
  • მეხსიერების გამოძახება გამორთულია: memory_recall ინსტრუმენტი მთლიანად ამოიშლება რეესტრიდან
  • მხოლოდ მიზნობრივი წვდომა: აგენტი უნდა გამოიყენოს memory_get ან memory_search სათანადო ACL შემოწმებებით

უსაფრთხოება

პოლიტიკის ძრავის ინტეგრაცია

ყოველი file_read და file_write გამოძახება უსაფრთხოების პოლიტიკის ძრავას გადის შესრულებამდე.

აუდიტის ჟურნალირება

აუდიტის ჟურნალირების ჩართვისას, ყოველი ფაილის ოპერაცია იწერება: დროის ნიშნული, ინსტრუმენტის სახელი, გადაწყვეტილი ბილიკი, წარმატების/წარუმატებლობის სტატუსი.

მგრძნობიარე ფაილების დაცვა

ნაგულისხმევი უსაფრთხოების პოლიტიკა ბლოკავს წვდომას გავრცელებულ მგრძნობიარე ბილიკებზე: SSH გასაღებები (~/.ssh/), გარემოს ფაილები (.env), Git ავტორიზაციის მონაცემები, shell ისტორია, სისტემის პაროლის ფაილები.

დაკავშირებული გვერდები

Released under the Apache-2.0 License.