پرش به محتوای اصلی
OpenAI

۱۸ اردیبهشت ۱۴۰۵

امنیتایمنی

اجرای ایمن Codex در OpenAI

نگاهی به کنترل‌ها، مرزبندی‌ها و داده‌های پایشی که OpenAI برای مدیریت عامل‌های کدنویسی در گردش‌کارهای واقعی به کار می‌گیرد.

در حال بارگذاری…

با توانمندتر شدن سیستم‌های AI، آن‌ها بیش‌ازپیش از طرف کاربران اقدام می‌کنند. عامل‌های کدنویسی می‌توانند به‌صورت خودکار محل نگهداری کد را بررسی کنند، دستورها را اجرا کنند و با ابزارهای توسعه تعامل داشته باشند. این‌ها کارهایی هستند که پیش‌تر به اجرای مستقیم توسط انسان نیاز داشتند.

در Codex، ما این قابلیت‌ها را همراه با کنترل‌هایی طراحی کرده‌ایم که سازمان‌ها برای استقرار ایمن به آن‌ها نیاز دارند. تیم‌های امنیتی به روش‌هایی نیاز دارند تا نحوه عملکرد عامل‌ها را مدیریت کنند: اینکه به چه چیزهایی می‌توانند دسترسی داشته باشند، چه زمانی تأیید انسانی لازم است، با کدام سیستم‌ها می‌توانند تعامل داشته باشند، و چه داده‌های پایشی‌ای برای توضیح رفتار آن‌ها وجود دارد.

در OpenAI، ما Codex را با چند هدف روشن مستقر می‌کنیم: عامل را در چارچوب مرزهای فنی مشخص نگه داریم، به توسعه‌دهندگان اجازه دهیم اقدامات کم‌ریسک را سریع انجام دهند، و اقدامات پرریسک‌تر را شفاف و صریح کنیم. همچنین داده‌های پایشی اختصاصی عامل را حفظ می‌کنیم تا بتوانیم بفهمیم عامل چه کاری انجام داده و آن را حسابرسی کنیم. در عمل، این یعنی پیکربندی مدیریت‌شده، اجرای محدودشده، سیاست‌های شبکه و گزارش‌های اختصاصی عامل.

کنترل نحوه عملکرد Codex

ما Codex را بر پایه یک اصل ساده مستقر می‌کنیم: اینکه باید در یک محیط محدودشده کارآمد عمل کند، اقدامات روزمره کم‌ریسک باید روان و بی‌دردسر انجام شوند، و اقدامات پرریسک‌تر باید برای بازبینی متوقف شوند.

اجرای ایزوله و تأییدها

تأییدها و اجرای ایزوله در کنار هم عمل می‌کنند. محیط ایزوله مرز فنیِ اجرا را مشخص می‌کند؛ از جمله اینکه Codex در کجا می‌تواند تغییر ایجاد کند، آیا می‌تواند به شبکه دسترسی داشته باشد، و کدام مسیرها همچنان محافظت‌شده باقی می‌مانند. سیاست تأیید مشخص می‌کند که Codex چه زمانی باید برای انجام یک اقدام درخواست مجوزکند؛ برای مثال، زمانی که لازم است کاری خارج از محیط ایزوله انجام دهد. کاربران می‌توانند آن اقدام را فقط برای همان یک‌بار تأیید کنند، یا آن نوع اقدام را برای همان نشست مجاز بدانند.

برای درخواست‌هایی که از مرزهای محیط ایزوله عبور می‌کنند، از حالت بازبینی خودکار(در یک پنجره جدید باز می‌شود) استفاده می‌کنیم؛ قابلیتی که وقتی فعال باشد، برخی انواع درخواست‌ها را به‌صورت خودکار تأیید می‌کند تا تعداد دفعاتی که کاربران مجبور می‌شوند کار را متوقف کنند و اقدامات Codex را تأیید کنند، کاهش یابد. Codex اقدام برنامه‌ریزی‌شده و زمینه اخیر را برای زیردستیارِ تأیید خودکار ارسال می‌کند که می‌تواند اقدامات کم‌ریسک—یا اقدامات پرریسک با سطح کافی از مجوز کاربر—را به‌جای ایجاد وقفه برای کاربر، به‌صورت خودکار تأیید کند. این کار باعث می‌شود Codex در کارهای روتین به کار خود ادامه دهد، اما همچنان در برابر اقدامات پرریسک‌تر یا اقداماتی با پیامدهای ناخواسته متوقف شود.

TOML

1
# config.toml
2

3
# Turn on auto_review
4
approvals_reviewer = "auto_review"
5
# Add known development directories to the sandbox automatically
6
sandbox_workspace_write.writable_roots = ["~/development"]
7

