
يُولّد سياسات IAM في AWS بأقل صلاحية بناءً على أسماء موارد ARN ومستويات الوصول، مما يُؤتمت إنشاء السياسات الآمنة للبنية التحتية السحابية.
مولّد سياسات IAM بأقل صلاحية ممكنة.

للحصول على الشروحات والوثائق الكاملة، يرجى زيارة المشروع على ReadTheDocs.
اطّلع على منشور مدونة Salesforce Engineering حول Policy Sentry.
إن كتابة سياسات IAM مع مراعاة الأمان يدويًا قد تكون مملة للغاية وغير فعّالة. لقد عانى العديد من مطوري البنية التحتية كرمز (Infrastructure as Code) من شيء كهذا:
مثل هذه العملية ليست مثالية للأمان ولا لمطوري البنية التحتية كرمز. نحن بحاجة إلى تسهيل كتابة سياسات IAM بشكل آمن وتجريد تعقيد كتابة سياسات IAM بأقل صلاحية. لهذا السبب صنعت هذه الأداة.
يسمح Policy Sentry للمستخدمين بإنشاء سياسات IAM بأقل صلاحية في ثوانٍ، بدلاً من كتابتها يدويًا بشكل ممل. هذه السياسات محدودة النطاق وفقًا لمستويات الوصول والموارد. في حالة حدوث خرق أمني، يساعد ذلك في الحد من نصف قطر الانفجار للبيانات المخترقة من خلال منح مبادئ IAM فقط الوصول إلى ما يحتاجون إليه.
قبل هذه الأداة، قد يستغرق إعداد سياسة IAM مع قيود ARN للموارد ساعات — ولكن الآن يمكن أن يستغرق ثوانٍ. بهذه الطريقة، على المطورين فقط تحديد الموارد التي يحتاجون إلى الوصول إليها، وPolicy Sentry يجرد تعقيد سياسات IAM بعيدًا عن عمليات التطوير الخاصة بهم.
الميزة الرئيسية لـ Policy Sentry هي أنه يمكنه إنشاء سياسات IAM بناءً على ARNs للموارد ومستويات الوصول. وظيفة CRUD الخاصة بنا تأخذ النهج القائل بأن مطوري IAC لا ينبغي أن يضطروا لفهم تعقيدات AWS IAM - يجب علينا تجريد التعقيد لهم. في الواقع، يجب أن يكون المطورون قادرين على قول...
arn:aws:s3:::example-org-sbx-vmimport"arn:aws:secretsmanager:us-east-1:123456789012:secret:mysecret"arn:aws:ssm:us-east-1:123456789012:parameter/test"...ويجب أن تقوم أتمتتنا بإنشاء سياسات تتوافق مع مستويات الوصول هذه.
كيف نحقق ذلك؟ حسنًا، يستفيد Policy Sentry من وثائق AWS حول [الإجراءات والموارد ومفاتيح الشروط][1] للبحث عن الإجراءات ومستويات الوصول وأنواع الموارد، ويولّد السياسات وفقًا لـ ARNs ومستويات الوصول. تأمل مقتطف الجدول أدناه:
| الإجراءات | مستوى الوصول | أنواع الموارد |
|---|---|---|
| ssm:GetParameter | قراءة (Read) | parameter |
| ssm:DescribeParameters | قائمة (List) | parameter |
| ssm:PutParameter | كتابة (Write) | parameter |
| secretsmanager:PutResourcePolicy | إدارة الصلاحيات (Permissions management) | secret |
| secretsmanager:TagResource | وسم (Tagging) | secret |
يجمع Policy Sentry كل هذه الوثائق في قاعدة بيانات واحدة ويستخدم تلك القاعدة لإنشاء سياسات وفقًا للإجراءات والموارد ومستويات الوصول.
brew tap salesforce/policy_sentry https://github.com/salesforce/policy_sentry
brew install policy_sentry
pip3 install --user policy_sentry
لتمكين إكمال Bash، ضع هذا في ملف .bashrc الخاص بك:
eval "$(_POLICY_SENTRY_COMPLETE=bash_source policy_sentry)"
لتمكين إكمال ZSH، ضع هذا في ملف .zshrc الخاص بك:
eval "$(_POLICY_SENTRY_COMPLETE=zsh_source policy_sentry)"
policy_sentry create-template --output-file crud.yml --template-type crud
mode: crud
name: ''
# Specify resource ARNs
read:
- ''
write:
- ''
list:
- ''
tagging:
- ''
permissions-management:
- ''
# Actions that do not support resource constraints
wildcard-only:
single-actions: # standalone actions
- ''
# Service-wide - like 's3' or 'ec2'
service-read:
- ''
service-write:
- ''
service-list:
- ''
service-tagging:
- ''
service-permissions-management:
- ''
# Skip resource constraint requirements by listing actions here.
skip-resource-constraints:
- ''
# Exclude actions from the output by specifying them here. Accepts wildcards, like kms:Delete*
exclude-actions:
- ''
# If this policy needs to include an AssumeRole action
sts:
assume-role:
- ''
assume-role-with-saml:
- ''
assume-role-with-web-identity:
- ''