برنامه نویسی

کلید دسترسی IAM اتصال سرویس AWS را در خط لوله Azure DevOps مدیریت کنید

خلاصه

  • Service Connection نشان دهنده یک سرویس اصلی در Azure DevOps است، هویتی که از احراز هویت Headless استفاده می کند.
  • ما یک اتصال از Azure Pipelines برای خدمات خارجی و راه دور برای اجرای وظایف در یک کار ایجاد می کنیم. پس از برقراری اتصال، می توانید اتصال سرویس را مشاهده، ویرایش و امنیت اضافه کنید.
  • برای اینکه Azure DevOps (ADO) با سرویس‌های AWS کار کند، افزونه AWS Toolkit را برای Microsoft Azure DevOps نصب می‌کنیم که حاوی وظایفی است که می‌توانید در تعاریف ساخت و انتشار در Azure DevOps برای تعامل با سرویس‌های AWS استفاده کنید (مخصوصاً زمانی که عامل ADO نمونه‌های EC2 نباشد. می تواند نمایه نمونه را فرض کند)
  • هنگامی که یک اتصال سرویس با نوع AWS در ADO ایجاد می کنیم، باید حساب AWS ایجاد کنیم و کلید Access و کلید اعتبار را برای اتصال سرویس برای دسترسی به سرویس AWS پر کنیم.
  • به عنوان بهترین روش امنیتی توصیه می شود کلیدهای دسترسی IAM را به صورت دوره ای بچرخانید. در این پست وبلاگ، با نحوه ایجاد اتصال سرویس AWS با کمترین امتیاز و بهترین عملکرد امنیتی و نحوه چرخش خودکار کلید دسترسی با استفاده از سرویس‌های بدون سرور AWS مانند AWS lambda، قانون Eventbridge و AWS Stepfunction آشنا خواهید شد.

فهرست مطالب


🚀 بررسی اجمالی راه حل

  • کلید دسترسی IAM توسط خط لوله Azure DevOps برای مدیریت منابع توسعه AWS و همچنین برخی منابع تولید استفاده می شود، بنابراین باید به صورت هفتگی چرخانده شود. و برای کاهش تأثیر بر کارهای خط لوله، ما این عملیات را در روز یکشنبه برنامه ریزی می کنیم.
  • این عملیات توسط تابع مرحله ای AWS هماهنگ شده است که توسط توابع لامبدا برای کنترل کلیدهای دسترسی چرخان، ذخیره کلید دسترسی در Secret Manager و به روز رسانی کلید دسترسی جدید به اتصال سرویس Azure DevOps (نوع AWS) جذب می شود، در نهایت، وضعیت نتیجه را به کانال شل
  • این عملیات همچنین به اعتبارنامه های ADO مانند رمز دسترسی شخصی (PAT)، URL فضای کاری و شناسه پروژه نیاز دارد که در ذخیره پارامتر SSM ذخیره می شوند.

🚀 جزئیات جریان فرآیند

### 🚀 عملکرد Lambda – چرخش کلید دسترسی و به‌روزرسانی به مدیر مخفی

  • منبع کنترل rotate-access-key.py
  • این توابع به نقش سرویس IAM نیاز دارند که دارای مجوز ایجاد/حذف کلید دسترسی IAM و قرار دادن آن در مدیر مخفی است.

### 🚀 تابع Lambda – ارسال به Slack

  • منبع کنترل send-slack.py
  • این تابع به نقش سرویس IAM نیاز دارد که مجوز دریافت URL webhook Slack را از ذخیره پارامتر دارد

### 🚀 عملکرد Lambda – اتصال سرویس Azure DevOps

  1. راه حل ایجاد اتصال سرویس Azure DevOps – با استفاده از تابع لامبدا، اما دو راه برای این وجود دارد

    • ساخت لایه سفارشی لامبدا که شامل ماژول Azure DevOps Python برای اجرای Azure DevOps CLI است.
    • تصویر ظرف داکر لامبدا را بسازید
  2. چالش ها

    • چرا اینجا چالش داریم؟ بسته azure-cli مشکل بزرگی می تواند وزن کم کند. در زمان نوشتن این پست، نصب یا بسته بندی azure-cli بیش از 1 گیگابایت اندازه نیاز دارد که برای عملکرد لامبدا بسیار بزرگ است، به خصوص لایه لامبدا سفارشی دارای محدودیت 250 مگابایت (از حالت فشرده) برای فایل فشرده استقرار است.
    • خوشبختانه، راه حلی برای کاهش اندازه تصویر داکر وجود دارد که فقط با نصب کتابخانه‌های Azure cli کافی
  3. تصویر ظرف لامبدا را با استفاده از خط خطی بسازید

    • Dockerfile که تقریباً تصویر کانتینر را می سازد 299.41 MB. تصویر ظرف لامبدا به صورت CLI لاجوردی برای اجرا پخش می‌شود azure DevOps دستورات

    • برای CI، ساخت و استقرار خودکار به تصویر ظرف داکر لامبدا، از Codepipeline با مراحل زیر استفاده می‌کنیم.

      • کد منبع را برای commit merge to master بکشید
      • کد بیلد را با buildspec.yml راه اندازی کنید

      1682268586 294 کلید دسترسی IAM اتصال سرویس AWS را در خط لوله

  4. ما می‌توانیم از azure-DevOps-Python-api برای نوشتن کد پایتون برای مدیریت اتصال سرویس ADO استفاده کنیم، اما استفاده از ابزار Wrapper آن مانند Azure DevOps CLI بسیار راحت‌تر است، بنابراین من bash script run.sh را می‌نویسم و ​​از Python برای اجرای آن استفاده می‌کنم.

      subprocess.check_call(f"export AZURE_DevOps_EXT_PAT={_pat}; ./run.sh {access_key} {cred}", shell=True)
    

🚀 تابع مرحله را تست کنید

  • پیش نیاز: ابتدا باید پشته خط لوله را مستقر کنید، کد را به codecommit فشار دهید تا خط لوله را برای استقرار پشته ها راه اندازی کند و تصویر کانتینر ساخت/فشار/به روز رسانی را راه اندازی کند.
  • بیایید نمودار کامل را بررسی کنیم

1682268587 565 کلید دسترسی IAM اتصال سرویس AWS را در خط لوله

  • ماشه دستی start execution از ماشین آلات دولتی برای آزمایش

1682268587 828 کلید دسترسی IAM اتصال سرویس AWS را در خط لوله

🚀 نتیجه گیری

  • ما اکنون یک روش خودکار برای چرخش هفتگی کلید دسترسی AWS در اتصال سرویس Azure DevOps داریم. هر وضعیت/مرحله ناموفق با جزئیات مربوط به مرحله ناموفق و پیام خطا نسبت به سستی هشدار داده می شود.
  • باید آگاه باشید که simflexcloud-d1-azure-devops-sfn-rotate-key-task وظیفه شامل کلید اعتبار AWS در آن نیست Output به دلیل امنیت، بنابراین باید آن مقدار را از Secret Manager دریافت کند

منابع:


از تصویر دائو

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

همچنین ببینید
بستن
دکمه بازگشت به بالا