Architecture Decision Record

Active theme: Light

← مثال‌های رکورد تصمیم

ذخیره‌سازی اطلاعات محرمانه

فهرست مطالب:

خلاصه

مسئله

باید رازها، مانند گذرواژه‌ها، کلیدهای خصوصی، توکن‌های احراز هویت و غیره را ذخیره کنیم.

برخی از رازها کاربرمحورند. برای مثال، توسعه‌دهندهٔ ما می‌خواهد بتواند با تلفن همراه خود گذرواژهٔ یک سرویس را ببیند.

برخی از رازها سیستم‌محورند. برای مثال، خط‌لولهٔ تحویل پیوستهٔ ما باید بتواند اعتبارنامه‌های میزبانی ابری ما را بیابد.

تصمیم

Bitwarden برای رازهای کاربرمحور

Vault by HashiCorp برای رازهای سیستم‌محور.

وضعیت

تصمیم گرفته شد. برای جایگزین‌های جدید هنگام پیدایش‌شان آماده‌ایم.

جزئیات

مفروضات

برای این منظور، و در وضعیت کنونی ما، به راحتی کاربرمحور، مانند برنامه‌های موبایل قابل‌استفاده، ارج می‌نهیم.

  • می‌خواهیم دسترسی سریع و آسان در حال حرکت را تضمین کنیم، مثلاً برای توسعه‌دهنده‌ای که مهندسی قابلیت اطمینان سیستم را در حالت آماده‌باش (on-call) انجام می‌دهد.

  • می‌خواهیم بتوانیم برخی رازها را میان افراد منتخب، مانند یک تیم، به اشتراک بگذاریم.

تلاش نمی‌کنیم برای یک ارائه‌دهندهٔ واحد راه‌حل بیابیم، مانند ذخیرهٔ همهٔ رازها منحصراً روی Amazon یا Azure یا Google.

رویکردهای موردی مانند «به خاطر بسپار» یا «روی یک یادداشت بنویس» یا «راه ذخیره‌سازی خودت را بیاب» را نمی‌خواهیم.

مدل امنیتی ما برای این منظور با استفاده از فروشندگان COTS با اعتبار خوب، مانند ابزارهای مدیریت گذرواژهٔ SaaS، مشکلی ندارد.

قیود

اکنون چیزی می‌خواهیم که آسان باشد، یعنی نیازی به نوشتن کد نباشد، نیازی به نصب سرور نباشد، نیازی به تعهد بزرگ نباشد، نیازی به استانداردسازی همه نباشد.

مواضع

این‌ها را بررسی کردیم:

  1. مدیران گذرواژهٔ آمادهٔ کاربرمحور: LastPass، 1Password، Bitwarden، Dashlane، KeePass، pass، GPG و غیره.

  2. مدیران گذرواژهٔ COTS سیستم‌محور: AWS KMS، Vault by HashiCorp، EnvKy، Secret Server by Thycotic، Devolutions Password Server، Confidant by Lyft.

  3. رویکردهای اشتراک‌محور: استفاده از یک سند Google مشترک، یا کانال Slack مشترک، یا پوشهٔ شبکهٔ مشترک و غیره.

  4. رویکردهای موردی کم‌فناوری، مانند به خاطر سپردن، نوشتن یادداشت یا تکیه بر اینکه هر کاربر رویکرد خودش را بیابد.

استدلال

Bitwarden، LastPass، 1Password و Dashlane همگی محصولات تجاری آماده هستند.

  • انواع مشابهی از ویژگی‌ها برای کاربران، تیم‌ها، سازمان‌ها و غیره.

  • قابلیت دسکتاپ برای Windows و Mac و قابلیت موبایل برای Android و iOS.

  • افزونه‌های مرورگر برای Chrome و Firefox، برای پر کردن خودکار فرم و غیره.

