إذا كنت تدير الأسرار عبر حسابات AWS متعددة أو كنت بحاجة إلى وصول سري أسرع للتطبيقات الحساسة لزمن الاستجابة، فإن هذا المنشور يوضح لك كيفية تلبية هذه المتطلبات باستخدام ميزتين جديدتين من موفر بيانات اعتماد عبء عمل AWS (مزود). سوف تتعلم كيفية تكوين تسلسل الأدوار لاسترجاع الأسرار عبر الحسابات والجلب المسبق للأسرار لتقليل زمن استجابة البداية الباردة.

باستخدام تسلسل الأدوار، يمكنك الوصول إلى الأسرار عبر حسابات AWS من خلال مثيل موفر واحد عن طريق الافتراض AWS لإدارة الهوية والوصول (IAM) الأدوار. يقوم الجلب المسبق بملء ذاكرة التخزين المؤقت للموفر بالأسرار عند بدء التشغيل حتى يتمكن تطبيقك من استرداد الأسرار دون انتظار الطلب الأول لبدء مكالمة شبكة في وقت التشغيل.

ما هو موفر بيانات اعتماد عبء العمل في AWS؟

مدير أسرار AWS يقوم بتخزين وتدوير بيانات الاعتماد ومفاتيح API والأسرار الأخرى. إن موفر بيانات اعتماد AWS Workload عبارة عن خدمة HTTP من جانب العميل تقوم باسترداد الأسرار وتخزينها مؤقتًا محليًا. وهذا يقلل من زمن الوصول، ويحسن التوفر أثناء حالات الفشل العابرة، ويقلل التكاليف. وهو يدعم TLS ما بعد الكم بشكل افتراضي، ولا يتطلب SDK خاص بلغة معينة، ويعمل عبر جميع اللغات Amazon Elastic Compute Cloud (Amazon EC2), Amazon Elastic Container Service (Amazon ECS), خدمة Amazon Elastic Kubernetes (Amazon EKS)، و أوس لامدا. لمزيد من التفاصيل، راجع موفر بيانات اعتماد عبء العمل الوثائق و مستودع جيثب.

الاعتبارات الأمنية

يمنع الرمز المميز للطلب من جانب الخادم (SSRF) العمليات غير المصرح بها من الوصول إلى نقطة نهاية HTTP الخاصة بالموفر. فقط التطبيقات التي يمكنها قراءة ملف الرمز المميز يمكنها استرداد الأسرار من خلال الموفر.

يمكن لأي هوية يمكنها الوصول إلى نقطة نهاية الموفر ورمز SSRF استرداد الأسرار من خلال تسلسل الأدوار. وهذا يعني أن المستخدمين الذين لديهم حق الوصول إلى بيئة الحوسبة يمكنهم استرداد الأسرار عبر الحسابات عند تكوين افتراض الدور. قم بنطاق أذونات الدور المستهدف لتشمل الأسرار المطلوبة فقط باتباع مبدأ الامتياز الأقل.

بالنسبة للجلب المسبق، يتم تحميل الأسرار في ذاكرة التخزين المؤقت في ذاكرة الموفر عند بدء التشغيل. يمكن لأي عملية يمكنها الوصول إلى نقطة نهاية المضيف المحلي للموفر وتوفير رمز SSRF صالح استرداد الأسرار التي تم جلبها مسبقًا من ذاكرة التخزين المؤقت.

استرجاع السرية عبر الحسابات مع تسلسل الأدوار

قد تقوم المؤسسات بتخزين الأسرار في حساب AWS مخصص، أو تحتاج إلى مشاركة سر واحد عبر التطبيقات في حسابات مختلفة. حتى الآن، يتطلب الاسترجاع عبر الحسابات من خلال الموفر إرفاقًا السياسات القائمة على الموارد مباشرة إلى كل سر. يفضل بعض العملاء افتراض دور IAM. قبل هذه الميزة، كان عليك نشر مثيلات موفر متعددة ببيانات اعتماد مختلفة أو إنشاء منطق مخصص لتبديل بيانات الاعتماد. يدعم الموفر الآن كلا النهجين: السياسات القائمة على الموارد وافتراض دور IAM. في حين أن افتراض الدور مفيد بشكل خاص لسيناريوهات الحسابات المشتركة، فإنه يساعد أيضًا داخل الحساب نفسه عندما تكون الأسرار محمية بواسطة مفاتيح KMS مختلفة يديرها العميل.

عندما تقوم بتضمين roleArn معلمة الاستعلام في الطلب، يستخدمها الموفر خدمة AWS Security Token (AWS STS) AssumeRole للحصول على بيانات اعتماد مؤقتة للدور المحدد واسترداد السر باستخدام بيانات الاعتماد تلك. يقوم الموفر بإنشاء عميل منفصل وتخزينه مؤقتًا لكل دور ARN، لذا فإن الطلبات اللاحقة لنفس الدور تعيد استخدام العميل الحالي. يحتفظ كل عميل دور بذاكرة التخزين المؤقت المستقلة الخاصة به.

