با استفاده از اسرار ، اعتبارنامه ها را به طور ایمن توزیع کنید

ساخت وبلاگ

این صفحه نحوه تزریق ایمن داده های حساس مانند رمزهای عبور و کلیدهای رمزگذاری را به غلاف نشان می دهد.

قبل از اینکه شروع کنی

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

داده های مخفی خود را به نمایندگی Base-64 تبدیل کنید

فرض کنید می خواهید دو قطعه داده مخفی داشته باشید: نام کاربری My-APP و رمز عبور 39528 $ VDG7JB. ابتدا از یک ابزار رمزگذاری BASE64 برای تبدیل نام کاربری و رمز عبور خود به نمایندگی Base64 استفاده کنید. در اینجا مثالی با استفاده از برنامه Base64 در دسترس است:

پژواک-n"برنامه من"|base64 پژواک-n'39528 $ vdg7jb'|base64 

خروجی نشان می دهد که نمایندگی Base-64 از نام کاربری شما BXKTYXBW است ، و نمایش پای ه-64 رمز عبور شما MZK1MJGKDMRNN0PI است.

احتیاط: از یک ابزار محلی که به سیستم عامل خود اعتماد دارد برای کاهش خطرات امنیتی ابزارهای خارجی استفاده کنید.

یک راز ایجاد کنید

در اینجا یک فایل پیکربندی وجود دارد که می توانید برای ایجاد یک راز استفاده کنید که نام کاربری و رمز عبور شما را نگه می دارد:

سر و صدا: v1  نوع: راز  ابرداده:  نام: مخفیگاه آزمون  داده ها:  نام کاربری: bxktyxbw  کلمه عبور: mzk1mjgkdmn0pi 
  1. راز را ایجاد کنید
kubectl اعمال کنی د-f https://k8s. io/examples/pods/inject/secret. yaml 
Kubectl مخفی تست مخفی کنید 

خروجی:

نام نوع داده سن آزمون سن و مخفی مخفی 2 1M 
Kubectl مخفی تست مخفی را توصیف کنید 

خروجی:

نام: فضای نام مخفی آزمون: برچسب های پیش فرض: حاشیه نویسی: نوع: داده های مات ==== رمز عبور: 13 بایت نام کاربری: 7 بایت 

یک راز را مستقیماً با Kubectl ایجاد کنید

اگر می خواهید از مرحله رمزگذاری Base64 پرش کنید ، می توانید با استفاده از دستور kubectl ایجاد مخفی ، همان راز را ایجاد کنید. مثلا:

kubectl ایجاد مخفی تست-مخفی-از لیترال="نام کاربری = My-App"-از لفظی='رمز عبور = 39528 $ vdg7jb' 

این راحت تر است. رویکرد دقیق که قبلاً نشان داده شده است در هر مرحله صریحاً برای نشان دادن آنچه اتفاق می افتد اجرا می شود.

یک غلاف ایجاد کنید که از طریق یک جلد به داده های مخفی دسترسی داشته باشد

در اینجا یک فایل پیکربندی وجود دارد که می توانید برای ایجاد یک غلاف استفاده کنید:

سر و صدا: v1  نوع: غلاف  ابرداده:  نام: مخفیانه-تست-  نشان:  ظروف:  - نام: آزمون کانتینر  تصویر: nginx  حجم حجم:  #نام باید با نام حجم زیر مطابقت داشته باشد  - نام: مخفی-حجم  مسخره: /و غیره /حجم مخفی  فقط خواندنی: درست است، واقعی  #داده های مخفی از طریق یک حجم در معرض ظروف موجود در غلاف قرار می گیرد.  حجم:  - نام: مخفی-حجم  راز:  راز: مخفیگاه آزمون 
  1. POD را ایجاد کنید:
kubectl اعمال کنی د-f https://k8s. io/examples/pods/inject/secret-pod. yaml 
Kubectl Get Pod Secret-Test-Pod 

خروجی:

نام وضعیت آماده راه اندازی مجدد سن مخفی-تست-pod 1/1 در حال اجرا 0 42m 
کابکتلاعطا کردن- i-t-test-test-pod- /bin /bash 
#این را در پوسته داخل ظرف اجرا کنید ls /etc /secret-volume 

خروجی دو پرونده را نشان می دهد ، یکی برای هر قطعه از داده های مخفی:

نام کاربری رمز عبور 
#این را در پوسته داخل ظرف اجرا کنید پژواک "$(گربه/و غیره/حجم مخفی/نام کاربری)" پژواک "$(گربه/و غیره/رمزعبور/رمز عبور)" 

خروجی نام کاربری و رمز عبور شماست:

My-App 39528 $ vdg7jb 

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

کلیدهای مخفی پروژه در مسیرهای فایل خاص

همچنین می توانید مسیرهای موجود در حجم را که کلیدهای مخفی پیش بینی شده است ، کنترل کنید. برای تغییر مسیر هدف هر کلید ، از قسمت . spec. volumes []. Secret. Items استفاده کنید:

سر و صدا: v1  نوع: غلاف  ابرداده:  نام: mypod  نشان:  ظروف:  - نام: mypod  تصویر: redis  حجم حجم:  - نام: foo  مسخره: "/و غیره/foo"  فقط خواندنی: درست است، واقعی  حجم:  - نام: foo  راز:  راز: mysecret  موارد:  - کلید: نام کاربری  مسیر: گروه من/نام تجاری من 

وقتی این غلاف را مستقر می کنید ، موارد زیر اتفاق می افتد:

  • کلید نام کاربری از MySecret در مسیر/etc/foo/my-group/my-useame به جای AT/etc/foo/eame در دسترس است.
  • کلید رمز عبور از آن شیء مخفی پیش بینی نشده است.

اگر کلیدها را صریحاً با استفاده از . spec. volumes []. Secret. Items لیست می کنید ، موارد زیر را در نظر بگیرید:

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

مجوزهای POSIX را برای کلیدهای مخفی تنظیم کنید

می توانید بیت های اجازه دسترسی به فایل POSIX را برای یک کلید مخفی تنظیم کنید. اگر مجوز را مشخص نکنید ، 0644 به طور پیش فرض استفاده می شود. همچنین می توانید یک حالت فایل POSIX پیش فرض را برای کل حجم مخفی تنظیم کنید ، و در صورت لزوم می توانید از هر کلید غلبه کنید.

به عنوان مثال ، می توانید یک حالت پیش فرض مانند این را مشخص کنید:

سر و صدا: v1  نوع: غلاف  ابرداده:  نام: mypod  نشان:  ظروف:  - نام: mypod  تصویر: redis  حجم حجم:  - نام: foo  مسخره: "/و غیره/foo"  حجم:  - نام: foo  راز:  راز: mysecret  حالت پیش فرض: 0400 

راز بر روی /etc /foo نصب شده است. تمام پرونده های ایجاد شده توسط Secret Volume Mount دارای مجوز 0400 هستند.

توجه: اگر در حال تعریف یک POD یا یک الگوی POD با استفاده از JSON هستید ، مراقب باشید که مشخصات JSON از لفظات اکتال برای اعداد پشتیبانی نمی کند زیرا JSON 0400 را مقدار اعشاری 400 می داند. در JSON ، به جای آن از مقادیر اعشاری برای پیش فرض استفاده کنید. اگر در حال نوشتن YAML هستید ، می توانید DefaultMode را به صورت اکتال بنویسید.

متغیرهای محیط کانتینر را با استفاده از داده های مخفی تعریف کنید

می توانید داده ها را در اسرار به عنوان متغیرهای محیط موجود در ظروف خود مصرف کنید.

اگر یک کانتینر از قبل در یک متغیر محیط راز مصرف کند ، یک به روزرسانی مخفی توسط ظرف دیده نمی شود مگر اینکه مجدداً راه اندازی شود. راه حل های شخص ثالث برای ایجاد مجدد راه اندازی مجدد هنگام تغییر اسرار وجود دارد.