Bitwarden دو مزیت نسبت به بقیه دارد:

  • Bitwarden متن‌باز است، یعنی امنیت آن را همتایان می‌توانند بازبینی کنند و همچنین شرکت مورد تقدیر گستردهٔ توسعه‌دهندگان امنیت‌محور است.

  • حکایت‌های کارکنان نرم‌افزار ترجیح چشمگیر Bitwarden نسبت به بقیه را توصیف می‌کنند.

نمونهٔ نوشتهٔ خوب معمول: https://jcs.org/2017/11/17/bitwarden

سایت رأی‌گیری کنار هم معمول: https://stackshare.io/stackups/bitwarden-vs-dashlane

KeyPass، pass، GPG و غیره را به تعویق می‌اندازیم زیرا پیچیدگی اضافی دارند. همهٔ این‌ها برای کاربران فنی راه‌حل‌های خوبی به نظر می‌رسند. GPG به‌ویژه برای کاربران فنی که قابلیت‌های فرمان‌محور میان‌سیستمی می‌خواهند عالی به نظر می‌رسد.

KMS را به تعویق می‌اندازیم زیرا قفل‌شدگی به یک ارائه‌دهندهٔ واحد دارد.

برای نیازهای سیستم‌محور Vault را انتخاب می‌کنیم، زیرا نقدها شگفت‌انگیز مثبت‌اند و HashiCorp سابقهٔ عالی در نرم‌افزار و پشتیبانی باکیفیت دارد.

رویکردهای اشتراکی مانند اسناد مشترک، کانال‌های مشترک، پوشه‌های شبکهٔ مشترک و غیره را وتو می‌کنیم. این‌ها کیفیت‌های امنیتی‌ای را که می‌خواهیم فراهم نمی‌کنند.

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

پیامدها

توسعه‌دهندگان ممکن است لازم باشد رازها را در دو جا پیگیری کنند: Bitwarden برای دسترسی کاربرمحور و Vault برای دسترسی سیستم‌محور.

مرتبط

تصمیمات مرتبط

تصمیم دربارهٔ اینکه کدام سرور CI/CD انتخاب شود باید شامل اثبات توانایی دسترسی به رازها باشد.

باید تصمیم بگیریم رازها را از نظر سیاست‌ها، چرخش، سازمان‌ها و غیره چگونه مدیریت کنیم.

الزامات مرتبط

رازها نیازمندی‌های مرتبطی برای انطباق، ممیزی و جذب/خروج منابع انسانی خواهند داشت.

مصنوعات مرتبط

انتظار داریم ممکن است برخی رازها را به متغیرهای محیطی صادر کنیم.

اصول مرتبط

به‌آسانی برگشت‌پذیر.

به‌آسانی موازی، یعنی استفاده از انواع مدیران گذرواژه آسان است.

ارزان برای آزمودن، یعنی آزمایش رایگان وجود دارد و تعهدی نیست.

توضیحات

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

Vault by HashiCorp

Vault دقیقاً همان چیزی است که اینجا می‌خواهید.

با این حال Vault را مستقیم در تولید نیندازید، ابتدا آن را در محیط آزمون راه‌اندازی کنید، چون مستندات HashiCorp می‌تواند بسیار ناقص باشد حتی اگر محصولاتشان شگفت‌انگیز باشند.

منحنی یادگیری بسیار تندی دارد و راه‌اندازی آن ساده نیست.

راه‌اندازی اولیه کمی دردسر است. با این حال کاملاً ارزشش را دارد و جامعه به‌اندازهٔ کافی از آن پشتیبانی می‌کند که کار شما راه بیفتد.

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

راه‌اندازی اولیه نیاز به ور رفتن با helm chartهای آن‌ها (vault و consul) داشت. هرچند از نظر فنی می‌توانید از بک‌اندهای بسیار دیگری استفاده کنید، من واقعاً توصیه نمی‌کنم. اگر دادهٔ زیادی برای ذخیره ندارید، بک‌اند/consul می‌تواند بسیار کوچک باشد.