8
# requirements.toml
9

10
# Require Codex to operate inside the sandbox
11
allowed_sandbox_modes = ["read-only", "workspace-write"]

دسترسی شبکه

ما Codex را با دسترسی خروجیِ نامحدود اجرا نمی‌کنیم. سیاست شبکه مدیریت‌شده ما مقصدهای مورد انتظار را مجاز می‌داند، مقصدهایی را که نمی‌خواهیم Codex به آن‌ها دسترسی پیدا کند مسدود می‌کند، و برای دامنه‌های ناآشنا به تأیید نیاز دارد. این کار به Codex اجازه می‌دهد گردش‌کارهای رایج و شناخته‌شدهِ امن را تکمیل کند، بدون اینکه دسترسی گسترده به شبکه به آن داده شود.

TOML

1
# requirements.toml
2

3
# Ensure web fetch only comes from OpenAI's cache
4
allowed_web_search_modes = ["cached"]
5

6
[experimental_network]
7
# Turn on Network Proxy
8
enabled = true
9
# Allow Codex to interact with localhost
10
allow_local_binding = true
11
# Block all requests to this domain
12
denied_domains = ["pastebin.com"]
13
# Auto-allow requests to these domains
14
allowed_domains = ["login.microsoftonline.com", "*.openai.com"]

هویت و اعتبارنامه‌ها

ما همچنین نحوه احراز هویت Codex را مدیریت می‌کنیم. اعتبارنامه‌های OAuth مربوط به CLI و MCP در keyring امن سیستم‌عامل ذخیره می‌شوند، ورود از طریق ChatGPT الزامی است، و دسترسی به فضای کاری سازمانی ما در ChatGPT محدود می‌شود. این کار باعث می‌شود استفاده از Codex به کنترل‌های سطح فضای کاری ما وابسته بماند و فعالیت‌های Codex در پلتفرم گزارش‌های انطباق ChatGPT برای فضای کاری سازمانی ما در دسترس باشد.

TOML

1
# config.toml
2

3
# Store CLI Auth Creds in OS Keychain
4
cli_auth_credentials_store = "keyring"
5
# Store MCP Creds in OS Keychain
6
mcp_oauth_credentials_store = "keyring"
7
# Require Auth via ChatGPT
8
forced_login_method = "chatgpt"
9
# Require Auth to Specific ChatGPT Workspace
10
forced_chatgpt_workspace_id = "<workspace-uuid>"

قواعد

ما از قواعدی استفاده می‌کنیم تا Codex همه دستورهای خط فرمان را به یک اندازه ایمن تلقی نکند. دستورهای رایج و بی‌خطری که مهندسان در توسعه روزمره استفاده می‌کنند، می‌توانند خارج از محیط ایزوله بدون نیاز به تأیید اجرا شوند؛ در مقابل، دستورهای مشخصاً خطرناک می‌توانند مسدود شوند یا نیازمند تأیید باشند. این کار به Codex اجازه می‌دهد کارهای معمول مهندسی را سریع‌تر پیش ببرد، در حالی که همچنان الگوهایی را که نمی‌خواهیم خارج از محیط ایزوله اجرا شوند، مجبور به بازبینی می‌کند یا مسدود می‌سازد.

Starlark

1
# default.rules
2

3
prefix_rule(
4
pattern = ["gh", "pr", ["view", "list"]],
5
decision = "allow",
6
justification = "Allows read-only GitHub PR inspection via gh CLI.",
7
)
8
prefix_rule(
9
pattern = ["kubectl", ["get", "describe", "logs"]],
10
decision = "allow",
11
justification = "Allows Kubernetes resource inspection for debugging.",
12
)

پیکربندی‌های مدیریت‌شده

ما این رویکرد را از طریق ترکیبی از الزامات مدیریت‌شده در فضای ابری، تنظیمات مدیریت‌شده macOS و فایل‌های الزامات محلی اعمال می‌کنیم. الزامات، کنترل‌هایی هستند که توسط مدیر سیستم اعمال می‌شوند و کاربران نمی‌توانند آن‌ها را نادیده بگیرند. تنظیمات مدیریت‌شده macOS و فایل‌های الزامات محلی به ما امکان می‌دهند یک خط مبنای ثابت را حفظ کنیم، در عین حال پیکربندی‌های مختلف را بر اساس تیم، گروه کاربری یا محیط آزمایش کنیم. این پیکربندی‌ها در همه رابط‌های محلی Codex، از جمله اپلیکیشن دسکتاپ، CLI و افزونه IDE، اعمال می‌شوند.

داده‌های پایشی اختصاصی عامل و سوابق حسابرسی

