সিসলগে পাসওয়ার্ড ফাঁস না করার জন্য আমি কীভাবে কিছু নির্দিষ্ট উত্তরীয় কাজের ভারসাম্য হ্রাস করতে পারি?


12

কখনও কখনও আমি কিছু কনফিগারেশন ফাইলে পাসওয়ার্ড লিখতে উত্তরীয় lineinfileবা blockinfileমডিউলগুলি ব্যবহার করতে চাই । যদি আমি এটি করি, সম্পূর্ণ লাইন বা ব্লক, পাসওয়ার্ড অন্তর্ভুক্ত আমার মধ্যে শেষ হবে syslog

যেহেতু আমি syslogআমার পাসওয়ার্ডগুলি সংরক্ষণ করার জন্য একটি নিরাপদ জায়গা হিসাবে বিবেচনা করি না , আমি কীভাবে উত্তরিকে আমার পাসওয়ার্ড ফাঁস না করতে বলতে পারি syslog? আমি আশা করি এটি করার একটি উপায় আছে, অন্যথায় আমি এটিকে জবাবদিহি করার একটি বড় সুরক্ষা সমস্যা হিসাবে বিবেচনা করব।

আপনি উদাহরণস্বরূপ এই বিজ্ঞাপন-আদেশটি দিয়ে এটি পুনরুত্পাদন করতে পারেন:

ansible localhost -m blockinfile -a 'dest=/tmp/ansible_password_leak create=yes block="Password = {{password}}"' -e 'password=secret'

এখানে কি শেষ হয় syslog:

ansible-blockinfile: Invoked with directory_mode=None force=None remote_src=None insertafter=None owner=None follow=False marker=# {mark} ANSIBLE MANAGED BLOCK group=None insertbefore=None create=True setype=None content=None serole=None state=present dest=/tmp/ansible_password_leak selevel=None regexp=None validate=None src=None seuser=None delimiter=None mode=None backup=False block=Password = secret

উদাহরণস্বরূপ আমি একটি ডেবিয়ান "জেসি" 8 সিস্টেমে আনসিবল উবুন্টু পিপিএ থেকে আনসিবল 2.0.0.2 ব্যবহার করেছি ।

উত্তর:


3

no_log অ্যাট্রিবিউট syslog- র মুখ লুকিয়ে তথ্য। এটি একক কাজে প্রয়োগ করা যেতে পারে

- name: secret task
  shell: /usr/bin/do_something --value={{ secret_value }}
  no_log: True

বা প্লেবুক:

- hosts: all
  no_log: True

সক্রিয় হওয়ার পরে ডিবাগিংটি সত্যই সম্ভব নয় তাই এটি কেবলমাত্র একক কাজের জন্য ব্যবহার করার পরামর্শ দেওয়া হয়। এই বৈশিষ্ট্যটি উত্তরীয় 1.5 সংস্করণ থেকে উপলব্ধ । ১.২ রিলিজের মুক্তির ঘোষণায় বলা হয়েছে:

সংবেদনশীল কাজগুলিকে সিস্লোগ থেকে আঘাত করা রোধ করতে এখন কার্যগুলি একটি "no_log = সত্য" বিকল্প নিতে পারে। (পাসওয়ার্ডগুলির মতো দেখতে পরামিতিগুলি ইতিমধ্যে ফিল্টার করা হয়েছিল)

পাসওয়ার্ড বেশিরভাগ ক্ষেত্রে ফিল্টার করা উচিত।


এটি কার্যকরভাবে পাসওয়ার্ডগুলি আড়াল করে syslogতবে এটি একই সময়ে কনসোল আউটপুটে লগিং আউটপুটটিকে অক্ষম করে। এটি পরিবর্তন করার কোনও উপায় আছে কি?
এফ

আমি দুঃখিত. আমি এই বিষয়ে সামান্য তথ্য পেয়েছি। আমি কেবল কাজের জন্য এবং শুধুমাত্র একবার আপনার খেলার ডিবাগ করার জন্য এই বৈশিষ্ট্যটি সেট করার পরামর্শ দেব to উদ্ধৃত হিসাবে উত্তরযোগ্যদের ইতিমধ্যে পাসওয়ার্ডগুলির মতো দেখতে পরামিতিগুলি ফিল্টার করা উচিত। সুতরাং এটি একটি বাগ হতে পারে। আবার আমি জানিনা যে প্যারামিটারটি একটি পাসওয়ার্ড কিনা তা কীভাবে উত্তরযোগ্য নির্ধারণ করে। এটি লুকানোর জন্য একটি বাগ / হারিয়ে যাওয়া বৈশিষ্ট্য password = XXX
হেনরিক পিঙ্গেল