حتماً با استفاده از CLI راحت/آشنا شوید، چون GUI بیشتر شبیه یک اثبات مفهوم/پورتال تبلیغاتی برای نسخهٔ سازمانی آن‌هاست.

این واقعیت که نمی‌توانید آن را «پر کنید» دردسر است. مثلاً اگر 5 فیلد دارید باید هر فیلد را برای هر مورد به‌صورت دستی اضافه کنید. بنابراین این‌طور نیست که فیلدها را برای یک دستهٔ مشخص از پیش تعریف کنید و آن فیلدها را برای همهٔ موارد آن دسته پر کنید، بیشتر شبیه «هر بار همه‌چیز را تولید می‌کنید» است که (به نظر من) دردسر بزرگی است.

ممکن است بخواهید goldfish را هم به‌عنوان UI روی vault ببینید. جلب تیمتان به آن را کاملاً آسان می‌کند. آن‌ها یک دمو هم دارند. 1. consul را راه‌اندازی کنید. 2. vault را با اشاره به consul راه‌اندازی کنید. 3. goldfish را با اشاره به vault راه‌اندازی کنید. 3. برای پشتیبان‌گیری یک cron job برای اجرای consul snapshot راه‌اندازی کنید.

LastPass

LastPass Teams. ما از آن استفاده می‌کنیم، قالب‌های سفارشی، ACL دارد، به نظر من چیزی کم ندارد.

من LastPass را در سازمانم پیاده کردم و به آن C+/B- می‌دهم. بزرگ‌ترین مشکل اخیر کمبود قابلیت اطمینان است. در 90 روز گذشته ساعت‌های متعددی بوده که vaultها به‌اجبار در حالت آفلاین قرار گرفته‌اند. این برای سازمان من مطلوب نیست چون به‌معنای واقعی کلمه بیش از 4,000 گذرواژه در بیش از 20 پوشهٔ مشترک ذخیره شده است. همان‌طور که می‌توانید با این‌همه گذرواژه تصور کنید، دست‌کم چند تا روزانه به‌روزرسانی یا اضافه می‌شوند. اگر مشکلات بیش از یکی دو ساعت طول بکشد طرح DR داریم: یک اسکریپت هر شب یک خروجی CSV از vault را امضا و رمزگذاری می‌کند که می‌توان آن را به keepass وارد کرد.

LastPass افت‌های گزارش‌نشدهٔ کیفیت سرویس داشته است: ورود «کار می‌کند» اما سایت‌ها را نمی‌آورد، ویژگی‌های تصادفی در پنل مدیریت خراب‌اند، و کلیدها برای پوشه‌های مشترک سطح بالای جدید درست به اشتراک گذاشته نمی‌شوند. من یک کاربر «فشار کلید»/پشتیبان خاص دارم که در هر گروه هست. معمولاً ورود به‌عنوان آن کاربر هر مشکل اشتراک کلید را رفع می‌کند، اما نه وقتی سرویس افت کرده باشد، صرف‌نظر از آنچه صفحهٔ وضعیت می‌گوید...

برای ادغام می‌تواند آسان باشد اگر ACLهای مناسب با مدل حداقل امتیاز دارید، مثلاً اگر کاربری روی یک مدخل یا پوشه هم خواندن و نوشتن و هم فقط خواندن داشته باشد، فقط مجوز فقط‌خواندنی می‌گیرد. متأسفانه ACLهای سازمان من بهترین نیستند، بنابراین به دلیل ماهیت وابستهٔ صدها ACL ما که با مدل حداقل امتیاز خوب منطبق نمی‌شود، از API تدارک JSON و حدود 500 خط python استفاده کردم. در نهایت همهٔ ACLهایی را که کاربر در آن‌ها بود گرفتم و نوعی پیمایش وابستگی انجام دادم.

