লঞ্চার পণ্য Bitnami ডকুমেন্টেশনimaxe CLI ব্লগ যোগাযোগ
imaxe secrets সিক্রেট v1.0.0

লোকাল সিক্রেট, ডিফল্টেই সুরক্ষিত

একটি CSPRNG এবং 0600 অনুমতি দিয়ে ইনস্ট্যান্সের সিক্রেটগুলো (পাসওয়ার্ড, পাসফ্রেজ, কী) তৈরি করে, পড়ে ও রোটেট করে। সিরিয়াল AMI-তে আইডেমপোটেন্ট: generate সিক্রেটটি কেবল তখনই তৈরি করে যখন সেটি বিদ্যমান নয়, আর get pipe-এর জন্য পরিষ্কার আউটপুট দেয়।

$ imaxe secrets generate mariadb --len 32 --format password
সংস্করণ
v1.0.0
সাবকমান্ড
4
কনফিগ
/etc/imaxe/secrets.yml
root প্রয়োজন
হ্যাঁ
অনুমতি
0600

এই মডিউল কী করে #

আপনার ইনস্ট্যান্সের প্রায় প্রতিটি সার্ভিসের একটি সিক্রেট প্রয়োজন: ডাটাবেসের পাসওয়ার্ড, কোনো ইন্টিগ্রিটি টুলের passphrase, একটি API কী… এগুলো হাতে হাতে রাখা—বা আরও খারাপ, ডিফল্ট অবস্থায় ছেড়ে দেওয়া—একটি মেশিন কম্প্রোমাইজড হওয়ার অন্যতম সাধারণ উপায়।

secrets মডিউলটি লোকালে এই জীবনচক্র সামলায়: প্রতিটি সিক্রেটকে একটি ক্রিপ্টোগ্রাফিকভাবে সুরক্ষিত জেনারেটর (CSPRNG) দিয়ে তৈরি করে, 0600 অনুমতিতে সংরক্ষণ করে (কেবল root সেটি পড়তে পারে), একটি pipe-এ চেইন করার জন্য প্রস্তুত পরিষ্কার আউটপুট দিয়ে সেটি ফেরত দেয়, এবং প্রয়োজনে সেটিকে রোটেট করে। সবকিছু ডোমেইন অনুযায়ী সাজানো হয় (উদাহরণস্বরূপ mariadb বা tripwire), এবং প্রতিটি ডোমেইনের একাধিক ফিল্ড থাকতে পারে।

সিরিয়াল AMI-তে ডিফল্টেই সুরক্ষিত

generate আইডেমপোটেন্ট: যদি কোনো ডোমেইনের সিক্রেট ইতিমধ্যে বিদ্যমান থাকে, এটি সেটিকে স্পর্শ করে না। এভাবে একই ইমেজ প্রতিটি ইনস্ট্যান্সের প্রথম বুটে তার সিক্রেটগুলো তৈরি করতে পারে, আর দুটি মেশিন একই পাসওয়ার্ড শেয়ার করে না। মানগুলো কখনও লগ করা হয় না বা list-এ দেখানো হয় না।

দ্রুত গাইডধাপে ধাপে কাজ

সাধারণ কাজ #

আপনি যা করতে চান তা বেছে নিন। প্রতিটি রেসিপিতে কমান্ডটি আগে থেকেই লেখা থাকে — শুধু ডোমেইনটি আপনার নিজেরটি দিয়ে বদলান এবং কপি করুন-এ চাপ দিন।

1

কোনো সার্ভিসের সিক্রেট তৈরি করা

একটি ডোমেইনের জন্য একটি শক্তিশালী পাসওয়ার্ড তৈরি করে, কেবল যদি সেটি এখনও বিদ্যমান না থাকে।

ubuntu ইউজার দিয়ে SSH-এর মাধ্যমে আপনার সার্ভারে সংযুক্ত হন।

mariadb ডোমেইনের সিক্রেট তৈরি করুন। আইডেমপোটেন্ট হওয়ায়, ওভাররাইট হওয়ার ভয় ছাড়াই আপনি যতবার খুশি এটি চালাতে পারেন:

terminal
$ sudo imaxe secrets generate mariadb

অন্য কোনো টুলের জন্য এবং একটি নির্দিষ্ট ফিল্ডে একটি দীর্ঘ passphrase প্রয়োজন? --format, --len--field সমন্বয় করুন:

terminal
$ sudo imaxe secrets generate tripwire --field local.passphrase --format passphrase --len 40
সিক্রেটটি 0600 অনুমতিতে সংরক্ষিত থাকে। যদি এটি ইতিমধ্যে বিদ্যমান থাকত, তা পরিবর্তন হয়নি — কমান্ডটি তবুও সফলভাবে শেষ হয়।
2