আপনি কোথায় এমন ধারণা পেয়েছেন যে উত্তরিয়ায় পাসওয়ার্ডগুলি ডিফল্টরূপে লুকানো আছে? এটি ডকুমেন্টেশনের কোথাও উল্লেখ করা হয়েছে?
এফ

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

3

আমি ডিফল্ট আউটপুটগুলির জন্য পাসওয়ার্ডগুলি আড়াল করার জন্য একটি কলব্যাক প্লাগইন তৈরি করেছি, এটি পাসওয়ার্ডযুক্ত কীগুলির জন্য আউটপুট অভিধানকে পার্স করে, তাদের প্রত্যেকের জন্য, এটি মানকে ******** দ্বারা প্রতিস্থাপন করে।

protect_data.pyফোল্ডারে একটি ফাইল তৈরি করুন ./plugins/callback এই কোড যুক্ত করুন:

from ansible.plugins.callback.default import CallbackModule as CallbackModule_default
import os, collections

class CallbackModule(CallbackModule_default):
    CALLBACK_VERSION = 2.0
    CALLBACK_TYPE = 'stdout'
    CALLBACK_NAME = 'protect_data'

    def __init__(self, display=None):
        super(CallbackModule, self).__init__(display)

    def hide_password(self, result):
        ret = {}
        for key, value in result.iteritems():
            if isinstance(value, collections.Mapping):
                ret[key] = self.hide_password(value)
            else:
                if "password" in key:
                    ret[key] = "********"
                else:
                    ret[key] = value
        return ret

    def _dump_results(self, result, indent=None, sort_keys=True, keep_invocation=False):
        return super(CallbackModule, self)._dump_results(self.hide_password(result), indent, sort_keys, keep_invocation)

ফাইলের মধ্যে ansible.cfg :

  • সঙ্গে uncomment লাইন stdout_callbackএবং এই প্লাগইন নাম একটি মান সেট ( stdout_callback=protect_data)
  • অসামান্য লাইন callback_pluginsএবং সেট মান সহ./plugins/callback

আউটপুট কেবলমাত্র এই প্লাগইনটির জন্য পরিবর্তিত হয়েছে, যদি আপনি আউটপুট ( logentries, ...) প্রদর্শনের জন্য অন্য প্লাগইন ব্যবহার করেন তবে আপনাকে এটির সাথে এটি করতে হবে


ওহ, বাহ, উজ্জ্বল। যাইহোক, এর জন্য আমার গোপনীয় প্রত্যেকটির জন্য কী নামের 'পাসওয়ার্ড' দিয়ে একটি ডিক সেট করতে হবে। পরিবর্তে কোনও ভেরিয়েবলের গোপনীয়তা রয়েছে তা নির্দেশ করতে আমি একটি মেটা পতাকা পছন্দ করতাম তবে ধন্যবাদ! অন্যান্য প্রশ্ন: এটিও ansible-playbook --diff(ফাইলের বিভিন্ন পরিবর্তনের সাথে) আউটপুটটিতে গোপনীয়তাগুলি মাস্ক করে ?
জার্মটভিডিজ্ক

আমি জানি না, আমি কখনও চেষ্টা করিনি
নেলসন জি

-3

কেউ পরামর্শ দিতে পারেন যে পরিবর্তে ভল্ট ব্যবহার করা সমস্যাটি কাটিয়ে উঠবে।



1
ভল্ট বিশ্রামে ডেটা এনক্রিপ্ট করতে সহায়তা করে, কিন্তু যখন পাসওয়ার্ডগুলি ব্যবহার হয়, তারা সহজেই লগ ফাইলগুলিতে উপস্থিত হতে পারে।
কনস্ট্যান্টিন সুভেরভ

@chicks একটি মত এই সৌন্দর্য ভুল উত্তর , না একটি অ উত্তর
মাইকেল হ্যাম্পটন

পর্যালোচনা সরঞ্জামগুলিতে আমি সেই বিকল্পটি দেখিনি। যেহেতু এটি কোনও উত্তরের চেয়ে কমেন্টের মতো বলে মনে হচ্ছে আমি এটি যুক্তিসঙ্গতভাবে পরিচালনা করেছি।
ছানা

আমার পতাকাটিও প্রত্যাখ্যান করা হয়েছিল এবং আমি এখনও দেখতে পাচ্ছি না যে উপরের বাক্যটি কীভাবে উত্তরযোগ্য ভার্বোসটি হ্রাস করতে হবে সে সম্পর্কে একটি উত্তর । এটি বেশিরভাগ ক্ষেত্রেই একটি মন্তব্য যা অন্য কোনও ধারণার পরামর্শ দেয়, অবশ্যই প্রশ্নের উত্তর নয়।
প্যাট্রিক মেভিজেক
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.