اگر ساختار ACL یا گروه شما از قبل با در نظر گرفتن ساختار حداقل امتیاز ساخته شده باشد، ابزار همگام‌سازی AD/LDAP برای Windows خوب کار خواهد کرد.

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

Bitwarden

Bitwarden ابزارهای خوبی پیرامون خود دارد (WebUI، CLI، موبایل، دسکتاپ). قابل میزبانی شخصی است و راه‌اندازی آن نسبتاً آسان. مستندات نسبتاً خوب دارد و ابزار توصیه‌شده توسط PrivacyTools است.

EnvKey

https://www.envkey.com/ یک saas است. پیاده‌سازی، ادغام و مدیریت آن واقعاً آسان است.

ویژگی‌ها:

  • از کلیدهای API و اعتبارنامه‌ها محافظت کنید.

  • پیکربندی را در همه‌جا همگام نگه دارید.

  • مدیریت هوشمند و رمزگذاری‌شدهٔ سرتاسری پیکربندی و رازها.

  • از اشتراک ناامن و پراکندگی پیکربندی جلوگیری کنید.

  • در چند دقیقه ادغام کنید.

قابلیت‌ها:

  • پیکربندی و سطوح دسترسی همهٔ برنامه‌ها، محیط‌ها و تیم‌هایتان را در یک جا مدیریت کنید.

  • هر محیط توسعه یا سرور را تنها با یک متغیر محیطی پیکربندی کنید.

مزایا:

  • صفحهٔ اصلی خوب.

  • ارزش‌پیشنهاد روشن.

  • برنامهٔ وب از نظر بصری عالی.

  • دادهٔ نمونهٔ برتر، مثلاً Algolia، AWS، Datadog، GitHub، Stripe و غیره.

  • 30 دقیقه با بنیان‌گذار دربارهٔ شرکت، UI و غیره صحبت کردم. Dane آگاه، صادق دربارهٔ مزایا/معایب و شریکی عملی به نظر می‌رسد.

  • شرکت اساساً یک شرکت معمول Y Combinator با 1 بنیان‌گذار است. در ژانویهٔ 2018 مبلغ $120K جذب کرد.

  • تمرکز بر رسیدن به ویژگی‌های سازمانی است، به‌ویژه گذار از میزبانی ابری EnvKey به درون‌سازمانی یا BYOC.

  • مسیر بالقوهٔ پیش رو: شروع با EnvKey برای سهولت، سپس بعداً (یا به موازات) افزودن Vault.

Confidant by Lyft

https://lyft.github.io/confidant/

Confidant یک سرویس متن‌باز مدیریت راز است که ذخیره‌سازی و دسترسی کاربرپسند به رازها را به شیوه‌ای امن فراهم می‌کند، از توسعه‌دهندگان Lyft.

احراز هویت KMS: Confidant مسئلهٔ مرغ و تخم‌مرغ احراز هویت را با استفاده از AWS KMS و IAM حل می‌کند تا نقش‌های IAM بتوانند توکن‌های احراز هویت امنی تولید کنند که Confidant بتواند راستی‌آزمایی‌شان کند. Confidant همچنین grantهای KMS را برای نقش‌های IAM شما مدیریت می‌کند، که به نقش‌های IAM اجازه می‌دهد توکن‌هایی تولید کنند که برای احراز هویت سرویس‌به‌سرویس یا انتقال پیام‌های رمزگذاری‌شده میان سرویس‌ها قابل استفاده‌اند.

رمزگذاری در حالت سکون رازهای نسخه‌دار: Confidant رازها را به‌صورت فقط‌افزودنی در DynamoDB ذخیره می‌کند و با استفاده از رمزنگاری متقارن احراز هویت‌شدهٔ Fernet برای هر بازنگری هر راز یک کلید دادهٔ یکتای KMS تولید می‌کند.