کنترل فقط نیمی از کار است. وقتی عامل‌ها مستقر می‌شوند، تیم‌های امنیتی باید بدانند این عامل‌ها چه کاری انجام می‌دهند و چرا. گزارش‌های امنیتی سنتی همچنان برای بررسی اقداماتی که Codex انجام داده مفید هستند، اما عمدتاً فقط به این پرسش پاسخ می‌دهند که چه اتفاقی افتاده است: یک فرایند شروع شده، یک فایل تغییر کرده یا تلاش شده اتصال شبکه برقرار شود. مدافعان همچنان باید خودشان تشخیص دهند چرا Codex کاری را انجام داده، یا نیت کاربر چه بوده است.

Codex می‌تواند دیدی آگاه‌تر از عامل‌ها در اختیار تیم‌های امنیتی قرار دهد. Codex از خروجی گرفتن گزارش‌ها با OpenTelemetry برای رویدادهای مختلف Codex پشتیبانی می‌کند؛ از جمله اعلان‌های کاربر، تصمیم‌های مربوط به تأیید ابزار، نتایج اجرای ابزار، استفاده از سرور MCP، و رویدادهای مجاز یا مسدود شدن در پراکسی شبکه. گزارش‌های فعالیت Codex همچنین از طریق OpenAI Compliance Platform برای مشتریان Enterprise و Edu در دسترس است.

TOML

1
# config.toml
2

3
[otel]
4
log_user_prompt = true
5
environment = "prod"
6

7
[otel.exporter.otlp-http]
8
endpoint = "http://localhost:14318/v1/logs"
9
protocol = "binary"

در OpenAI، ما گزارش‌های Codex را در کنار عامل بررسی اولیه هشدارهای امنیتی مبتنی بر AI خودمان به کار می‌گیریم. وقتی یک هشدار نقطه پایان نشان می‌دهد که Codex کاری غیرمعمول انجام داده، ابزار امنیت نقطه پایان به ما می‌گوید که یک رویداد مشکوک رخ داده است. سپس گزارش‌های Codex کمک می‌کنند نیت پیرامونی کاربر و عامل توضیح داده شود. عامل بررسی اولیه هشدارهای امنیتی مبتنی بر AI ما از گزارش‌های Codex استفاده می‌کند تا درخواست اولیه، فعالیت ابزارها، تصمیم‌های مربوط به تأیید، نتایج ابزارها، و هر تصمیم یا مسدودسازی مرتبط با سیاست شبکه را بررسی کند. این عامل تحلیل خود را برای بازبینی در اختیار تیم امنیتی ما قرار می‌دهد تا بتوانند میان رفتار مورد انتظار عامل، خطاهای بی‌خطر، و فعالیتی که واقعاً نیازمند ارجاع به سطح بالاتر است تمایز قائل شوند.

ما از همین داده‌های پایشی برای امور عملیاتی نیز استفاده می‌کنیم. از این گزارش‌ها استفاده می‌کنیم تا بفهمیم پذیرش داخلی چگونه در حال تغییر است، کدام ابزارها و سرورهای MCP (پروتکل زمینه مدل) استفاده می‌شوند، محیط ایزوله شبکه چند وقت یک‌بار دسترسی را مسدود می‌کند یا درخواست تأیید می‌دهد، و کدام بخش‌های عرضه هنوز به تنظیم نیاز دارند. این گزارش‌های OpenTelemetry می‌توانند در سامانه‌های SIEM و سامانه‌های ثبت گزارش‌های انطباق به‌صورت متمرکز نگهداری شوند.

با نگاهی به آینده

با ادغام عامل‌های کدنویسی مانند Codex در گردش‌کارهای توسعه، تیم‌های امنیتی به ابزارهایی نیاز دارند که مشخصاً برای مدیریت این تغییر طراحی شده باشند. Codex سطوح کنترل، مدیریت پیکربندی، ایزوله‌سازی و داده‌های پایشی دقیق و آگاه از عامل را فراهم می‌کند که برای اطمینان از پذیرش ایمن لازم‌اند. با فراهم بودن این قابلیت‌ها، تیم‌های امنیتی می‌توانند Codex را با اطمینان بیشتری فعال کنند و میان کارآمدی توسعه‌دهندگان از یک سو، و سطح دید و کنترل موردنیاز برای امنیت سازمانی از سوی دیگر، تعادل برقرار کنند. اطلاعات بیشتر درباره پیکربندی Codex را می‌توانید از اینجا(در یک پنجره جدید باز می‌شود)، و اطلاعات مربوط به Compliance API را از اینجا(در یک پنجره جدید باز می‌شود) پیدا کنید.

نویسنده

OpenAI