Developer Guide
5 min

How to Safely Share API Keys and Secrets with Your Team

Learn how to securely share API keys, secret keys, and environment variables with your development team. Avoid dangerous sharing methods and adopt best practices for secret management.

LOCK.PUB
How to Safely Share API Keys and Secrets with Your Team

چگونه کلیدهای API و اطلاعات محرمانه را به‌صورت امن با تیم خود به اشتراک بگذارید

اگر به‌صورت حرفه‌ای کد می‌نویسید، تقریباً مطمئناً نیاز داشته‌اید که کلیدهای API، کلیدهای محرمانه، رمزهای عبور دیتابیس یا اعتبارنامه‌های سرور را با یک هم‌تیمی به اشتراک بگذارید. سؤال این است که چگونه این کار را بدون ایجاد آسیب‌پذیری امنیتی انجام دهید.

روش‌های خطرناک اشتراک‌گذاری

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

۱. کامیت کردن در Git

کامیت کردن فایل‌های .env در مخزن Git رایج‌ترین و خطرناک‌ترین اشتباه است.

# هرگز این کار را نکنید
git add .env
git commit -m "add env variables"
git push origin main

وقتی یک کلید محرمانه وارد تاریخچه Git شود، حذف آن با git rm آن را از تاریخچه پاک نمی‌کند. در مخازن عمومی، ربات‌های خودکار کلیدهای لو رفته را ظرف چند ثانیه شناسایی می‌کنند.

۲. چسباندن در Slack یا Discord

چسباندن مستقیم کلیدهای API در یک کانال پیام‌رسانی به همان اندازه خطرناک است.

  • هر کسی که به کانال دسترسی دارد می‌تواند آن را ببیند
  • جستجوی پیام‌ها آن را بعداً قابل کشف می‌کند
  • پیام حتی بعد از خروج یک کارمند باقی می‌ماند
  • مدیران Slack می‌توانند همه پیام‌ها از جمله پیام‌های خصوصی را بخوانند

۳. ارسال از طریق ایمیل

ایمیل به‌صورت پیش‌فرض رمزنگاری نشده است. پیام‌ها می‌توانند در مسیر بین سرورهای ایمیل رهگیری شوند و اعتبارنامه‌ها برای همیشه در صندوق ورودی گیرنده باقی می‌مانند.

هزینه واقعی لو رفتن کلید API

لو رفتن کلید API فقط یک حادثه امنیتی نیست. مستقیماً به خسارت مالی تبدیل می‌شود.

نمونه‌های لو رفتن کلید AWS

حادثه خسارت
لو رفتن کلید AWS یک توسعه‌دهنده ۶,۰۰۰ دلار هزینه در یک شب
مخزن عمومی GitHub یک استارتاپ بیش از ۵۰,۰۰۰ دلار هزینه در ۳ روز
لو رفتن از ویکی داخلی سازمان نقض داده‌ها با خسارت میلیون‌ دلاری

وقتی کلیدهای سرویس ابری از AWS، GCP یا Azure لو می‌روند، مهاجمان ظرف چند دقیقه منابع محاسباتی عظیمی را راه‌اندازی می‌کنند، معمولاً برای استخراج رمزارز.

سایر عواقب

  • لو رفتن کلید API پرداخت -> تراکنش‌های جعلی
  • لو رفتن کلید API ایمیل -> ارسال انبوه هرزنامه
  • لو رفتن اعتبارنامه‌های دیتابیس -> سرقت اطلاعات مشتریان

روش‌های امن اشتراک‌گذاری کلیدهای API

روش ۱: یادداشت محرمانه LOCK.PUB (اشتراک‌گذاری فوری)

این عملی‌ترین روش زمانی است که باید همین الان کلیدها را به یک هم‌تیمی تحویل دهید.

گردش کار:

۱. یک یادداشت محرمانه در LOCK.PUB ایجاد کنید ۲. کلید API و هر توضیح مرتبطی را وارد کنید ۳. یک رمز عبور و زمان انقضای کوتاه (مثلاً ۱ ساعت) تنظیم کنید ۴. لینک را از طریق Slack و رمز عبور را از طریق یک پیام خصوصی جداگانه ارسال کنید

# نمونه محتوای یادداشت محرمانه
AWS_ACCESS_KEY_ID=AKIA...
AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI...
AWS_REGION=us-east-1

توجه: این کلیدها فقط برای محیط staging هستند.
کلیدهای production را جداگانه درخواست کنید.

مزایا:

  • پس از زمان انقضا به‌صورت خودکار حذف می‌شود
  • برای مشاهده نیاز به رمز عبور دارد
  • به‌صورت رمزنگاری‌شده در سرور ذخیره می‌شود
  • هیچ کلید خامی در تاریخچه Slack باقی نمی‌ماند

روش ۲: ابزارهای مدیریت اطلاعات محرمانه (سطح تیم)

با رشد تیم‌ها، ابزارهای اختصاصی مدیریت اطلاعات محرمانه ضروری می‌شوند.

ابزار نقطه قوت بهترین برای
HashiCorp Vault قدرتمندترین مدیریت اطلاعات محرمانه سازمان‌های بزرگ
AWS Secrets Manager یکپارچگی با اکوسیستم AWS زیرساخت مبتنی بر AWS
1Password Teams رابط کاربری مناسب توسعه‌دهندگان استارتاپ‌ها، تیم‌های کوچک
Doppler همگام‌سازی خودکار متغیرهای محیطی تیم‌های DevOps محور