ব্যবহারের জন্য একটি সিক্রেট পড়া

কাঁচা মানটি পান, অন্য একটি কমান্ডে চেইন করার জন্য প্রস্তুত।

get কেবল মানটিই প্রিন্ট করে, কোনো সাজসজ্জা বা অতিরিক্ত লাইনব্রেক ছাড়া, যাতে আপনি এটি pipe-এর মাধ্যমে অন্য প্রসেসে পাস করতে পারেন:

terminal
$ sudo imaxe secrets get mariadb

সিক্রেটটি কি ডোমেইনের একটি নির্দিষ্ট ফিল্ডে আছে? --field দিয়ে সেটি নির্দেশ করুন:

terminal
$ sudo imaxe secrets get tripwire --field local.passphrase
আউটপুট পরিষ্কার: আপনি PASS="$(sudo imaxe secrets get mariadb)" করতে পারেন এবং এটি সরাসরি আপনার স্ক্রিপ্টে ব্যবহার করতে পারেন।
3

একটি সিক্রেট রোটেট করা

মানটিকে একটি নতুন মান দিয়ে প্রতিস্থাপন করে এবং ডোমেইনটিকে রোটেটেড হিসেবে চিহ্নিত করে।

ডোমেইনের জন্য একটি নতুন মান তৈরি করুন। generate-এর বিপরীতে, rotate বিদ্যমান সিক্রেটটি প্রতিস্থাপন করেই ফেলে:

terminal
$ sudo imaxe secrets rotate mariadb
ডোমেইনটি রোটেটেড হিসেবে চিহ্নিত হয় (তারিখটি আপনি list-এ দেখতে পাবেন)। ঐ সিক্রেট ব্যবহারকারী সার্ভিসটিকে get-এর নতুন মান দিয়ে হালনাগাদ করতে ভুলবেন না।
4

কোন ডোমেইনগুলো আছে তা দেখা

কোনো মান প্রকাশ না করে মেটাডেটা দেখুন।

ডোমেইনগুলো তাদের মেটাডেটাসহ তালিকা করুন (কখন তৈরি হয়েছে এবং কখন রোটেট হয়েছে)। এটি কখনও সিক্রেটটি নিজে দেখায় না:

terminal
$ sudo imaxe secrets list

এটি কি কোনো স্ক্রিপ্ট বা স্বয়ংক্রিয় যাচাইয়ের জন্য প্রয়োজন? JSON আউটপুট চান:

terminal
$ sudo imaxe secrets list --json
স্ক্রিন বা লগে কোনো মান ফাঁস না করেই আপনি এক নজরে দেখতে পান ইনস্ট্যান্সটি কোন সিক্রেটগুলো পরিচালনা করে এবং কোনগুলো রোটেট করা উচিত।
মানটি কোথায় গিয়ে পৌঁছায় খেয়াল রাখুন

সিক্রেটটি ডিস্কে থাকা অবস্থায় কেবল root দ্বারা পাঠযোগ্য। আপনি যেই get দিয়ে এটি পড়েন, এটি আপনার টার্মিনাল ও আপনার shell-এ চলে যায়: এটি হিস্ট্রিতে (history), অতিরিক্ত এক্সপোর্ট করা এনভায়রনমেন্ট ভেরিয়েবলে বা লগে রেখে দেওয়া এড়িয়ে চলুন। "$(sudo imaxe secrets get mariadb)"-এর মতো সুনির্দিষ্ট কমান্ড সাবস্টিটিউশন ব্যবহার করাই ভালো।

CLI রেফারেন্সকমান্ড, ফ্ল্যাগ ও ফাইল

সিনোপসিস #

uso
imaxe secrets <subcomando> [<dominio>] [--field CLAVE] [flags]

সব সাবকমান্ডের root সুবিধা প্রয়োজন (sudo ব্যবহার করুন) কারণ এগুলো /etc/imaxe/-এর অধীনে 0600 ফাইল পড়ে ও লেখে। মেশিন-পাঠযোগ্য আউটপুট পেতে, যা scripting-এর জন্য উপযুক্ত, list-এ --json যোগ করুন। মনে রাখবেন: get মানটিকে কাঁচা অবস্থায়, সাজসজ্জা ছাড়া, pipe-এর জন্য প্রস্তুত করে প্রকাশ করে।

সাবকমান্ড #

সাবকমান্ডকী করেপ্রাসঙ্গিক ফ্ল্যাগ
generateডোমেইনের সিক্রেট বিদ্যমান না থাকলে তৈরি করে (আইডেমপোটেন্ট, CSPRNG)। ডোমেইন ছাড়া, generate_on_first_boot-এর সিক্রেটগুলো তৈরি করে।--len, --format, --field
getএকটি সিক্রেটের মান পরিষ্কার আউটপুটে ফেরত দেয়, pipe-এর জন্য উপযুক্ত।--field
rotateএকটি নতুন সিক্রেট তৈরি করে এবং ডোমেইনটিকে রোটেটেড হিসেবে চিহ্নিত করে।--field
listডোমেইন ও মেটাডেটা তালিকা করে (তৈরি, রোটেট)। কখনও মান দেখায় না।--json

