شعار زيفيرنت

تأمين الوصول إلى Amazon S3 لمثيلات الكمبيوتر الدفتري Amazon SageMaker المعزولة

التاريخ:

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

يمكن نشر طبعات دفتر ملاحظات SageMaker في شبكة فرعية خاصة ونوصي بنشرها دون الوصول إلى الإنترنت. يساعد تأمين طبعات الكمبيوتر الدفتري ضمن شبكة فرعية خاصة على منع الوصول غير المصرح به إلى الإنترنت إلى مثيلات الكمبيوتر الدفتري ، والتي قد تحتوي على معلومات حساسة.

ستستخدم الأمثلة في هذا المنشور مثيل Notebook تكوينات دورة الحياة (LCCs) للاتصال بنقطة نهاية S3 VPC وتنزيل البرامج النصية لاكتشاف الاستخدام الخامل والإنهاء على مثيل الكمبيوتر الدفتري. تم تكوين هذه البرامج النصية ليتم تشغيلها كوظائف cron ، مما يساعد على توفير التكاليف عن طريق إيقاف السعة الخاملة تلقائيًا.

حل نظرة عامة

يصف الرسم البياني التالي الحل الذي نطبقه. نقوم بإنشاء مثيل دفتر ملاحظات SageMaker في شبكة فرعية خاصة من VPC. نرفق بمثيل الكمبيوتر الدفتري هذا تكوين دورة حياة يقوم بنسخ برنامج نصي لإغلاق الخمول من Amazon S3 إلى مثيل الكمبيوتر الدفتري في وقت التمهيد (عند بدء مثيل دفتر ملاحظات متوقف). يصل تكوين دورة الحياة إلى حاوية S3 عبر AWS الرابط الخاص.

تسمح هذه البنية لمثيل دفتر ملاحظات SageMaker الخاص بنا المعطل عبر الإنترنت بالوصول إلى ملفات S3 ، دون عبور الإنترنت العام. نظرًا لأن حركة مرور الشبكة لا تعبر الإنترنت العام ، فإننا نحد بشكل كبير من عدد المتجهات التي يمكن للجهات الفاعلة السيئة استغلالها من أجل تعريض الوضع الأمني ​​لمثيل الكمبيوتر الدفتري للخطر.

هندسة معمارية عالية المستوى

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

نفترض أن لديك حساب AWS ، بالإضافة إلى Amazon VPC بشبكة فرعية خاصة واحدة على الأقل معزولة عن الإنترنت. إذا كنت لا تعرف كيفية إنشاء VPC بشبكة فرعية عامة / خاصة ، فتحقق من هذا دليل. يتم عزل الشبكة الفرعية عن الإنترنت إذا كان جدول التوجيه الخاص بها لا يقوم بإعادة توجيه حركة المرور إلى الإنترنت من خلال بوابة NAT وبوابة الإنترنت إلى الإنترنت. تُظهر لقطة الشاشة التالية مثالاً لجدول مسار معزول. تبقى حركة المرور داخل الشبكة الفرعية ؛ لا توجد بوابات NAT أو بوابات إنترنت يمكنها إعادة توجيه حركة المرور إلى الإنترنت.

جدول الطريق المتطلب

بالإضافة إلى ذلك ، نحن بحاجة إلى دلو S3. يمكن أن تعمل أي حاوية S3 مع إعدادات التكوين الافتراضية الآمنة. تأكد من حصولك على حق الوصول للقراءة والكتابة إلى هذه المجموعة من حساب المستخدم. هذا مهم عندما نختبر حلنا. هذا الإدخال في دليل مستخدم S3 يجب توضيح كيفية القيام بذلك.

الآن نقوم بإنشاء مثيل دفتر ملاحظات SageMaker. يجب نشر مثيل دفتر الملاحظات في شبكة فرعية معزولة بامتداد الوصول المباشر إلى الإنترنت تم اختياره على أنه معاق.

تكوين مثيل الكمبيوتر المحمول

