পুতুলের মধ্যে, আমি কীভাবে একটি পাসওয়ার্ড ভেরিয়েবল নিরাপদ করব (এই ক্ষেত্রে একটি মাইএসকিউএল পাসওয়ার্ড)?


13

আমি প্যাকেটটি প্যারামিটারাইজড ক্লাসের সাথে মাইএসকিউএল সরবরাহ করার জন্য ব্যবহার করছি:

class mysql::server( $password ) {

        package { 'mysql-server': ensure => installed }
        package { 'mysql': ensure => installed }

        service { 'mysqld':
                enable => true,
                ensure => running,
                require => Package['mysql-server'],
        }

        exec { 'set-mysql-password':
                unless => "mysqladmin -uroot -p$password status",
                path => ['/bin', '/usr/bin'],
                command => "mysqladmin -uroot password $password",
                require => Service['mysqld'],
        }
}

আমি কীভাবে রক্ষা করতে পারি $password? বর্তমানে, আমি নোড সংজ্ঞা ফাইল থেকে ডিফল্ট বিশ্বের পঠনযোগ্য অনুমতি সরিয়ে দিয়েছি এবং স্পষ্টভাবে puppetACL এর মাধ্যমে পড়ার অনুমতি দিয়েছি ।

আমি ধরে নিচ্ছি অন্যরাও একই ধরণের পরিস্থিতি পেরিয়েছে তাই সম্ভবত এর চেয়ে আরও ভাল অনুশীলন রয়েছে।

উত্তর:


3

পুতুল এবং মাইএসকিউএল নিয়ে কাজ করার সময়, আমি রুট পাসওয়ার্ডটি /root/.my.cnf- এ রাখি, এই ফাইলটি লক করে রাখি এবং তারপরে ডাটাবেস সার্ভারে এসএসএইচ অ্যাক্সেসকে সীমাবদ্ধ রাখি।

হ্যাঁ, পরিষ্কার টেক্সটে ডিবি সার্ভারে মূল পাসওয়ার্ড সংরক্ষণ করা সর্বাধিক সুরক্ষা সমাধান নয়। তবে আপনি যদি এই ফাইলে মাইএসকিএল রুট পাসওয়ার্ডটি লিখেন তবে লোকালহোস্ট থেকে লগইন করতে মাইএসকিএল রুট অ্যাকাউন্টটি সুরক্ষিত করা পাসওয়ার্ডকে পুতুলের বাইরে রাখবে এবং প্রক্রিয়া তালিকার psসারণির বাইরেও রাখবে ।

অতিরিক্তভাবে, যদি কারও কাছে /root/.my.cnf ফাইলটি পড়ার রুট অ্যাক্সেস থাকে তবে তাদের সম্ভবত স্থানীয় মাইএসকিউএল ডেমন থামাতে এবং ডাটাবেসে তাত্ক্ষণিকভাবে রুট অ্যাক্সেস পাওয়ার জন্য ব্যবহারকারীদের সারণী ছাড়াই ডিমন পুনরায় আরম্ভ করতে পারে।


2
যদি mysql 5.6 এবং তার পরে থাকে তবে mysql_config_editor ব্যবহার করুন। তাহলে কমপক্ষে পাসওয়ার্ডটি সরল পাঠ্যে থাকবে না।
কেজাউ তোরে

1

অন্য কেউ সম্ভবত এমন কিছু প্লাগ-ইন বা অনুরূপ নির্দেশ করতে পারে যা আমাকে সংশোধন করে তবে এই বিষয়ে সাধারণ উপায় হ'ল এনক্রিপ্ট করা পাসওয়ার্ড সংরক্ষণ করা, সাধারণ টেক্সট পাসওয়ার্ড নয়।

যাইহোক, আমি এখনই আপনাকে বলতে পারি, মাইএসকিউএল আপনাকে একটি এনক্রিপ্ট করা পাসওয়ার্ড ব্যবহার করার অনুমতি দেয় না - অন্যথায়, পাসওয়ার্ডটি হ'ল এবং হ্যাশ আপনাকে যে কোনও উপায়ে লগইন করতে দেয়।

আশেপাশে প্রচুর "হ্যাকস" রয়েছে যা আপনাকে তৃতীয় পক্ষের ইউটিলিটি যেমন হিরা এবং জিপিজি ব্যবহার করতে দেয় । স্পষ্টতই, আপনি নিজের রোল করতে পারেন - তবে পুতুলের নিজস্ব মেলিং তালিকাগুলিও এই পদ্ধতির পরামর্শ দেয়


1

আপনি এই পাসওয়ার্ডটি কার কাছ থেকে সুরক্ষিত করছেন তা নির্দিষ্ট করে নেই। আমি ধরে নিতে চলেছি এটির অন্যান্য সিসাদমিন বা সম্ভবত বিকাশকারীরা যাদের পুতুল মাস্টার এবং / অথবা ক্লায়েন্ট বাক্সগুলিতে অ্যাক্সেস রয়েছে তবে মূল পাসওয়ার্ডটি জানা দরকার নেই।