আর্গুমেন্ট ও ফ্ল্যাগ #

ফ্ল্যাগটাইপডিফল্টবিবরণ
<dominio>stringসিক্রেটের ডোমেইন (যেমন mariadb, tripwire)। getrotate-এ বাধ্যতামূলক। generate-এ, খালি = generate_on_first_boot-এর ডোমেইনগুলো।
--fieldstringvalueডোমেইনের ভেতরের ফিল্ড। প্রতি ডোমেইনে একাধিক সিক্রেট সংরক্ষণ করতে দেয় (যেমন local.passphrase)।
--lenint32generate-এ: সিক্রেটের দৈর্ঘ্য অক্ষরে।
--formatenumpasswordgenerate-এ: মানের ফরম্যাট — password, passphrase বা hex
--jsonboolfalselist-এ, মেটাডেটাকে stdout-এ কাঠামোবদ্ধ JSON হিসেবে প্রকাশ করে।

ফাইল ও পাথ #

পাথবিষয়বস্তু
/etc/imaxe/secrets.ymlমডিউলের কনফিগারেশন: ডিফল্ট মান (length, format), ডোমেইন এবং generate_on_first_boot-এর তালিকা। 0600 অনুমতিতে সংরক্ষণ করা হয়।

secrets.yml-এর উদাহরণ:

/etc/imaxe/secrets.yml
defaults:
  length: 32
  format: password
domains: {}
generate_on_first_boot:
  - mariadb
  - tripwire

ঐ কনফিগারেশন দিয়ে, প্রথম বুটে ডোমেইন ছাড়া একটি sudo imaxe secrets generate চালালে ডিফল্ট দৈর্ঘ্য ও ফরম্যাট দিয়ে mariadbtripwire-এর সিক্রেটগুলো তৈরি হয়।

এক্সিট কোড ও লগ #

প্রতিটি চালানো একটি কোড ফেরত দেয় যা আপনি echo $? দিয়ে যাচাই করতে পারেন — স্ক্রিপ্টে চেইন করার জন্য উপযোগী:

0OKঅপারেশন সম্পন্ন (কোনো পরিবর্তন ছাড়া আইডেমপোটেন্ট ক্ষেত্রটিও অন্তর্ভুক্ত)।
1ERRশ্রেণিবিহীন সাধারণ ত্রুটি। অনুমতি এবং কনফিগ ফাইল যাচাই করুন।
2USAGEঅবৈধ বা অনুপস্থিত আর্গুমেন্ট (যেমন ডোমেইন ছাড়া get)।
3NOTFOUNDঅনুরোধকৃত ডোমেইন বা ফিল্ড বিদ্যমান নেই।

get-এর পরিষ্কার আউটপুট কাজে লাগিয়ে একটি স্ক্রিপ্টে সাধারণ ব্যবহার:

terminal
$ sudo imaxe secrets generate mariadb \
  && sudo imaxe secrets get mariadb | some-tool --stdin-password \
  || echo "falló con código $?"

সমস্যা সমাধান #

লক্ষণসম্ভাব্য কারণসমাধান
NOTFOUND আসে (কোড 3)ডোমেইন বা --field এখনও তৈরি হয়নি।প্রথমে এটি secrets generate <dominio> দিয়ে তৈরি করুন (এবং একই --field)।
USAGE আসে (কোড 2)ডোমেইন উল্লেখ না করেই get বা rotate চালানো হয়েছে।ডোমেইনটি আর্গুমেন্ট হিসেবে দিন; ঐ সাবকমান্ডগুলোতে এটি বাধ্যতামূলক।
generate মান পরিবর্তন করে নাসিক্রেটটি ইতিমধ্যে বিদ্যমান ছিল: generate নকশা অনুযায়ীই আইডেমপোটেন্ট।আপনি যদি একটি নতুন মান চান, secrets rotate <dominio> ব্যবহার করুন।
পড়ার সময় Permission deniedফাইলটি 0600 এবং আপনি সুবিধা ছাড়াই এটি চালিয়েছেন।কমান্ডটি sudo দিয়ে চালান; কেবল root সিক্রেটটিতে প্রবেশ করতে পারে।

সিক্রেট মডিউল নিয়ে আটকে গেছেন?

«imaxe <module> status --json» এর আউটপুট সহ আমাদের লিখুন, আমরা দ্রুত উত্তর দেব।

সাপোর্টে যোগাযোগ করুন