نحتاج أيضًا إلى تكوين هذا الكمبيوتر المحمول ليعمل كمستخدم أساسي. ضمن الأذونات والتشفير ، اختر تمكين لإعداد الوصول إلى الجذر.

تكوين الجذر

بمجرد تكوين هذه الإعدادات ، اختر إنشاء مثيل دفتر في أسفل النافذة.

قم بتكوين الوصول إلى Amazon S3

لتكوين الوصول إلى Amazon S3 ، أكمل الخطوات التالية:

  1. في وحدة تحكم Amazon S3 ، انتقل إلى حاوية S3 التي تستخدمها لتخزين البرامج النصية.

لا يتم منح الوصول إلى العناصر الموجودة في هذه المجموعة إلا إذا تم السماح بذلك صراحةً عبر ملف إدارة الهوية والوصول AWS سياسة (IAM).

  1. في هذا المستودع ، قم بإنشاء مجلد يسمى تكوينات دورة الحياة.
  2. انسخ ما يلي نصي من جيثب واحفظه في دلو S3 باستخدام المفتاح lifecycle-configurations/autostop.py.

عرض وحدة تحكم الكمبيوتر المحمول

يمكننا الآن البدء في تعديل شبكتنا للسماح بالوصول بين Amazon S3 ومثال دفتر الملاحظات المعزول الخاص بنا.

  1. اكتب سياسة IAM ذات الامتياز الأقل التي تحدد الوصول إلى هذه الحاوية والبرنامج النصي لسياسة دورة الحياة.
  2. أنشئ نقطة نهاية بوابة AWS PrivateLink إلى Amazon S3.
  3. قم بإنشاء تكوين دورة حياة SageMaker يطلب ملف autostop.py نصي من Amazon S3 عبر استدعاء API.
  4. قم بإرفاق تكوين دورة الحياة بمثيل الكمبيوتر الدفتري.

بعد تنفيذ هذه الخطوات ، يمكننا اختبار التكوين عن طريق تنفيذ أمر Amazon S3 CLI في خلية دفتر ملاحظات. إذا نجح الأمر ، فقد طبقنا بنجاح الوصول الأقل امتيازًا إلى Amazon S3 من موقع شبكة معزول باستخدام AWS PrivateLink.

قد يكون الاختبار الأكثر قوة هو ترك مثيل الكمبيوتر الدفتري في وضع الخمول والسماح بتشغيل نهج دورة الحياة كما هو متوقع. إذا سارت الأمور على ما يرام ، فيجب إغلاق مثيل الكمبيوتر الدفتري بعد فترة خمول مدتها 5 دقائق.

قم بتكوين AWS PrivateLink لـ Amazon S3

AWS PrivateLink هي خدمة شبكة تنشئ نقاط نهاية خاصة في VPC لخدمات AWS الأخرى مثل الأمازون الحوسبة المرنة السحابية (Amazon EC2) و Amazon S3 و خدمة إعلام أمازون البسيطة (أمازون SNS). تسهل نقاط النهاية هذه طلبات API إلى خدمات AWS الأخرى من خلال VPC الخاص بك بدلاً من عبر الإنترنت العام. هذا هو المكون الأساسي الذي يسمح لحلولنا بالوصول بشكل خاص وآمن إلى حاوية S3 التي تحتوي على برنامج تكوين دورة الحياة الخاص بنا.

  1. في وحدة تحكم Amazon VPC ، اختر النهاية.

قائمة نقاط النهاية فارغة بشكل افتراضي.

  1. اختار إنشاء نقطة نهاية.
  2. في حالة فئة الخدمة، حدد خدمات AWS.
  3. في حالة اسم الخدمة، ابحث عن S3 وحدد خيار البوابة.
  4. في حالة VPC، اختر أي شبكة فرعية خاصة قمت بإنشائها مسبقًا.
  5. في حالة تكوين جداول التوجيه، حدد جدول التوجيه الافتراضي لهذا VPC.
  6. تحت الخصوصية، حدد Custom الخيار وأدخل رمز السياسة التالية:

تكوين الارتباط الخاص

{ "Version": "2008-10-17", "Statement": [ { "Effect": "Allow", "Principal": "*", "Action": [ "s3:Get*", "s3:List*" ], "Resource": [ "arn:aws:s3:::<bucket-name>", "arn:aws:s3:::<bucket-name>/lifecycle-configurations/*" ] } ]
}

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

  1. لإنشاء نقطة النهاية هذه باستخدام AWS CLI ، قم بتشغيل الأمر التالي:
aws ec2 create-vpc-endpoint --vpc-endpoint-type Gateway --vpc-id vpc-id --service-name com.amazonaws.region.s3 --route-table-ids route-table-id --policy-document '{ "Version": "2008-10-17", "Statement": [ { "Effect": "Allow", "PrincipalGroup": "*", "Action": [ "s3:Get*", "s3:List*" ], "Resource": [ "arn:aws:s3:::<bucket-name>", "arn:aws:s3:::<bucket-name>/lifecycle-configurations/*" ] } ]
}'

تقوم نقاط نهاية البوابة تلقائيًا بتعديل جداول التوجيه المحددة لتوجيه حركة المرور عبر هذه النقطة النهائية. على الرغم من إضافة طريق ، إلا أن VPC الخاص بنا لا يزال معزولًا. يشير المسار إلى قائمة بادئة مُدارة ، أو قائمة بعناوين IP المحددة مسبقًا ، والتي تستخدمها خدمة نقطة النهاية لتوجيه حركة المرور عبر VPC هذا إلى نقطة نهاية Amazon S3 PrivateLink.

قم بتعديل دور IAM لمثيل دفتر SageMaker