رابط وب کاربرپسند برای مدیریت رازها: Confidant یک رابط وب AngularJS ارائه می‌دهد که به کاربران نهایی اجازه می‌دهد رازها، نگاشت رازها به سرویس‌ها و تاریخچهٔ تغییرات را به‌آسانی مدیریت کنند.

Devolutions Password Server

https://server.devolutions.net/

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

یک گنجینهٔ گذرواژهٔ جامع و بسیار ایمن که به شما اجازه می‌دهد دسترسی به حساب‌های دارای امتیاز خود را کنترل کنید و همزمان دید کلی شبکه را برای مدیران سیستم بهبود می‌دهد و تجربه‌ای روان برای کاربران نهایی فراهم می‌کند.

ویژگی‌ها: گنجینهٔ گذرواژهٔ متمرکز سازمانی، گنجینهٔ خصوصی ویژهٔ کاربر، مدیر گذرواژه، تزریق اعتبارنامه، ادغام Active Directory، کنترل دسترسی مبتنی بر نقش، احراز هویت دومرحله‌ای، آمادهٔ سازمان، محدودیت‌های IP، قابلیت‌های مدیریتی، تولیدکنندهٔ خودکار گذرواژه، دسترسی با برنامهٔ موبایل، تاریخچهٔ گذرواژه، گزارش‌های دسترسی، هشدارهای ایمیلی.

  • از رمزگذاری داده پشتیبانی می‌کند

  • از چندین طرح احراز هویت از جمله LDAP، O365 و کاربران محلی با پشتیبانی MFA از منابع متعدد پشتیبانی می‌کند

  • چندین مخزن/گنجینه با کنترل‌های دسترسی ریزدانه برای چندین تیم

  • رابط وب مدرن

  • گنجینه‌های خصوصی اعتبارنامه و اتصال برای اعتبارنامه‌ها/اتصال‌های شخصی

  • برنامه‌های موبایل برای IOS/Android

  • گزارش‌های ممیزی برای هر مدخل، چه کسی/چه چیزی/چه زمانی با یک پرسش اختیاری دربارهٔ اینکه چرا دسترسی می‌یابند

  • قالب‌های قابل‌سفارشی‌سازی (هرچند صدها نوع اتصال را به‌صورت بومی پشتیبانی می‌کنند)

  • ویژگی‌های بسیار بیشتر و یک کلاینت ضخیم Windows/Mac (Remote Desktop Manager) که می‌توانید با آن همگام شوید و گزینه‌ها را بسیار گسترش می‌دهد...اتصال‌های تک‌کلیکی

  • قیمت چندان بد نیست - تا 15 کاربر برای سرور گذرواژه 500 دلار در سال است

Secret Server by Thycotic

https://thycotic.com/products/secret-server/

ویژگی‌های نسخهٔ درون‌سازمانی:

  • کنترل کامل بر سیستم‌ها و زیرساخت امنیتی سرتاسری خود

  • نرم‌افزار را در مرکز دادهٔ درون‌سازمانی یا نمونهٔ ابر خصوصی مجازی خود مستقر کنید

  • الزامات قانونی و نظارتی را برآورده کنید که ایجاب می‌کنند همهٔ داده‌ها و سیستم‌ها درون‌سازمانی باشند

ویژگی‌های نسخهٔ ابری:

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

  • مقیاس‌پذیری ارتجاعی همگام با رشد شما

  • کنترل‌ها و افزونگی ارائه‌شده توسط Azure با SLA آپ‌تایم 99.9%

بازخورد کاربران:

  • ما از آن محصول استفاده می‌کردیم. به‌آسانی دور زده می‌شد و قوانین فقط برای افراد باهوش کار می‌کنند. کاربران تنبل یا نادان می‌توانند به‌آسانی آن را در یک فضای تیمی خراب کنند. وقتی با آن‌ها صحبت می‌کنید قیمت‌ها قابل مذاکره‌اند.

  • می‌توانید آن را با SQL express و یک جعبهٔ Win 7 اجرا کنید.

  • ارزان.