ملحوظة: يقوم الحساب المصدر بتشغيل موفر بيانات اعتماد عبء العمل وتطبيقك. يحتوي الحساب المستهدف على السر الذي تريد استرجاعه. يمكن لمثيل موفر واحد في الحساب المصدر أن يتولى أدوارًا في حساب مستهدف واحد أو أكثر.

المتطلبات الأساسية

  • أ موفر بيانات اعتماد عبء العمل تم إنشاؤه وتثبيته في بيئتك (راجع الملف README للحصول على تعليمات الإنشاء)
  • بيانات اعتماد AWS التي تم تكوينها في بيئة الحوسبة الخاصة بك مع إذن الاتصال sts:AssumeRole على الدور المستهدف ARN
    • إذا قمت أيضًا باسترداد الأسرار من الحساب المصدر من خلال الموفر، فستحتاج إلى بيانات الاعتماد secretsmanager:GetSecretValue و secretsmanager:DescribeSecret أذونات لتلك الأسرار
  • سر في حساب AWS مستهدف تريد استرداده
  • دور IAM في الحساب المستهدف مع سياسة ثقة تسمح لهوية الموفر بتوليه

لبناء موفر بيانات اعتماد عبء العمل

الموفر مكتوب بلغة Rust ويتم تجميعه في ملف واحد قابل للتنفيذ. الخطوات التالية مخصصة لنظام يستند إلى RPM مثل Amazon Linux 2023:

  1. تثبيت تبعيات البناء:
  2. تثبيت الصدأ:
  3. قم باستنساخ المستودع وإنشاء الموفر (استخدم أحدث علامة متاحة):

الثنائي المترجم موجود في target/release/aws-workload-credentials-provider.

لتثبيت موفر بيانات اعتماد عبء العمل على Amazon EC2

بعد إنشاء الموفر، قم بتثبيته كخدمة نظام على مثيل EC2 الخاص بك وقم بتكوين الوصول إلى رمز SSRF المميز.

  1. بعد تكوين الخاص بك config.toml (راجع قسم خيارات التكوين)، قم بتشغيل البرنامج النصي للتثبيت لنشر الموفر كخدمة نظام وإنشاء رمز SSRF المميز:
  2. أضف مستخدم التطبيق الخاص بك إلى aws-wcp-token مجموعة. يمنح هذا التطبيق إذنًا لقراءة ملف الرمز المميز SSRF، وهو مطلوب لجميع طلبات الاسترداد السرية:

للتثبيت على Amazon ECS، أو Amazon EKS، أو Lambda، راجع تعليمات التثبيت في مستودع جيثب.

للتحقق من التثبيت

  1. تأكد من تشغيل الموفر:
  2. ستتلقى رد JSON بالقيمة السرية. إذا رأيت خطأ رفض الاتصال، فتأكد من تشغيل عملية الموفر. إذا رأيت خطأ 401 أو 403، فتأكد من أن ملف الرمز المميز SSRF قابل للقراءة وأن بيانات اعتماد IAM الخاصة بالموفر موجودة secretsmanager:GetSecretValue و secretsmanager:DescribeSecret الأذونات.

الأذونات المطلوبة

تتطلب هوية IAM الأساسية للموفر ما يلي:

  • sts:AssumeRole على الدور المستهدف ARN

يتطلب الدور المستهدف:

  • secretsmanager:GetSecretValue
  • secretsmanager:DescribeSecret

لتكوين دور IAM للحساب المستهدف

قم بإنشاء دور IAM في الحساب الهدف باستخدام سياسة ثقة تسمح لهوية الموفر في الحساب المصدر بتوليه. ثم قم بإرفاق سياسة تمنح الوصول إلى الأسرار المطلوبة.

  1. قم بإنشاء دور IAM في الحساب الهدف باستخدام سياسة ثقة تسمح لهوية الموفر في الحساب المصدر بتوليه.
  2. أرفق سياسة بهذا الدور تمنح الوصول إلى السر:

لتكوين دور IAM للحساب المصدر

قبل أن يتمكن الموفر من تولي الدور الذي قمت بإنشائه في الحساب المستهدف، امنحه الإذن بالاتصال sts:AssumeRole. قم بإرفاق السياسة التالية بدور IAM الخاص بالموفر في الحساب المصدر:

لاستعادة سر الحساب المتبادل

اتصل بنقطة نهاية موفر بيانات اعتماد عبء العمل باستخدام roleArn المعلمة. يوضح مثال الضفيرة التالي كيفية استرداد السر باستخدام دور IAM مختلف:

يوضح مثال بايثون التالي نفس العملية:

يمكنك تكوين الحد الأقصى لعدد الأدوار المفترضة المتزامنة باستخدام max_roles الخيار في ملف تكوين TOML الخاص بالموفر. الافتراضي هو 20، والنطاق هو 1-20.

جلب الأسرار عند بدء التشغيل

افتراضيًا، يقوم موفر بيانات اعتماد عبء العمل بملء ذاكرة التخزين المؤقت الخاصة به بتكاسل – يؤدي الطلب الأول للسر إلى تشغيل استدعاء الشبكة إلى Secrets Manager. يعمل الجلب المسبق على تقليل زمن الوصول لبدء التشغيل البارد عن طريق تحميل الأسرار عند بدء التشغيل.