প্রাথমিকভাবে পাসওয়ার্ড সেট করার জন্য, আপনি এই বাক্য গঠনটি ব্যবহার করতে পারেন:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY PASSWORD '*6DF1FC54F0CCD999F55D59D3D88526878230C77C' WITH GRANT OPTION;

যা আপনাকে আপনার পুতুল কনফিগারেশনে একটি প্লেটেক্সট পরিবর্তে একটি এনক্রিপ্ট করা পাসওয়ার্ড সংরক্ষণ করতে দেয় allow

কমান্ড লাইনে mysqladminথাকা mysqlক্লায়েন্টটি ব্যবহার করার জন্য , আমি .my.cnfআপনার পুতুলের কনফিগারেশনে একটি ফাইল যুক্ত করা যা কোনও উপযুক্ত ব্যবহারকারীর হোম ডিরেক্টরিতে অন্তর্ভুক্ত হয়ে যায় is পুতুলের মাস্টারে এবং ক্লায়েন্টদের উভয়ই ফাইলের উপযুক্ত, সীমাবদ্ধ ফাইল অনুমতি থাকতে হবে।

আপনি যখন মিশ্রণে পুতুল যুক্ত করেন তখন এই ফাইল অনুমতিগুলির চারপাশে প্রচুর উপায় রয়েছে (যেমন কোনও এক্সিকিউটি লেখার জন্য) (ক্লায়েন্টদের থেকে ফাইলটি টান দেয়) তবে এটি একটি বিশ্ব পঠনযোগ্য ফাইলে পাসওয়ার্ড সংরক্ষণ করার চেয়ে উন্নতি বলে মনে হয়। আপনি যদি আপনার পুতুল কনফিগারেশনের জন্য কোনও সংস্করণ ব্যবস্থা ব্যবহার করেন তবে এটি আরও বেশি কঠিন।


1
তবে যদি কেউ এনক্রিপ্ট করা পাসওয়ার্ডটি পুনরুদ্ধার করে, তবে তারা লগইন করতে কেবল এনক্রিপ্ট করা স্ট্রিংটি ব্যবহার করতে পারে না?
অ্যান্ড্রু এম।

@ রেদুম্বা আমার সমস্ত পরীক্ষা-নিরীক্ষার সূত্র ধরে মনে হচ্ছে। সম্ভবত আমি এমন কিছু মিস করছি যা লাদাদাদাদা বিস্তারিতভাবে বর্ণনা করতে পারে।
বেলমিন ফার্নান্দেজ

3
না আপনি যখন মাইএসকিউএল এর IDENTIFIED BY PASSWORD '*HASH-HERE'পরিবর্তে ব্যবহার করেন তখন IDENTIFIED BY 'PASSWORD-HERE'হ্যাশটি সরাসরি userটেবিলের মধ্যে প্রবেশ করান । এর পরে আপনি পাসওয়ার্ড উত্পন্ন যে হ্যাশ লগ ইন করার ব্যবহার করতে হবে। আপনি পাসওয়ার্ড হ্যাশ সঙ্গে আপনার অনুদান কমান্ড স্বাভাবিকভাবে এবং টাইপ লগ ইন করে মত দেখাবে তা দেখতে পেতে পারেন SHOW GRANTS;। আপনি অন্যান্য ব্যবহারকারীদেরSHOW GRANTS FOR user@host;
লাদাদাদাদা

আহ, সুতরাং আপনি লগইন করতে হ্যাশ নিজেই ব্যবহার করতে পারবেন না, আমি দেখতে পাচ্ছি। তবে, যদি তার কোনও ক্লায়েন্ট থাকে যা ডাটাবেসের সাথে সংযোগ স্থাপন করতে পারে - বলুন, তার প্রথম প্রান্ত - তার এনক্রিপ্ট করা পাসওয়ার্ডও সংরক্ষণ করার একটি উপায় প্রয়োজন যা এটি চিন্তার খাদ্য।
অ্যান্ড্রু এম

0

এই লিঙ্কটি দুটি পদ্ধতির পরামর্শ দেয়: এনভায়রনমেন্ট ভেরিয়েবল ব্যবহার করা, এবং সাব-শেল ব্যবহার।

আমি মনে করি আপনি আপনার কমান্ডের চারপাশে একটি সাধারণ মোড়ক তৈরি করতে এবং এতে mysqladminআপনার এনক্রিপ্ট করা পাসওয়ার্ডটি পাস করতে পারেন। এই মোড়কটি পাসওয়ার্ডটি ডিক্রিপ্ট করে এটিকে পাস করবে mysqladmin। আপনার মোড়কটি রক্ষা করা দরকার কারণ এতে ডিক্রিপশন অংশ রয়েছে।

আপনার পরিবেশ এবং আপনার সিস্টেমে কাদের অ্যাক্সেস রয়েছে তার উপর নির্ভর করে আপনি যেভাবে নিজেকে আরও সুরক্ষিত মনে করছেন তা চয়ন করতে পারেন।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.