احراز هویت و خواندن اسرار با HashiCorp Vault (منسوخ شده)

ساخت وبلاگ

این آموزش نحوه احراز هویت، پیکربندی و خواندن اسرار با HashiCorp’s Vault از GitLab CI/CD را نشان می دهد.

توجه داشته باشید

احراز هویت با HashiCorp Vault با استفاده از CI_JOB_JWT در GitLab 15. 9 منسوخ شد و قرار است توکن در GitLab 16. 0 حذف شود. برای احراز هویت با HashiCorp Vault به جای آن از نشانه های ID استفاده کنید.

الزامات

این آموزش فرض می کند که شما با GitLab CI/CD و Vault آشنا هستید.

  • یک حساب کاربری در GitLab.
  • دسترسی به سرور Vault در حال اجرا (حداقل نسخه 1. 2. 0) برای پیکربندی احراز هویت و ایجاد نقش ها و خط مشی ها. برای HashiCorp Vaults، این می تواند نسخه Open Source یا Enterprise باشد.

توجه داشته باشید

شما باید URL vault. example. com زیر را با URL سرور Vault خود و gitlab. example. com را با URL نمونه GitLab خود جایگزین کنید.

چگونه کار می کند

هر کار دارای JSON Web Token (JWT) است که به عنوان متغیر CI/CD با نام CI_JOB_JWT ارائه شده است. این JWT می تواند برای احراز هویت با Vault با استفاده از روش JWT Auth استفاده شود.

بار نمونه JWT:

JWT با استفاده از RS256 کدگذاری شده و با یک کلید خصوصی اختصاصی امضا شده است. زمان انقضای توکن در صورت مشخص شدن روی زمان کار یا در صورت عدم وجود 5 دقیقه تنظیم می شود. کلید مورد استفاده برای امضای این نشانه ممکن است بدون اطلاع قبلی تغییر کند. در چنین حالتی، تلاش مجدد کار با استفاده از کلید امضای فعلی، JWT جدید تولید می کند.