نبدأ بصياغة سياسة IAM الأقل امتيازًا لوثيقة سياسة دور مثيل دفتر الملاحظات الخاص بنا.

  1. في وحدة تحكم IAM ، اختر السياسات.
  2. اختار إنشاء سياسة.
  3. على JSON علامة التبويب ، أدخل الرمز التالي:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "S3LifecycleConfigurationReadPolicy", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::<bucket-name>", "arn:aws:s3:::<bucket-name>/lifecycle-configurations/*" ] } ]
}

هذه السياسة هي مثال على أقل امتياز الوصول، وهو نموذج أمان أساسي لـ صفر الثقة هندسة معمارية. تسمح هذه السياسة بطلبات استدعاءات GetObject و ListBucket API فقط ، وتحديداً على موارد Amazon S3 التي تدير سياسات دورة الحياة الخاصة بنا. لا يمكن تطبيق وثيقة سياسة IAM إلا في الحالات التي تقوم فيها بتنزيل سياسات دورة الحياة من Amazon S3.

  1. احفظ هذه السياسة باسم S3LifecycleConfigurationReadPolicy.
  2. في جزء التنقل ، اختر الأدوار.
  3. ابحث عن واختر الدور المرفق بطبعات دفتر الملاحظات المعزولة وقم بتحرير وثيقة سياسة الدور.
  4. ابحث عن السياسة التي تم إنشاؤها حديثًا وأرفقها بوثيقة سياسة هذا الدور.

الآن يتمتع الكمبيوتر الدفتري المعزول بأذونات الوصول إلى Amazon S3 عبر GetObject و ListBucket مكالمات API. يمكننا اختبار ذلك عن طريق تشغيل المقتطف التالي في خلية دفتر ملاحظات:

!aws s3api get-object --bucket <bucket-name> --key lifecycle-configurations/autostop.py autostop.py

في هذه المرحلة من التكوين ، يجب ألا ترى خطأ رفض الإذن بعد الآن ، ولكن خطأ انتهاء المهلة. هذا جيد؛ هذا يعني أن لدينا إذنًا للوصول إلى Amazon S3 ولكننا لم ننشئ اتصال الشبكة للقيام بذلك. نقوم بهذا في القسم التالي.

بعد ذلك ، نقوم بإنشاء سياسة IAM ودورها عبر واجهة سطر الأوامر AWS (AWS CLI).

  1. قم بإنشاء السياسة التالية وحفظ ARN من الإخراج لخطوة لاحقة:
aws iam create-policy --policy-name S3LifecycleConfigurationReadPolicy --policy-document > '{ "Version": "2012-10-17", "Statement": [ { "Sid": "S3LifecycleConfigurationReadPolicy", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::<bucket-name>", "arn:aws:s3:::<bucket-name>/lifecycle-configurations/*" ] } ]
}'

  1. أنشئ الدور:
aws iam create-role --role-name GeneralIsolatedNotebook --assume-role-policy-document > '{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "sagemaker.amazonaws.com" }, "Action": "sts:AssumeRole" } ]
}'

  1. أرفق سياستنا المخصصة بالدور الجديد:

aws iam attach-role-policy --role-name GeneralIsolatedNotebookRole --policy-arn policy-arn

  1. كرر هذه الخطوات لإنشاء سياسة جديدة تسمى StopNotebookInstance.

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

{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "sagemaker:StopNotebookInstance", "sagemaker:DescribeNotebookInstance" ], "Resource": "arn:aws:sagemaker:region-name:329542461890:notebook-instance/*" } ]
}

  1. قم بإنشاء وإرفاق هذه السياسة بدور مثيل الكمبيوتر الدفتري باستخدام إما وحدة تحكم AWS لـ IAM أو AWS CLI.

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

قم بإنشاء تكوين دورة حياة

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

تكوين دورة الحياة التالي عبارة عن برنامج نصي bash يقوم بنسخ برنامج Python النصي من Amazon S3. بعد نسخ الملف ، يقوم سكربت bash بإنشاء إدخال جديد في cron يقوم بتشغيل نص Python النصي كل 5 دقائق. يقوم برنامج Python النصي بإجراء استدعاء API لعملية Jupyter التي تعمل على مثيل دفتر الملاحظات. يتم استخدام واجهة برمجة التطبيقات (API) هذه لتمييز ما إذا كان مثيل دفتر الملاحظات خاملاً خلال مدة المهلة. إذا حدد البرنامج النصي أن مثيل دفتر الملاحظات كان خاملاً خلال آخر 5 دقائق ، فسيتم إيقاف تشغيل مثيل دفتر الملاحظات. هذه ممارسة جيدة للتكلفة وتوفير الانبعاثات. يمكن تعديل فترة مهلة الخمول البالغة 5 دقائق عن طريق تغيير قيمة ملف IDLE_TIME المتغير.

#!/bin/bash
set -e
IDLE_TIME=3600
umask 022
echo "Fetching the autostop script"
aws s3 cp s3://<bucket-name>/lifecycle-configurations/autostop.py / 
echo "Starting the SageMaker autostop script in cron"
(crontab -l 2>/dev/null; echo "*/5 * * * * /usr/bin/python /autostop.py --time $IDLE_TIME --ignore-connections") | crontab –

لإنشاء تكوين دورة حياة ، أكمل الخطوات التالية:

  1. في وحدة تحكم SageMaker ، اختر دفاتر.
  2. اختار تكوينات دورة الحياة.
  3. اختار تكوين التكوين.
  4. على بدء علامة التبويب دفتر الملاحظات، أدخل نص bash السابق.
  5. أدخل اسمًا وصفيًا للبرنامج النصي.
  6. اختار تكوين التكوين.

يمكنك أيضًا إنشاء تكوين دورة الحياة باستخدام AWS CLI (انظر الكود التالي). لاحظ أن البرنامج النصي نفسه يجب أن يكون مشفرًا باستخدام base64. ضع ذلك في الاعتبار عند استخدام AWS CLI لإنشاء هذه التكوينات.

