دسترسی به پایگاه داده فقط به موقع به آمازون شفق قطبی با استفاده از Bytebase

در مدیریت دیتابیس مدرن ، هنگامی که یک حادثه رخ می دهد ، توسعه دهندگان اغلب برای رفع عیب یابی و حل مسئله نیاز به دسترسی سریع به بانکهای اطلاعاتی تولید دارند. با این حال ، روش های سنتی ، مانند استفاده از رمزهای عبور استاتیک ، می توانند خطرات امنیتی را ایجاد کنند و مدیریت را پیچیده کنند.
aws iam auth
برای Amazon Aurora و RDS ، AWS IAM احراز هویت با امکان دسترسی موقت و ایمن بدون نیاز به چرخش رمز عبور ، راه حلی را ارائه می دهد. با iam auth:
-
نشانه های کوتاه مدت: به جای استفاده از رمز عبور استاتیک ، یک نشانه تأیید اعتبار موقت از طریق AWS SDK یا CLI ایجاد می شود. این نشانه ها محدود به زمان هستند (به طور پیش فرض ، به مدت 15 دقیقه معتبر).
-
هویت متمرکز: دسترسی از طریق سیاستهای IAM به جای خود DB کنترل می شود ، به شما امکان می دهد از سیاست های IAM ریز دانه و مدیریت هویت متمرکز AWS استفاده کنید.
-
رمزهای عبور سخت را از بین می برد: دیگر رمزهای عبور طولانی مدت در پرونده های پیکربندی یا متغیرهای محیط را ذخیره نمی کنید. در صورت نیاز به اتصال ، شما به سادگی یک نشانه را درخواست می کنید.
محدودیت
هنوز محدودیت هایی با AWS IAM AUTH وجود دارد:
-
پشتیبانی محدود موتور DB: فقط MySQL ، PostgreSQL و Amazon Aurora (MySQL/PostgreSQL- سازگار) از IAM AUTH پشتیبانی می کنند. سایر موتورهای RDS (به عنوان مثال ، SQL Server ، Oracle ، Mariadb) این کار را نمی کنند.
-
مدیریت کاربر سطح DB را جدا کنید: IAM می تواند کنترل کند که چه کسی می تواند به هم وصل شود ، اما پس از اتصال ، امتیازات DB کاربر هنوز توسط کمک های مالی بانک اطلاعاتی اداره می شود (به عنوان مثال ،
GRANT SELECT ON …
). شما نمی توانید مجوزهای سطح جدول ریز و درشت را صرفاً از طریق IAM مدیریت کنید. -
حسابرسی و دیدگاه های دیدنی: اگر برای همه یک کاربر پایگاه داده مشترک را انتخاب کنید ، مسیرهای حسابرسی برای هر کاربر را در داخل DB از دست می دهید. ایجاد یک کاربر DB در هر توسعه دهنده (و احتمالاً در هر هویت IAM) می تواند دست و پا گیر باشد. شما حسابرسی مفصلی دریافت می کنید اما با هزینه پیچیدگی مدیریت بیشتر.
-
پیچیدگی با تیم های بزرگ و ادغام شرکت: AWS SSO/یکپارچه سازی مرکز هویت ، مدیریت کاربر IAM را ساده می کند ، اما شما هنوز هم برای نقشه برداری بسیاری از توسعه دهندگان به کاربران DB (به اشتراک گذاشته شده در مقابل فرد) به یک استراتژی نیاز دارید. برای تیم های بزرگ ، نقشه برداری نقش ها/گروه ها برای کاربران DB می تواند پیچیده شود.
قسمت بایت
Bytebase یک راه حل DevSecops Dealsecops پایگاه داده منبع باز است که AWS IAM AUTH را تکمیل می کند:
-
پشتیبانی بیشتر موتور DB: Bytebase از MySQL ، Postgres ، Amazon Aurora و سایر موتورهای RDS پشتیبانی می کند (به عنوان مثال ، SQL Server ، Oracle ، Mariadb).
-
دسترسی ریز دانه از طریق بایتباز: حتی اگر یک کاربر DB مشترک را در Aurora/RDS انتخاب کنید (به عنوان مثال DB_IAM_DEV_USER) ، Bytebase مدل کاربر/نقش خود را حفظ می کند. هر توسعه دهنده با هویت فردی خود (یکپارچه با SSO) به بایتباز وارد می شود. می توانید مجوز پایگاه داده را در سطح جدول اعطا کنید.
-
حسابرسی در سطح پلتفرم: Bytebase دقیقاً کدام کاربر را انجام داده است ، حتی اگر پایگاه داده فقط یک کاربر DB مشترک را ببیند. این به شما مسیرهای حسابرسی برای هر کاربر را بدون سربار ایجاد کاربران جداگانه شفق قطبی/RDS DB یا سیاستهای جداگانه IAM در هر توسعه دهنده می دهد.
بررسی اجمالی
معماری زیر نشان می دهد که چگونه Bytebase امکان دسترسی به موقع (JIT) پایگاه داده برای آمازون شفق قطبی را فراهم می کند:
مؤلفه های معماری
-
Bytebase خود می تواند تحت نقش IAM باشد که می تواند با استفاده از کاربر مبتنی بر IAM به Aurora/RDS متصل شود.
-
توسعه دهندگان به Bytebase احراز هویت می کنند با IDP شرکت خود (از طریق SSO). توسعه دهندگان نیازی به دیدن یا ذخیره اعتبار DB ندارند. اقدامات هر توسعه دهنده به صورت جداگانه در بایتباز ردیابی می شود.
در این مدل ، شما کاربران DB گسسته یا خط مشی IAM گسسته برای هر توسعه دهنده ندارید. Bytebase دروازه بان است و اتصال DB واقعی هنوز از کاربر مبتنی بر IAM استفاده می کند.
گردش کار دسترسی به پایگاه داده JIT
- همه کاربران می توانند با IDP شرکت خود (از طریق SSO) به Bytebase تأیید کنند.
- DBAS Bytebase را برای اتصال به پایگاه داده Amazon Aurora MySQL خود پیکربندی می کند (Bytebase همچنین از سایر موتورهای RDS پشتیبانی می کند).
- توسعه دهنده درخواست دسترسی فقط به موقع (JIT) با زمان انقضا را مستقیماً از طریق بایتباز درخواست می کند.
- DBA درخواست را مرور کرده و آن را تأیید کنید.
- توسعه دهنده می تواند داده ها را از طریق ویرایشگر Bytebase SQL پرس و جو کند.
- اقدامات توسعه دهنده در گزارش حسابرسی بایتباز ردیابی می شود.
پیش نیازهای
برای این پیاده روی ، به موارد زیر نیاز دارید:
- یک حساب AWS
- کاربر AWS هویت و مدیریت دسترسی (IAM) با مجوزهای اتصال به آمازون شفق قطبی
- یک نمونه EC2 با Docker نصب شده
- یک پایگاه داده Amazon Aurora PostgreSQL برای ابرداده بایتباز
- یک پایگاه داده آمازون شفق قطبی Aurora MySQL که توسط Bytebase اداره می شود
AWS IAM را برای اتصال Aurora MySQL تنظیم کنید
احراز هویت AWS IAM را برای Aurora MySQL فعال کنید
در حالی که به عنوان مثال Aurora MySQL ایجاد می کنید ، باید احراز هویت AWS IAM را فعال کنید.
ایجاد سیاست IAM
-
به سیاستها IAM> بروید و روی ایجاد خط مشی کلیک کنید.
-
انتخاب کردن
RDS IAM Authentication
برای خدمات
-
انتخاب کردن
connect
اجازه وspecific
به عنوان منبعبشر بررسی کردنAny in this account.
-
نام آن را
rds-connect
و این سیاست را ایجاد کنید.
کاربر IAM ایجاد کنید
- رفتن به iam> کاربران و کلیک کنید کاربر ایجاد کنیدبشر نام آن را
rds-connector
بشر - انتخاب کردن
Attach policies directly
و انتخاب کنیدrds-connect
سیاست کلیک کردن طرف دیگر و سپس کلیک کنید کاربر ایجاد کنیدبشر -
در صفحه جزئیات کاربر ، کلیک کنید ایجاد کلید دسترسی، و انتخاب کنید
Application running on AWS compute service
به عنوان مورد استفاده از آنجا که شما به عنوان مثال EC2 Bytebase را اجرا خواهید کرد. کلیک کردن طرف دیگربشر -
سپس می توانید ذخیره کنید
Access key ID
وتSecret access key
برای استفاده بعدی
مرحله 1: بایت در نمونه EC2 اجرا کنید
-
به نمونه Aurora PostgreSQL متصل شوید و یک پایگاه داده ایجاد کنید
bb
برای ابرداده بایت. -
به نمونه EC2 وصل شوید و دستور زیر را برای شروع Bytebase اجرا کنید. خود را قرار دهید AWS_ACCESS_KEY_IDبا AWS_SECRET_ACCESS_KEYبا AWS_REGIONبا PG_URL در دستور
docker run --init -d \
-e AWS_ACCESS_KEY_ID=AKIxxxxxxxxxxxxxxEB4 \
-e AWS_SECRET_ACCESS_KEY=axBAyxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxQ7yUB \
-e AWS_REGION=ap-xxxxxxx-1 \
-e PG_URL=postgresql://postgres:xxxxx@database-pg-aurora-instance-1.ct4xxxxxxxx5.ap-xxxxx-1.rds.amazonaws.com:5432/bb \
--name bytebase \
--publish 8080:8080 --pull always \
bytebase/bytebase:3.2.0
مرحله 2: برای اتصال به Aurora MySQL از طریق AWS IAM پیکربندی کنید
-
اولین ثبت نام اعطا می شود سرپرست نقش ورود به سیستم ، کلیک کنید نمونه در نوار سمت چپ و کلیک کنید اضافه کردنبشر
-
انتخاب کردن mysql به عنوان نوع پایگاه داده. اطلاعات زیر را پر کرده و کلیک کنید ایجاد کردنبشر
- نام نمونه:
AWS Aurora MySQL Prod
- محیط:
Prod
- میزبان یا سوکت:
aurora-mysql-instance-prod.ctxxxxxxx5.ap-xxxxx-1.rds.amazonaws.com
- بندر:
3306
- روش اتصال:
AWS RDS IAM
- نام کاربری:
bytebase
- منطقه پایگاه داده:
ap-xxxxx-1
- کلیک کردن پروژه را انتخاب کنید در نوار بالا و ایجاد یک پروژه جدید
Aurora MySQL Project
بشر - (اختیاری) اگر هیچ پایگاه داده موجود در نمونه Aurora MySQL ندارید ، می توانید داده های نمونه کوچک کارمند را بررسی کرده و ابتدا آنها را به عنوان مثال وارد کنید.
- کلیک کردن بانک اطلاعاتی> پایگاه داده ها در نوار سمت چپ ، و سپس کلیک کنید انتقال در DB برای انتقال در پایگاه داده های موجود ، برای داده های نمونه ، این است
employee
بشر - کلیک کردن ویرایشگر SQL در نوار بالا ، به
employee
بانک اطلاعاتی دو بار روی کلیک کنیدemployee
پایگاه داده و داده ها را مشاهده خواهید کرد.
مرحله 3: توسعه دهنده درخواست دسترسی فقط به موقع (JIT) از طریق Bytebase را درخواست می کند
یک توسعه دهنده را ثبت کنید
-
به طور پیش فرض ،
(workspace) admin
دسترسی کامل به بانک اطلاعاتی دارد. کلیک کردن IAM & Admin> کاربران و گروه ها در نوار سمت چپ ، و سپس کلیک کنید کاربر را اضافه کنیدبشر -
یک کاربر ایجاد کنید
dev
با نقشProject Developer
بشر این نقش در سطح پروژه به طور خودکار برای همه پروژه ها اعمال می شود. -
به عنوان کاربر وارد شوید
dev
، کلیک کنید پروژه را انتخاب کنید در نوار کناری بالا ، و انتخاب کنیدAurora MySQL Project
-
کلیک کردن بانک اطلاعاتی> پایگاه داده ها در نوار سمت چپ ، باید دو پایگاه داده را مشاهده کنید
employee
بشر -
کلیک کردن ویرایشگر SQL در نوار بالا ، اتصال به
employee
بانک اطلاعاتی غیرممکن است. چون است برنامه جامعهبشر
مدیر دسترسی به توسعه دهنده به پایگاه داده (جامعه و برنامه حرفه ای) را اختصاص می دهد
در بایتباز جامعه وت برنامه طرفدار، مدیر/DBA می تواند دسترسی به توسعه دهنده به پایگاه داده را اختصاص دهد.
-
ورود به عنوان
admin
کاربر ، وارد شویدAurora MySQL Project
، کلیک کنید مدیریت> اعضای در نوار کناری چپ. -
کلیک کردن اعطای دسترسی، توسعه دهنده را انتخاب کنید
dev
، انتخاب کنیدSQL Editor User
نقش ، سپس 1 روز انقضا را تنظیم کنید و کلیک کنید تأیید کردن دکمه در اینجا ممکن است متوجه شوید برنامه جامعه، شما فقط می توانید دسترسی به کلیه پایگاه های داده موجود در پروژه را تنظیم کنید.
- پس از اعطای دسترسی ، به عنوان
dev
دوباره کاربر ، شما اکنون به پایگاه داده تولید در SQL Editor دسترسی دارید. پس از یک روز ، دسترسی به طور خودکار منقضی می شود.
توسعه دهنده درخواست JIT به پایگاه داده (برنامه سازمانی)
در بایتباز برنامه شرکت، می توانید دسترسی JIT به پایگاه داده تولید را درخواست کنید.
-
ورود به عنوان
admin
کاربر ، وارد شویدAurora MySQL Project
و لغوdev
دسترسی کاربر به پایگاه داده تولید. -
ارتقا به برنامه شرکتبشر ممکن است از اینجا یک دادگاه 14 روزه درخواست کنید.
-
کلیک کردن CI/CD > تصویب سفارشی در نوار کناری چپ. برای فعال کردن این ویژگی ، مجوزها را به نمونه Aurora MySQL اختصاص دهید.
برای توضیح در مورد تأیید سفارشی ، به نمودار زیر نگاهی بیندازید. با تعریف یک جریان تأیید سفارشی به همراه خط مشی ریسک ، بایتباز هنگام برآورده شدن سطح خطر مربوطه ، به طور خودکار جریان تأیید را تحریک می کند. در مورد ما ، ما یک سیاست پرخطر را برای آن تعریف می کنیم Request Querier Role
که در هنگام محیط ایجاد می شود Prod
بشر
- پیمایش به پایین به درخواست نقش querier بخش ، اضافه کنید
high
خطر یک جریان تأییدProject Owner
بشر
- کلیک کردن CI/CD > مرکز خطر در نوار کناری چپ. یک سیاست پرخطر را برای
Request Querier Role
که در هنگام محیط ایجاد می شودProd
بشر
- ورود به عنوان
dev
دوباره کاربر ، سپس به صفحه ویرایشگر SQL بروید. کلیک کردن به یک پایگاه داده متصل شوید یا برای شروع یک پایگاه داده را انتخاب کنیدبشر شما باید ببینیدhr_prod
وتhr_test
پایگاه داده های ذکر شده ، کلیک کنید درخواست برای درخواست دسترسی JIT.
-
راه دیگر رفتن به بانک اطلاعاتی> پایگاه داده ها صفحه ، کلیک کنید درخواست نقش querierبشر
-
در درخواست نقش querier معین ، انتخاب کنید به صورت دستی انتخاب کنید، پس
employee
salary
وتtitle
زیرhr_prod
پایگاه داده ، و کلیک کنید خوب دکمه در اینجا همچنین می توانید زمان انقضا را مشخص کنید که می تواند یک زمان خاص یا زمان نسبی باشد.
- یک شماره درخواست ایجاد می شود ، به صاحب پروژه (کاربر سرپرست) بروید ، بروید صادر کردن صفحه ، شما باید شماره درخواست را مشاهده کنید. کلیک کردن تصویب کردن دکمه برای تأیید درخواست.
- بازگشت به
dev
کاربر ، به ویرایشگر SQL، شما باید بتوانید ازemployee
جدول اگر از جداول دیگر پرس و جو می کنید ، خطایی دریافت می کنید و پیشنهاد می کنید دسترسی JIT را درخواست کنید.
-
پس از
dev
کاربر دسترسی را دریافت می کند ، او می تواند این حادثه را حل کند. کاربر سرپرست می تواند دسترسی را مستقیماً از مدیریت کردن > اعلان صفحه یا منتظر انقضا دسترسی باشید. -
admin
کاربر همچنین می تواند با کلیک بر روی پرونده حسابرسی را بررسی کند iam & Admin > گزارش حسابرسی در نوار کناری چپ. گزارش حسابرسی تمام تاریخچه دسترسی به داده ها را نشان می دهدdev
کاربر
پایان
در این پیاده روی ، ما هم مزایا و محدودیت های استفاده از احراز هویت AWS IAM را مورد بررسی قرار دادیم و نشان دادیم که چگونه Bytebase می تواند AWS IAM AUTH را تکمیل کند.
با لایه بندی Bytebase در بالای AWS IAM ، می توانید به یک راه حل دسترسی به پایگاه داده بدون رمز عبور ، سلف سرویس دسترسی پیدا کنید که کنترل دسترسی ریز دانه و ممیزی هر کاربر را فراهم می کند-بدون پیچیدگی مدیریت کاربران یا نقش های متعدد در سطح نمونه بانک اطلاعاتی.
علاوه بر این ، شما می توانید از API Bytebase استفاده کنید تا بیشتر این روند را خودکار کنید و با سایر ابزارهای مانند Slack ادغام شوید.