می توانید از این JWT و نقطه پایانی JWKS نمونه خود (https://gitlab. example. com/-/jwks) برای احراز هویت با سرور Vault استفاده کنید که به روش تأیید اعتبار JWT برای احراز هویت پیکربندی شده است.

هنگام پیکربندی نقش ها در Vault، می توانید از ادعاهای محدود شده برای مطابقت با ادعاهای JWT استفاده کنید و محدود کنید که هر کار CI/CD به کدام اسرار دسترسی دارد.

برای برقراری ارتباط با Vault، می توانید از مشتری CLI آن استفاده کنید یا درخواست های API را انجام دهید (با استفاده از curl یا کلاینت دیگر).

مثال

احتیاط JWT ها اعتبارنامه هایی هستند که می توانند به منابع دسترسی داشته باشند. مراقب باشید آنها را کجا می چسبانید!

فرض کنید گذرواژه های پایگاه های داده مرحله بندی و تولید خود را در سرور Vault که در http://vault. example. com:8200 اجرا می شود ذخیره کرده اید. رمز عبور شما pa$$w0rd و رمز عبور تولید شما real-pa$$w0rd است.

طاق kv دریافت کنید
vault auth jwt موفقیت! روش jwt auth فعال در: jwt/ 

سپس خط مشی هایی ایجاد کنید که به شما امکان می دهد این اسرار را بخوانید (یکی برای هر راز):

خط مشی طاق نوشتن myproject-staging -

شما همچنین به نقش هایی نیاز دارید که JWT را با این سیاست ها مرتبط کند.

یکی برای مرحله بندی به نام myproject-staging:

vault write auth/jwt/role/myproject-staging -> و یکی برای تولید به نام MyProject-Production:
طاق نوشتن auth/jwt/نقش/myProjec t-تولید -> این مثال از ادعاهای محدود استفاده می کند تا مشخص کند که فقط یک JWT با مقادیر تطبیق برای ادعاهای مشخص شده مجاز به تأیید اعتبار است.

همراه با شاخه های محافظت شده ، می توانید چه کسی قادر به تأیید اعتبار و خواندن اسرار باشد.

برای استفاده از همان خط مشی برای لیستی از پروژه ها ، از namespace_id استفاده کنید:

هر یک از ادعاهای موجود در JWT را می توان با لیستی از مقادیر موجود در مطالبات محدود مطابقت داد. مثلا:
token_explicit_max_ttl مشخص می کند که نشانه صادر شده توسط طاق ، پس از احراز هویت موفقیت آمیز ، محدودیت طول عمر 60 ثانیه دارد.

user_laim نام نام مستعار هویت ایجاد شده توسط طاق را بر روی یک ورود موفقیت آمیز مشخص می کند.

bound_claims_type تفسیر مقادیر bound_claims را پیکربندی می کند. اگر روی گلوب تنظیم شود ، مقادیر به صورت گلوب تفسیر می شوند ، و * با هر تعداد شخصیت مطابقت دارد.

زمینه های ادعای ذکر شده در جدول فوق نیز می تواند با استفاده از نام Accessor از JWT AUTH در طاق ، برای اهداف الگوی خط مشی Vault قابل دسترسی باشد. نام Mount Accessor (Accessor_Name در مثال زیر) را می توان با اجرای لیست Vault Auth بازیابی کرد.

الگوی خط مشی مثال استفاده از یک زمینه ابرداده نامگذاری شده به نام Project_Path:

path "secret/data/>/مرحله بندی/*"

مثال نقش برای پشتیبانی از خط مشی قالب بندی شده در بالا ، نقشه برداری از قسمت Project Project_Path به عنوان یک قسمت ابرداده از طریق استفاده از پیکربندی COMENT_MAPPINGS:

برای لیست کامل گزینه ها ، به مستندات ایجاد نقش Vault مراجعه کنید.

احتیاط

همیشه با استفاده از یکی از ادعاهای ارائه شده (به عنوان مثال ، project_id یا namespace_id) نقش های خود را در پروژه یا فضای نام محدود کنید. در غیر این صورت هر JWT تولید شده توسط این نمونه ممکن است با استفاده از این نقش تأیید شود.

اکنون ، روش تأیید اعتبار JWT را پیکربندی کنید:

Vault Writ Auth/JWT/Config Bound_issuer مشخص می کند که فقط یک JWT با صادرکننده (یعنی ادعای ISS) تنظیم شده به gitlab. example. com می تواند از این روش برای تأیید اعتبار استفاده کند ، و نقطه پایانی JWKS (https: // gitlab. به عنوان مثال. com /-/jwks) باید برای اعتبارسنجی نشانه استفاده شود.

برای لیست کامل گزینه های پیکربندی موجود ، به مستندات API Vault مراجعه کنید.

کار زیر ، هنگامی که برای شعبه پیش فرض اجرا می شود ، قادر به خواندن اسرار تحت Secret/MyProject/Staging/، اما نه اسرار تحت Secret/MyProject/Production/:

توجه داشته باشید

اگر از یک نمونه طاق تهیه شده توسط پلت فرم Cloud Hashicorp استفاده می کنید ، باید متغیر Vault_Namespace را صادر کنید. مقدار پیش فرض آن مدیر است.

read secrets staging example

کار زیر قادر به تأیید اعتبار با استفاده از نقش تولید myProject است و رازهای زیر/راز/myProject/تولید را می خواند/:

read secrets production example

دسترسی توکن به اسرار طاق را محدود کنید

  • با استفاده از ادعاهای محدود طاق برای گروه های خاص با استفاده از Group_Claim.
  • مقادیر کدگذاری سخت برای ادعاهای محدود طاق بر اساس user_login و user_email کاربران خاص.
  • تنظیم محدودیت زمان طاق برای TTL از توکن همانطور که در token_explicit_max_ttl مشخص شده است ، جایی که توکن پس از احراز هویت منقضی می شود.
  • Scoping JWT به شاخه های محافظت شده Gitlab که محدود به زیر مجموعه ای از کاربران پروژه هستند.
  • Scoping JWT به برچسب های محافظت شده Gitlab ، که محدود به زیر مجموعه ای از کاربران پروژه هستند.

کمک و بازخورد

اسناد

این صفحه را ویرایش کنید تا یک خطا برطرف شود یا در یک درخواست ادغام بهبود یابد. یک مسئله ایجاد کنید تا پیشرفت در این صفحه را پیشنهاد کنید.

تولید - محصول

اگر چیزی وجود دارد که در مورد این ویژگی دوست ندارید ، مسئله ای ایجاد کنید. با ارسال درخواست ویژگی ، عملکرد را پیشنهاد دهید. برای کمک به شکل دادن به ویژگی های جدید ، به نگاه اول بپیوندید.

در دسترس بودن ویژگی ها و آزمایشات محصول

قیمت گذاری را مشاهده کنید تا تمام ردیف ها و ویژگی های Gitlab یا به روزرسانی را ببینید. GitLab را به صورت رایگان با دسترسی به همه ویژگی ها به مدت 30 روز امتحان کنید.

کمک بگیر

اگر آنچه را که به دنبال آن بودید پیدا نکردید ، اسناد را جستجو کنید.

اگر می خواهید در مورد چیز خاصی کمک کنید و می توانید از پشتیبانی جامعه استفاده کنید ، در انجمن GitLab ارسال کنید.

برای مشکلات تنظیم یا استفاده از این ویژگی (بسته به اشتراک GitLab).

آموزش استراتژی معاملاتی...
ما را در سایت آموزش استراتژی معاملاتی دنبال می کنید

برچسب : نویسنده : ملیحه نصیری بازدید : <-PostHit-> تاريخ : سه شنبه 14 شهريور 1402 ساعت: 16:32