aws sagemaker create-notebook-instance-lifecycle-config --notebook-instance-lifecycle-config-name auto-stop-idle-from-s3 --on-start Content='base64-encoded-script'

بعد إنشاء تكوين دورة الحياة ، يظهر في قائمة التكوينات المتاحة.

  1. من هنا ، انتقل مرة أخرى إلى مثيل دفتر الملاحظات الخاص بك. إذا كان مثيل الكمبيوتر الدفتري قيد التشغيل ، فقم بإيقاف تشغيله بتحديد مثيل دفتر الملاحظات والاختيار قلة النوم في الزاوية العلوية اليسرى.
  2. اختار تعديل في القسم إعدادات مثيل دفتر الملاحظات.
  3. حدد تكوين دورة الحياة الجديد الخاص بك من القائمة واختر تحديث مثيل دفتر الملاحظات.

يتم الآن إرفاق ARN لتكوين دورة الحياة بمثيل الكمبيوتر الدفتري الخاص بك.

للقيام بذلك في AWS CLI ، قم بتشغيل الأمر التالي:

aws sagemaker update-notebook-instance --notebook-instance-name notebook-name --lifecycle-config-name lifecycle-config-name

دفتر ملاحظات معاد تكوينه باستخدام نهج دورة الحياة

اختبر الوصول إلى شبكة Amazon S3 من مثيل دفتر ملاحظات منفصل

لاختبار هذه العملية ، نحتاج إلى التأكد من أنه يمكننا نسخ ملف Python من Amazon S3 إلى مثيل دفتر الملاحظات المعزول لدينا. نظرًا لأننا قمنا بتكوين تكوين دورة الحياة الخاص بنا للتشغيل عند بدء تشغيل الكمبيوتر الدفتري ، فنحن بحاجة فقط إلى بدء مثيل الكمبيوتر الدفتري الخاص بنا لإجراء الاختبار. عندما يبدأ الكمبيوتر الدفتري الخاص بنا ، افتح دفتر Jupyter وقم بفحص نظام الملفات المحلي. لنا autostop.py تم الآن تثبيت البرنامج النصي من حاوية S3 على مثيل الكمبيوتر الدفتري الخاص بنا.

اختبار نقل الملفات

إذا كان الكمبيوتر الدفتري الخاص بك يحتوي على أذونات الجذر ، فيمكنك حتى فحص crontab الخاص بالكمبيوتر الدفتري عن طريق تشغيل ما يلي:

!sudo crontab -e

نحتاج إلى تشغيل هذا الأمر كمستخدم جذر لأن LCC تضيف وظيفة cron إلى خدمة cron كمستخدم جذر. هذا يثبت أن autostop.py تمت إضافة البرنامج النصي إلى crontab عند بدء تشغيل الكمبيوتر الدفتري. نظرًا لأن هذا الأمر يفتح ملف cron ، يجب عليك إيقاف أمر kernel يدويًا لعرض الإخراج.

التحقق من Crontab

تنظيف

عند إتلاف نقطة نهاية VPC ، يفقد مثيل الكمبيوتر الدفتري الوصول إلى حاوية S3. يؤدي هذا إلى ظهور خطأ انتهاء المهلة عند بدء تشغيل الكمبيوتر الدفتري. قم بإزالة تكوين دورة الحياة من مثيل الكمبيوتر الدفتري. للقيام بذلك ، حدد مثيل الكمبيوتر الدفتري ضمن خدمة Amazon SageMaker لوحدة الإدارة في AWS واختر تعديل في القسم إعدادات مثيل دفتر الملاحظات. الآن لا يحاول مثيل دفتر الملاحظات سحب ملف autostop.py نصي من Amazon S3.

وفي الختام

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


عن المؤلف

frgud بالرأسدان فيرجسون هو مهندس حلول في Amazon Web Services ، ويركز بشكل أساسي على استثمارات الأسهم الخاصة وأسهم النمو في الشركات الناشئة في المرحلة المتأخرة.

بقعة_صورة

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

بقعة_صورة