متغیر محیط کانتینر را با داده های یک راز واحد تعریف کنید

  • یک متغیر محیط را به عنوان یک جفت ارزش کلیدی در یک راز تعریف کنید:
kubectl ایجاد یک پس زمینه عمومی مخفی-از لیترال=نام تجاری="پسوند-Admin" 
سر و صدا: v1  نوع: غلاف  ابرداده:  نام: env-stingle-secret  نشان:  ظروف:  - نام: Envars-test-container  تصویر: nginx  با توجه به:  - نام: نام مخفی_  ارزش:  مخفیگاه:  نام: کاربر پشتی  کلید: نام تجاری باکتری 
kubectl ایجا د-f https://k8s. io/examples/pods/inject/pod-single-secret-env-variable. yaml 
کابکتلاعطا کردن- i-t en v-singl e-secret - /bin /s h-c'Echo $ Secret_Useame' 

خروجی است

با پشتوانه 

متغیرهای محیط کانتینر را با داده های اسرار چندگانه تعریف کنید

  • مانند مثال قبلی ، ابتدا اسرار را ایجاد کنید.
kubectl ایجاد یک پس زمینه عمومی مخفی-از لیترال=نام تجاری="پسوند-Admin" kubectl ایجاد DB-user مخفی-از لیترال=نام تجاری DB='db-admin' 
سر و صدا: v1  نوع: غلاف  ابرداده:  نام: Envvars-multiple-secrets  نشان:  ظروف:  - نام: Envars-test-container  تصویر: nginx  با توجه به:  - نام: backend_useame  ارزش:  مخفیگاه:  نام: کاربر پشتی  کلید: نام تجاری باکتری  - نام: db_useame  ارزش:  مخفیگاه:  نام: db-user  کلید: نام کاربر DB 
kubectl ایجا د-f https://k8s. io/examples/pods/inject/pod-multiple-secret-env-variable. yaml 
کابکتلاعطا کردن- i-T envvar s-multipl e-secrets - /bin /s h-c'env |grep _useame ' 

خروجی است

db_useame = db-admin backend_useame = backend-admin 

تمام جفت های ارزش کلید را در یک راز به عنوان متغیرهای محیط کانتینر پیکربندی کنید

توجه: این عملکرد در Kubeetes v1. 6 و بعد از آن موجود است.

  • یک راز حاوی چندین جفت ارزش کلید ایجاد کنید
kubectl ایجاد مخفی تست-مخفی-از لیترال=نام کاربری="برنامه من"-از لفظی=کلمه عبور='39528 $ vdg7jb' 
سر و صدا: v1  نوع: غلاف  ابرداده:  نام: envfrom-secret  نشان:  ظروف:  - نام: Envars-test-container  تصویر: nginx  حکایت کردن:  - مخفی کردن:  نام: مخفیگاه آزمون 
kubectl ایجا د-f https://k8s. io/examples/pods/inject/pod-esecret-envfrom. yaml 
کابکتلاعطا کردن- i-t envfro m-secret - /bin /s h-c"Echo" نام کاربری: $ نام کاربری  npassword: $ رمز عبور  n "" 

خروجی است

نام کاربری: رمز عبور APP: 39528 $ VDG7JB 

منابع

چه بعدی است

  • درباره اسرار بیشتر بدانید.
  • در مورد جلد ها بیاموزید.

بازخورد

این صفحه به شما کمک کرد؟

از نظر شما متشکریم. اگر یک سؤال خاص و پاسخگو در مورد نحوه استفاده از Kubeetes دارید ، از آن در مورد Onceflow Stack بپرسید. اگر می خواهید یک مشکل را گزارش کنید یا پیشنهاد بهبود را پیشنهاد دهید ، در repo github یک مسئله را باز کنید.

سیگنال های تجاری...
ما را در سایت سیگنال های تجاری دنبال می کنید

برچسب : نویسنده : عبدالله بوتیمار بازدید : <-PostHit-> تاريخ : چهارشنبه 15 شهريور 1402 ساعت: 21:00