روش ۳: مدیریت متغیرهای محیطی (الگوی .env.example)

قرار دادن فایل .env.example در پروژه یک رویه استاندارد است.

# .env.example (در Git کامیت می‌شود)
DATABASE_URL=
API_KEY=
SECRET_KEY=
STRIPE_SECRET=

# .env (هرگز در Git کامیت نمی‌شود)
DATABASE_URL=postgresql://user:pass@host:5432/db
API_KEY=sk-abc123...
SECRET_KEY=mysecret...
STRIPE_SECRET=sk_live_...

همیشه .env را به .gitignore اضافه کنید.

# .gitignore
.env
.env.local
.env.production

بهترین شیوه‌های مدیریت اطلاعات محرمانه

۱. چرخش منظم کلیدها

کلیدهای API باید طبق یک برنامه منظم چرخش شوند. این کار پنجره آسیب را در صورت لو رفتن کلید محدود می‌کند.

نوع کلید چرخش پیشنهادی
کلیدهای API تولید ۹۰ روز
رمزهای عبور دیتابیس ۶۰ روز
توکن‌های سرویس ۳۰ روز
کلیدهای توسعه/تست بلافاصله هنگام خروج شخصی

۲. استفاده از کلیدهای جداگانه برای هر محیط

از کلیدهای مختلف برای محیط‌های توسعه، staging و تولید استفاده کنید.

# درست
DEV_API_KEY=sk-dev-xxx
STAGING_API_KEY=sk-staging-xxx
PROD_API_KEY=sk-prod-xxx

# اشتباه - یک کلید برای همه محیط‌ها
API_KEY=sk-same-key-for-all

۳. اعمال اصل حداقل دسترسی

فقط حداقل مجوزهای لازم را به هر کلید API اختصاص دهید.

  • از کلیدهای فقط‌خواندنی برای عملیات فقط‌خواندنی استفاده کنید
  • کلیدها را محدود به سرویس‌های خاص صادر کنید
  • کلیدهای مدیریتی را به کوچک‌ترین گروه ممکن محدود کنید

۴. خودکارسازی تشخیص نشت

از ابزارهایی مانند GitHub Secret Scanning، GitGuardian یا TruffleHog برای تشخیص خودکار اطلاعات محرمانه کامیت‌شده در مخازن کد استفاده کنید.

# اضافه کردن اسکن اطلاعات محرمانه به عنوان هوک pre-commit
# .pre-commit-config.yaml
repos:
  - repo: https://github.com/Yelp/detect-secrets
    hooks:
      - id: detect-secrets

گردش‌کارهای سریع اشتراک‌گذاری با LOCK.PUB

در اینجا قالب‌های گردش کار برای رایج‌ترین سناریوها در تیم‌های توسعه آمده است.

ورود عضو جدید تیم

وقتی یک توسعه‌دهنده جدید به تیم می‌پیوندد، همه متغیرهای محیطی مورد نیاز را یکجا تحویل دهید.

۱. همه متغیرهای محیطی را در یک یادداشت محرمانه جمع‌آوری کنید ۲. انقضای ۲۴ ساعته تنظیم کنید ۳. لینک و رمز عبور را به اشتراک بگذارید ۴. پس از تأیید دریافت توسط عضو تیم، یادداشت به‌صورت خودکار منقضی می‌شود

اشتراک‌گذاری کلیدها با شرکای خارجی

اشتراک‌گذاری کلیدهای API با فروشندگان خارجی نیاز به احتیاط بیشتری دارد.

۱. یک کلید اختصاصی مخصوص آن شریک صادر کنید ۲. از طریق یادداشت محرمانه با انقضای کوتاه تحویل دهید ۳. به شریک دستور دهید کلید را در ابزار مدیریت اطلاعات محرمانه خود ذخیره کند ۴. پس از پایان همکاری، کلید را باطل کنید

اشتراک‌گذاری اضطراری کلید هنگام حوادث

وقتی سرور از کار افتاده و یک عضو دیگر تیم فوراً نیاز به دسترسی دارد.

۱. یک یادداشت محرمانه با انقضای ۱ ساعته ایجاد کنید ۲. رمز عبور را تلفنی و لینک را از طریق پیام‌رسان اطلاع دهید ۳. پس از رفع حادثه، کلید اشتراک‌گذاری‌شده را چرخش دهید

جمع‌بندی

مدیریت کلیدهای API و اطلاعات محرمانه پایه امنیت توسعه نرم‌افزار است. چسباندن کلیدها در Slack یا ارسال آنها از طریق ایمیل ممکن است راحت به نظر برسد، اما یک نشت واحد می‌تواند هزاران یا حتی میلیون‌ها دلار هزینه داشته باشد. عادت اشتراک‌گذاری امن اطلاعات محرمانه را از همان روز اول بسازید.

اگر همین الان نیاز دارید کلیدی را با یک هم‌تیمی به اشتراک بگذارید، از یادداشت محرمانه استفاده کنید.

ایجاد یادداشت محرمانه ->

کلمات کلیدی

API key sharing
secret key management
developer security
environment variable management
key leak prevention
secure credential sharing

همین حالا لینک محافظت‌شده با رمز خود را بسازید

لینک‌های محافظت‌شده با رمز، یادداشت‌های محرمانه و گفتگوهای رمزگذاری‌شده را رایگان بسازید.

شروع رایگان
How to Safely Share API Keys and Secrets with Your Team | LOCK.PUB Blog