كيف يعمل الجلب المسبق

يمكنك تكوين الجلب المسبق عن طريق إضافة ملف [capabilities.secrets_manager.prefetch] القسم إلى المزود ملف التكوين TOML. يمكنك تحديد الأسرار للجلب المسبق بطريقتين:

  • أسرار صريحة – قم بإدراج معرفات سرية محددة أو أرقام ARN باستخدام [[capabilities.secrets_manager.prefetch.secrets]] إدخالات.
  • الاكتشاف القائم على العلامات – اكتشاف الأسرار عن طريق مفتاح العلامة باستخدام [[capabilities.secrets_manager.prefetch.filter_tags]] إدخالات. يتصل المزود BatchGetSecretValue مع مرشحات مفتاح العلامة للعثور على جميع الأسرار المطابقة وتخزينها مؤقتًا.

يمكنك استخدام كلا الطريقتين معًا. كل إدخال يقبل بشكل اختياري أ role_arn مجال الجلب المسبق عبر الحسابات من خلال تسلسل الأدوار.

الأذونات المطلوبة

الأذونات التالية مطلوبة في دور IAM الذي يقوم بالجلب المسبق، اعتمادًا على ما إذا كانت الأسرار موجودة في الحساب المصدر أو الحساب المستهدف.

  • secretsmanager:BatchGetSecretValue – مطلوبة في دور الحساب المصدر لأسرار حساب المصدر، أو في الدور المستهدف لأسرار الحساب المشترك
  • secretsmanager:ListSecrets – مطلوب عند استخدام الاكتشاف القائم على العلامات (filter_tags)، على أي دور يقوم بالاكتشاف

خيارات التكوين

يمكنك ضبط سلوك الجلب المسبق باستخدام الخيارات التالية في ملف [capabilities.secrets_manager.prefetch] قسم ملف تكوين TOML الخاص بك:

  • Cache_Buffer_Ratio – الحد الأقصى لجزء ذاكرة التخزين المؤقت الذي يجب ملؤه لكل عميل تخزين مؤقت أثناء الجلب المسبق، في النطاق 0.1-1.0. الافتراضي هو 0.8. على سبيل المثال، إذا كانت ذاكرة التخزين المؤقت الخاصة بك تحتوي على 100 سر، فإن نسبة الجلب المسبق 0.8 تصل إلى 80، مما يترك مساحة لتخزين 20 سرًا عند الطلب مؤقتًا.
  • max_jitter_secions – الحد الأقصى للتأخير العشوائي بالثواني قبل بدء مهمة الجلب المسبق، في النطاق 0-10. الافتراضي هو 0 (لا يوجد اهتزاز). استخدم هذا لمنع استدعاءات API المتزامنة على مستوى الأسطول عند النشر عبر العديد من المثيلات.

مثال: الجلب المسبق بأسرار صريحة

يقوم التكوين التالي بإحضار سرين مسبقًا عند بدء التشغيل، أحدهما من الحساب المصدر والآخر من حساب مختلف باستخدام تسلسل الأدوار:

مثال: الجلب المسبق باستخدام الاكتشاف القائم على العلامات

يكتشف التكوين التالي جميع الأسرار التي تحمل علامة Environment المفتاح، وجميع الأسرار الموسومة بـ Team أدخل حسابًا مختلفًا:

مثال: التكوين الكامل

يوضح المثال التالي تكوين الموفر الكامل الذي يجمع بين كلتا الميزتين:

ابدأ تشغيل الموفر بملف التكوين الخاص بك:

خاتمة

يوضح لك هذا المنشور كيفية استخدام تسلسل الأدوار لاسترجاع الأسرار عبر الحسابات والجلب المسبق لتقليل زمن الاستجابة للبداية الباردة. يعمل تسلسل الأدوار على تبسيط بنيات الحسابات المتعددة – يمكن لمثيل موفر واحد استرداد الأسرار عبر الحسابات باستخدام افتراض دور IAM. يعمل الجلب المسبق على تقليل زمن الوصول لبدء التشغيل على البارد من خلال ملء ذاكرة التخزين المؤقت للموفر قبل أن يقدم تطبيقك طلبه الأول. تتيح لك هذه الميزات مجتمعة تشغيل موفر بيانات اعتماد عبء العمل عبر حسابات متعددة مع وصول سري أسرع.

مزيد من القراءة

أرسل تعليقاتك في التعليقات أدناه، أو اتصل بدعم AWS مع الأسئلة.


ديريك وانغ

ديريك هو مهندس برمجيات في فريق AWS Secrets Manager.

باراس داوان

باراس داوان

باراس هو مدير تطوير البرمجيات لدى AWS Secrets Manager، ومقره في سياتل. انضم باراس إلى AWS في عام 2017 وقضى حياته المهنية في AWS Identity وAWS Cryptography وأنظمة توزيع بيانات الاعتماد. إنه متحمس للابتكار وحل وتبسيط مشاكل العملاء المتعلقة بالأمان والوصول والترخيص وما بعده.

شاركها.
اترك تعليقاً