
إدارة الأسرار السحابية الأصلية للمطورين - لا تغادر سطر الأوامر أبدًا من أجل الأسرار.
:computer: لا تغادر طرفيتك أبدًا من أجل الأسرار
:pager: أنشئ سير عمل سهلة ونظيفة للعمل مع البيئات السحابية
:mag_right: افحص الأسرار وحارب انتشار الأسرار
لا تترك طرفيتك أبدًا لاستخدام الأسرار أثناء تطوير تطبيقاتك واختبارها وبنائها.
بدلاً من النصوص البرمجية المخصصة، والرموز في ملفات .zshrc الخاصة بك، وعمليات EXPORT المرئية في سجل bash، وملفات .env.production الموضوعة في غير مكانها والمزيد حول محطة العمل الخاصة بك -- فقط استخدم teller واربطه بأي خزنة أو مخزن مفاتيح أو خدمة سحابية تريدها (يدعم Teller Hashicorp Vault و AWS Secrets Manager و Google Secret Manager وغيرها الكثير).
يمكنك استخدام Teller لترتيب بيئتك الخاصة أو لفريقك كعملية وأفضل ممارسة.

tellerتنزيل ملف ثنائي احصل على ملف ثنائي من releases
البناء من المصدر ستتيح لك هذه الطريقة إلقاء نظرة على الكود المصدري ومراجعته وبناء نسخة بنفسك.
سيؤدي هذا إلى تثبيت الملف الثنائي محليًا على جهازك:
$ cd teller-cli
$ cargo install --path .
إنشاء إعداد جديد
$ teller new
? Select your secret providers ›
⬚ hashicorp_consul
⬚ aws_secretsmanager
⬚ ssm
⬚ dotenv
⬚ hashicorp
⬚ google_secretmanager
ثم عدّل ملف .teller.yml المنشأ حديثًا لتعيين الخرائط والمفاتيح التي تحتاجها لمزودي الخدمة.
teller.ymlيصف YAML الخاص بـ teller مزودي الخدمة، وداخل كل مزود يوجد map يصف ما يلي:
id فريد سيفيدك في العمليات لاحقًاإليك مثال على ملف إعداد. لاحظ أنه يتضمن أيضًا بنى قوالب -- مثل جلب متغيرات البيئة أثناء تحميل الإعداد:
providers:
hashi_1:
kind: hashicorp
maps:
- id: test-load
path: /{{ get_env(name="TEST_LOAD_1", default="test") }}/users/user1
# if empty, map everything
# == means map to same key name
# otherwise key on left becomes right
# in the future: key_transform: camelize, snake_case for automapping the keys
keys:
GITHUB_TOKEN: ==
mg: FOO_BAR
dot_1:
kind: dotenv
maps:
- id: stg
path: VAR_{{ get_env(name="STAGE", default="development") }}
يمكنك الآن مخاطبة هذه المزودات باسم hashi_1 أو dot_1. يقوم Teller بسحب البيانات المحددة من جميع المزودات افتراضيًا.
هل تقوم بتصدير وإعداد متغيرات البيئة يدويًا لتشغيل عملية بإعداد شبيه بالعرض التجريبي / الإنتاجي؟
هل عانيت من استخدام .env.production وتعريضه في المشروع المحلي نفسه؟
باستخدام teller وملف .teller.yml لا يكشف شيئًا للأعين المتطفلة، يمكنك العمل بطلاقة وسلاسة بدون أي مخاطر، ولا حاجة أيضًا لعلامات الاقتباس:
$ teller run --reset --shell -- node index.js
سيؤدي هذا إلى إخراج المتغيرات الحالية التي يلتقطها teller. سيتم عرض أول حرفين فقط من كل متغير، بالطبع.
$ teller show
هل ترمّز الأسرار بشكل ثابت داخل نصوص الصدفة وملفات dotfiles؟
في بعض الحالات، من المنطقي تقييم المتغيرات في الصدفة الحالية. على سبيل المثال، في .zshrc الخاصة بك، من المنطقي أكثر استخدام teller بدلاً من ترميز كل ذلك بشكل ثابت في ملف .zshrc نفسه.
في هذه الحالة، هذا ما يجب عليك إضافته:
eval "$(teller sh)"
هل سئمت من التقاط جميع أنواع المتغيرات وإعدادها، وقلق من ظهورها في سجل الصدفة أيضًا؟
استخدم هذا السطر الواحد من الآن فصاعدًا:
$ docker run --rm -it --env-file <(teller env) alpine sh
يمكن أن يساعدك Teller في مكافحة انتشار الأسرار والأسرار المرمزة بشكل ثابت، كما يمكن أن يكون أفضل أداة إنتاجية للعمل مع خزنتك.
يمكنه أيضًا التكامل مع CI الخاص بك ويعمل كأداة أمان shift-left لخط أنابيب DevSecOps لديك.
ابحث عن أسرارك المخزنة في الخزنة داخل الكود الخاص بك عن طريق تشغيل:
$ teller scan
يمكنك تشغيله كمدقق (linter) في CI الخاص بك كما يلي:
run: teller scan --error-if-found
سيؤدي إلى كسر البناء إذا وجد شيئًا (يرجع رمز الخروج 1).
يمكنك أيضًا تصدير النتائج بصيغة JSON باستخدام --json وفحص الملفات الثنائية باستخدام -b.
يمكنك استخدام teller كأداة تنقيح عبر البنية التحتية الخاصة بك، وتشغيل العمليات أثناء تنقيح مخرجاتها بالإضافة إلى تنظيف السجلات والتتبعات الحية للسجلات.
مرّر مخرجات أي عملية أو tail أو سجلات إلى teller لتنقيحها مباشرة:
$ cat some.log | teller redact
يجب أن يعمل أيضًا مع tail -f:
$ tail -f /var/log/apache.log | teller redact
أخيرًا، إذا كان لديك بعض الملفات التي تريد تنقيحها، يمكنك فعل ذلك أيضًا:
$ teller redact --in dirty.csv --out clean.csv
إذا حذفت --in، سيأخذ Teller من stdin، وإذا حذفت --out، سيخرج Teller إلى stdout.
يمكنك تعبئة قوالب مخصصة:
$ teller template --in config-templ.t
صيغة القالب هي Tera وهي مشابهة جدًا لـ liquid أو handlebars.
إليك مثال على قالب:
production_var: {{ key(name="PRINT_NAME")}}
production_mood: {{ key(name="PRINT_MOOD")}}
في الحالات التي تريد فيها المزامنة بين المزودات، يمكنك فعل ذلك باستخدام teller copy.
مزامنة مفاتيح الخريطة المحددة
يمكنك استخدام صيغة <provider name>/<map id> لنسخ خريطة من مزود إلى مزود آخر:
$ teller copy --from source/dev --to target/prod,<...>
في هذا المثال المبسط، نستخدم ملف الإعداد التالي
providers:
dot1:
kind: dotenv
maps:
- id: one
path: one.env
dot2:
kind: dotenv
maps:
- id: two
path: two.env
سيقوم هذا بـ:
افتراضيًا، سيقوم النسخ بتحديث خريطة الهدف (إدراج أو تحديث البيانات)، وإذا أردت الاستبدال يمكنك استخدام --replace.
تدعم مزودات Teller حالات استخدام الكتابة التي تسمح بكتابة القيم إلى المزودات.
تذكر، هذه الميزة لا تزال تدور حول التعريفات في ملف teller.yml الخاص بك:
$ teller put --providers new --map-id one NEW_VAR=s33kret
في هذا المثال، يتم استخدام هذا الإعداد:
providers:
new:
kind: dotenv
maps:
- id: one
path: new.env
بعض الملاحظات:
key=value ويمكنك تحديد أزواج متعددة في وقت واحد--providers تتيح لك الدفع إلى مزود واحد أو أكثر في وقت واحدتدعم مزودات Teller حذف القيم من المزودات.
$ teller delete --providers new --map-id one DELETE_ME
بعض الملاحظات:
--providers تتيح لك الدفع إلى مزود واحد أو أكثر في وقت واحدYAML بصيغة YAMLXXX TODO: إعادة كتابة كيفية عمل أمر التصدير
يمكنك التصدير بصيغة YAML، مناسبة لـ GCloud:
$ teller export yaml
مثال على الصيغة:
FOO: "1"
KEY: VALUE
JSON بصيغة JSONيمكنك التصدير بصيغة JSON، مناسبة للمرور عبر jq أو سير عمل أخرى:
$ teller export json
مثال على الصيغة:
{
"FOO": "1"
}
يمكنك الحصول على قائمة بالمزودات وقيم الإعدادات الموصوفة الخاصة بها في التوثيق.
docker على Windows: إذا كان لديك اختبار قائم على الحاويات يستخدم Docker، فتأكد من استبعاده على Windows باستخدام #[cfg(not(windows))]
دلالات الموارد: أثناء بناء المزودات، وائم بين دلالات فارغ و غير موجود كدلالتين مختلفتين: إذا كان المزود يدعم دلالة "غير موجود" صريحة (404, NotFound، وغيرها)، استخدم Error::NotFound. بخلاف ذلك، عندما يشير المزود إلى دلالة "غير موجود" كحقيبة بيانات فارغة، أعد KV[] فارغًا (أي لا تترجم دلالة "فارغ" إلى "غير موجود").
يتم الاختبار باستخدام:
$ cargo test --all --all-features
ويتطلب Docker (أو ما يعادله) على جهازك.
لجميع المساهمين - أنتم من يجعل هذا يحدث، شكرًا لكم!
يتبع Teller مدونة قواعد سلوك CNCF
حقوق النشر (c) 2024 @jondot. راجع LICENSE لمزيد من التفاصيل.