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

در حوزه کانتینرها، اسرار دارایی هایی مانند کلیدهای SSH، گواهینامه های SSL و رمزهای عبور هستند که برای اتصال به سرویس هایی مانند حساب های ابری، API ها و سایر کانتینرها استفاده می شوند. از Secrets می توان برای مدیریت این داده های حساس مورد نیاز کانتینرها در زمان اجرا استفاده کرد. مشکل این است که شما نمی خواهید آن اسرار را در تصویر یا منبع خود ذخیره کنید، زیرا این امر می تواند منجر به مشکلات امنیتی جدی شود.
تصور کنید، اگر بخواهید، برخی از کاربران شرور به Docker Swarm شما هک میکنند و سپس آن رمزهای عبور یا گواهیها را مشاهده میکنند تا به حسابهای شما دسترسی پیدا کنند. که انجام نخواهد شد.
برای جلوگیری از چنین سناریویی، باید از اسرار استفاده کنید. به جای اینکه آن رمزهای عبور در کانتینرها و تصاویر ذخیره شوند، راز را با Docker ایجاد میکنید که رمزگذاری شده است، و سپس میتوانید راز را به کانتینرهای خود منتقل کنید، بنابراین هرگز به عنوان متن ساده دیده نمیشوند. با این سیستم، استفاده از این اسرار علیه شما برای مجرمان سایبری دشوارتر است.
من به شما نشان خواهم داد که چگونه یک راز با Docker ایجاد کنید و سپس چگونه از آن برای استقرار یک سرویس Docker استفاده کنید.
دیدن: کیت استخدام: توسعه دهنده Back-end (TechRepublic Premium)
آنچه شما نیاز دارید
برای انجام این کار، به یک نمونه در حال اجرا از Docker نیاز دارید. فرقی نمیکند که یک نمونه در لینوکس، macOS یا ویندوز اجرا میشود یا یک کلاستر Docker Swarm کامل. این تمام چیزی است که شما نیاز دارید. بیایید رازهایی را به اشتراک بگذاریم.
چگونه یک راز ایجاد کنیم
اولین کاری که ما انجام خواهیم داد این است که راز خود را ایجاد کنیم. ما از دستور printf استفاده می کنیم و خروجی آن را به دستور docker لوله می کنیم تا یک مخفی به نام ایجاد کنیم my_test_secret
. برای انجام این کار، وارد کنترلر Docker خود شوید و دستور زیر را صادر کنید:
printf "This is my super secret secret" | docker secret create my_test_secret -
با فهرست کردن تمام اسرار فعلی خود با دستور زیر می توانید بررسی کنید که آیا راز با موفقیت ایجاد شده است:
docker secret ls
شما باید یک لیست مانند این را ببینید:
ttx3h2zarswj4wxgum5heobfx my_test_secret 4 seconds ago 4 seconds ago
نحوه ایجاد سرویسی که از راز استفاده می کند
کاری که اکنون انجام خواهیم داد این است که یک سرویس Redis ایجاد کنیم که به راز دسترسی کامل دارد. نکته خوب در مورد این این است که کانتینر واقعی راز را در داخل ذخیره نمی کند، اما می تواند از طریق مکانیسم اسرار داکر از آن استفاده کند.
برای استقرار آن سرویس، با استفاده از my_test_secret
مخفی، دستور چیزی شبیه به این است:
docker service create --name redis --secret my_test_secret redis:alpine
بررسی کنید که سرویس با دستور زیر اجرا می شود:
docker service ps redis
شما باید لیستی را مشاهده کنید که به شکل زیر است:
0z6v0js2hu5q redis.1 redis:alpine dockernode1 Running Running 34 seconds ago
با دستور زیر بررسی کنید که سرویس به رمز دسترسی دارد:
docker container exec $(docker ps --filter name=redis -q) ls -l /run/secrets
شما باید چیزی شبیه به این را در خروجی ببینید:
-r--r--r-- 1 root root 17 May 24 13:16 my_test_secret
در نهایت می توانید محتویات Secret را با دستور زیر مشاهده کنید:
docker container exec $(docker ps --filter name=redis -q) cat /run/secrets/my_test_secret
خروجی باید چیزی شبیه به این باشد:
This is my super secret secret
حالا، اگر ظرف را commit کنید، راز دیگر در دسترس نیست. این کار را با دستور انجام دهید:
docker commit $(docker ps --filter name=redis -q) committed_redis
بررسی کنید که راز دیگر با دستور زیر در دسترس نیست:
docker run --rm -it committed_redis cat /run/secrets/my_test_secret
شما باید در خروجی، چیزی شبیه به این را ببینید:
cat: can't open '/run/secrets/my_test_secret': No such file or directory
failed to resize tty, using default size
سپس می توانید با دستور زیر دسترسی به Secret را حذف کنید:
docker service update --secret-rm my_test_secret redis
و این، دوستان من، نحوه ایجاد یک راز در Docker و استفاده از آن در یک سرویس است.
در TechRepublic مشترک شوید چگونه فناوری را در یوتیوب کار کنیم برای تمام آخرین توصیه های فنی برای حرفه ای های تجاری از جک والن.
لینک منبع