Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
policy_sentry — يُولّد سياسات IAM في AWS بأقل صلاحية بناءً على أسماء موارد ARN ومستويات الوصول، مما يُؤتمت إنشاء السياسات الآمنة للبنية التحتية السحابية. | Kitploit
أدوات/GitHubGitHub/salesforce/policy_sentry
أمن البنية التحتية السحابيةتدقيق التكوينأمن السحابةDevSecOpsإدارة الهوية والوصول (IAM)
GitHubsalesforce/policy_sentry

policy_sentry

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

عرض المستودع
2.2k157منذ 5 أيامتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة
الموقع الإلكتروني

Policy Sentry

مولّد سياسات IAM بأقل صلاحية ممكنة.

continuous-integration Documentation Status Join the chat at https://gitter.im/salesforce/policy_sentry Twitter PyPI Python Version Downloads

  • البرنامج التعليمي
    • التثبيت
      • مديرو الحزم
      • إكمال الصدفة
    • الخطوة 1: إنشاء القالب
    • الخطوة 2: نسخ/لصق ARNs
    • الخطوة 3: أمر كتابة السياسة
  • أوراق الغش
    • ورقة غش كتابة السياسة
    • ورقة غش استعلام قاعدة بيانات IAM
    • التهيئة المحلية (اختياري)
  • استخدامات أخرى
    • الأوامر
    • استخدام مكتبة بايثون
    • Docker
    • Terraform
  • المراجع

التوثيق

للحصول على الشروحات والوثائق الكاملة، يرجى زيارة المشروع على ReadTheDocs.

اطّلع على منشور مدونة Salesforce Engineering حول Policy Sentry.

نظرة عامة

إن كتابة سياسات IAM مع مراعاة الأمان يدويًا قد تكون مملة للغاية وغير فعّالة. لقد عانى العديد من مطوري البنية التحتية كرمز (Infrastructure as Code) من شيء كهذا:

  • أنت مصمم على بذل قصارى جهدك لمنح المستخدمين والأدوار أقل قدر من الصلاحيات اللازمة لأداء مهامك، لكنك تقضي وقتًا طويلاً في التنقيب في وثائق AWS IAM حول الإجراءات والموارد ومفاتيح الشروط لخدمات AWS.
  • يشجعك قائد فريقك على بناء الأمان في سياسات IAM من أجل جودة المنتج، ولكن في النهاية تُصاب بالإحباط بسبب المواعيد النهائية للمشروع.
  • ليس لديك شخص أمني مدمج في فريقك يمكنه كتابة سياسات IAM لك، ولا توجد أداة آلية تستطيع أن تشعر تلقائيًا باستدعاءات واجهة برمجة تطبيقات AWS التي تؤديها ثم تكتبها لك مع قيود ARN للموارد.
  • بعد أن تحلم بهذا المستوى من الأتمتة، تدرك أن كتابة سياسات IAM بأقل صلاحية، وكأنها عمل خيري، ستعرض قدرتك على إنهاء الكود في الوقت المحدد للخطر.
  • تستخدم السياسات المدارة (Managed Policies) (لأنه لماذا لا؟) أو تتخمّن أسماء استدعاءات واجهة برمجة التطبيقات وتستخدم أحرف البدل بدلاً من ذلك لتتمكن من المضي قدمًا في حياتك.

مثل هذه العملية ليست مثالية للأمان ولا لمطوري البنية التحتية كرمز. نحن بحاجة إلى تسهيل كتابة سياسات IAM بشكل آمن وتجريد تعقيد كتابة سياسات IAM بأقل صلاحية. لهذا السبب صنعت هذه الأداة.

يسمح Policy Sentry للمستخدمين بإنشاء سياسات IAM بأقل صلاحية في ثوانٍ، بدلاً من كتابتها يدويًا بشكل ممل. هذه السياسات محدودة النطاق وفقًا لمستويات الوصول والموارد. في حالة حدوث خرق أمني، يساعد ذلك في الحد من نصف قطر الانفجار للبيانات المخترقة من خلال منح مبادئ IAM فقط الوصول إلى ما يحتاجون إليه.

قبل هذه الأداة، قد يستغرق إعداد سياسة IAM مع قيود ARN للموارد ساعات — ولكن الآن يمكن أن يستغرق ثوانٍ. بهذه الطريقة، على المطورين فقط تحديد الموارد التي يحتاجون إلى الوصول إليها، وPolicy Sentry يجرد تعقيد سياسات IAM بعيدًا عن عمليات التطوير الخاصة بهم.

كتابة سياسات آمنة بناءً على قيود الموارد ومستويات الوصول

الميزة الرئيسية لـ Policy Sentry هي أنه يمكنه إنشاء سياسات IAM بناءً على ARNs للموارد ومستويات الوصول. وظيفة CRUD الخاصة بنا تأخذ النهج القائل بأن مطوري IAC لا ينبغي أن يضطروا لفهم تعقيدات AWS IAM - يجب علينا تجريد التعقيد لهم. في الواقع، يجب أن يكون المطورون قادرين على قول...

  • "أحتاج إلى وصول Read/Write/List إلى arn:aws:s3:::example-org-sbx-vmimport"
  • "أحتاج إلى وصول Permissions Management إلى arn:aws:secretsmanager:us-east-1:123456789012:secret:mysecret"
  • "أحتاج إلى وصول Tagging إلى arn:aws:ssm:us-east-1:123456789012:parameter/test"

...ويجب أن تقوم أتمتتنا بإنشاء سياسات تتوافق مع مستويات الوصول هذه.

كيف نحقق ذلك؟ حسنًا، يستفيد Policy Sentry من وثائق AWS حول الإجراءات والموارد ومفاتيح الشروط للبحث عن الإجراءات ومستويات الوصول وأنواع الموارد، ويولّد السياسات وفقًا لـ ARNs ومستويات الوصول. تأمل مقتطف الجدول أدناه:

يجمع Policy Sentry كل هذه الوثائق في قاعدة بيانات واحدة ويستخدم تلك القاعدة لإنشاء سياسات وفقًا للإجراءات والموارد ومستويات الوصول.

البرنامج التعليمي

التثبيت

مديرو الحزم

  • Homebrew
root@kitploit:~
brew tap salesforce/policy_sentry https://github.com/salesforce/policy_sentry
brew install policy_sentry
  • Pip
root@kitploit:~
pip3 install --user policy_sentry

إكمال الصدفة

لتمكين إكمال Bash، ضع هذا في ملف .bashrc الخاص بك:

root@kitploit:~
eval "$(_POLICY_SENTRY_COMPLETE=bash_source policy_sentry)"

لتمكين إكمال ZSH، ضع هذا في ملف .zshrc الخاص بك:

root@kitploit:~
eval "$(_POLICY_SENTRY_COMPLETE=zsh_source policy_sentry)"

الخطوة 1: إنشاء القالب

  • لإنشاء سياسة وفقًا للموارد ومستويات الوصول، ابدأ بـ إنشاء قالب بهذا الأمر حتى تتمكن فقط من ملء الـ ARNs:
root@kitploit:~
policy_sentry create-template --output-file crud.yml --template-type crud
  • سيُنشئ ملفًا مثل هذا:
root@kitploit:~
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:
    - ''

الخطوة 2: نسخ/لصق ARNs

  • انسخ/الصق ARNs التي تريد تضمينها في سياستك. يمكنك حذف الأسطر التي لا تستخدمها، أو تركها كما هي.
root@kitploit:~
mode: crud
read:
- 'arn:aws:ssm:us-east-1:123456789012:parameter/myparameter'
write:
- 'arn:aws:ssm:us-east-1:123456789012:parameter/myparameter'
list:
- 'arn:aws:ssm:us-east-1:123456789012:parameter/myparameter'
tagging:
- 'arn:aws:secretsmanager:us-east-1:123456789012:secret:mysecret'
permissions-management:
- 'arn:aws:secretsmanager:us-east-1:123456789012:secret:mysecret'

الخطوة 3: أمر كتابة السياسة

  • ثم قم بتشغيل هذا الأمر:
root@kitploit:~
policy_sentry write-policy --input-file crud.yml
  • سيُنشئ هذه النتائج:
root@kitploit:~
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "SsmReadParameter",
            "Effect": "Allow",
            "Action": [
                "ssm:GetParameter",
                "ssm:GetParameterHistory",
                "ssm:GetParameters",
                "ssm:GetParametersByPath",
                "ssm:ListTagsForResource"
            ],
            "Resource": [
                "arn:aws:ssm:us-east-1:123456789012:parameter/myparameter"
            ]
        },
        {
            "Sid": "SsmWriteParameter",
            "Effect": "Allow",
            "Action": [
                "ssm:DeleteParameter",
                "ssm:DeleteParameters",
                "ssm:LabelParameterVersion",
                "ssm:PutParameter"
            ],
            "Resource": [
                "arn:aws:ssm:us-east-1:123456789012:parameter/myparameter"
            ]
        },
        {
            "Sid": "SecretsmanagerPermissionsmanagementSecret",
            "Effect": "Allow",
            "Action": [
                "secretsmanager:DeleteResourcePolicy",
                "secretsmanager:PutResourcePolicy"
            ],
            "Resource": [
                "arn:aws:secretsmanager:us-east-1:123456789012:secret:mysecret"
            ]
        },
        {
            "Sid": "SecretsmanagerTaggingSecret",
            "Effect": "Allow",
            "Action": [
                "secretsmanager:TagResource",
                "secretsmanager:UntagResource"
            ],
            "Resource": [
                "arn:aws:secretsmanager:us-east-1:123456789012:secret:mysecret"
            ]
        }
    ]
}

لاحظ كيف تتعرف السياسة أعلاه على ARNs التي يقدمها المستخدم، بالإضافة إلى مستوى الوصول المطلوب. على سبيل المثال، يحتوي SID SecretsmanagerTaggingSecret على إجراءات الوسم (Tagging) المخصصة لنوع المورد secret فقط.

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

أوراق الغش

ورقة غش كتابة السياسة

root@kitploit:~
# قم بإنشاء القوالب أولاً!!! بهذه الطريقة يمكنك فقط لصق القيم التي تحتاجها بدلاً من تذكر تنسيق YAML
# وضع CRUD
policy_sentry create-template --output-file tmp.yml --template-type crud
# وضع الإجراءات
policy_sentry create-template --output-file tmp.yml --template-type actions

# كتابة سياسة بناءً على مستويات الوصول الخاصة بالموارد
policy_sentry write-policy --input-file examples/yml/crud.yml

# كتابة سياسة بناءً على قائمة الإجراءات
policy_sentry write-policy --input-file examples/yml/actions.yml

ورقة غش استعلام قاعدة بيانات IAM

root@kitploit:~

###############
# جدول الإجراءات
###############
# ملاحظة: استخدم --fmt yaml أو --fmt json لتغيير تنسيق الإخراج. الإعداد الافتراضي هو json للاستعلام

# الحصول على قائمة بالإجراءات التي لا تدعم قيود الموارد
policy_sentry query action-table --service s3 --resource-type "*" --fmt yaml

# الحصول على قائمة بالإجراءات على مستوى "Write" في S3 التي لا تدعم قيود الموارد
policy_sentry query action-table --service s3 --access-level write --resource-type "*" --fmt yaml

# الحصول على قائمة بجميع إجراءات IAM عبر جميع الخدمات التي لها وصول "إدارة الصلاحيات"
policy_sentry query action-table --service all --access-level permissions-management

# الحصول على قائمة بجميع إجراءات IAM المتاحة لخدمة RAM
policy_sentry query action-table --service ram

# الحصول على تفاصيل حول إجراء IAM `ram:TagResource`
policy_sentry query action-table --service ram --name tagresource

# الحصول على قائمة بجميع إجراءات IAM ضمن خدمة RAM التي لها مستوى وصول إدارة الصلاحيات.
policy_sentry query action-table --service ram --access-level permissions-management

# الحصول على قائمة بجميع إجراءات IAM ضمن خدمة SES التي تدعم مفتاح الشرط `ses:FeedbackAddress`.
policy_sentry query action-table --service ses --condition ses:FeedbackAddress

###########
# جدول ARN
###########

# الحصول على قائمة بجميع تنسيقات ARN الأولية المتاحة من خلال خدمة SSM.
policy_sentry query arn-table --service ssm

# الحصول على تنسيق ARN الأولي لـ `cloud9` ARN بالاسم المختصر `environment`
policy_sentry query arn-table --service cloud9 --name environment

# الحصول على أزواج المفتاح/القيمة لجميع تنسيقات ARN الأولية بالإضافة إلى أسمائها المختصرة
policy_sentry query arn-table --service cloud9 --list-arn-types

######################
# جدول مفاتيح الشروط
######################

# الحصول على قائمة بجميع مفاتيح الشروط المتاحة لخدمة Cloud9
policy_sentry query condition-table --service cloud9

# الحصول على تفاصيل حول مفتاح الشرط المسمى `cloud9:Permissions`
policy_sentry query condition-table --service cloud9 --name cloud9:Permissions

التهيئة المحلية (اختياري)

root@kitploit:~
# تهيئة مجلد تكوين policy_sentry وإنشاء جداول قاعدة بيانات IAM.
policy_sentry initialize

# جلب أحدث إصدار من وثائق AWS لتتمكن من تجربة الخدمات الجديدة.
policy_sentry initialize --fetch

# تجاوز مستويات الوصول عن طريق تحديد مستويات الوصول الخاصة بك (مثال: تصحيح مستويات إدارة الصلاحيات)
policy_sentry initialize --access-level-overrides-file ~/.policy_sentry/overrides-resource-policies.yml

policy_sentry initialize --access-level-overrides-file ~/.policy_sentry/access-level-overrides.yml

استخدامات أخرى

الأوامر

  • create-template: ينشئ قوالب ملفات YML لاستخدامها في أنواع أوامر write-policy.

  • write-policy: يستفيد من ملف YAML لكتابة سياسات نيابة عنك

    • الخيار 1: حدد مستويات CRUD (قراءة، كتابة، قائمة، وسم، أو إدارة صلاحيات) وARN المورد. سيقوم بكتابتها لك. راجع التوثيق
    • الخيار 2: حدد قائمة بالإجراءات. سيقوم بكتابة سياسة IAM لك، ولكن سيتعين عليك ملء الـ ARNs. راجع التوثيق.
  • query: استعلام جداول قاعدة بيانات IAM. يمكن أن يساعد ذلك عند ملء قوالب Policy Sentry، أو مجرد استعلام قاعدة البيانات للمعرفة السريعة.

    • الخيار 1: استعلام جدول الإجراءات (action-table)
    • الخيار 2: استعلام جدول ARNs (arn-table)
    • الخيار 3: استعلام جدول الشروط (condition-table)
  • initialize: (اختياري). إنشاء قاعدة بيانات SQLite تحتوي على جميع الخدمات المتاحة من خلال توثيق الإجراءات والموارد ومفاتيح الشروط. راجع التوثيق.

استخدام مكتبة بايثون

إذا كنت تطور كود بايثون خاص بك وتريد استيراد Policy Sentry كحزمة طرف ثالث، يمكنك تخطي التهيئة والاستفادة من ملف قاعدة البيانات المحلي المضمن مع حزمة بايثون نفسها.

هذا مفيد بشكل خاص للمطورين الذين يرغبون في الاستفادة من قدرات Policy Sentry التي تتطلب استخدام قاعدة بيانات IAM (مثل استعلام جدول قاعدة بيانات IAM). بهذه الطريقة، لست مضطرًا لتهيئة قاعدة البيانات ويمكنك الاستعلام عنها فورًا.

مثال الكود موجود هنا. كما هو موضح أدناه.

root@kitploit:~
from policy_sentry.querying.actions import get_actions_for_service


def example():
    actions = get_actions_for_service('cloud9')  # ثم يمكنك استخدام أي طريقة تتطلب الوصول إلى قاعدة البيانات.
    for action in actions:
        print(action)

if __name__ == '__main__':
    example()

ستبدو النتائج كالتالي:

root@kitploit:~
cloud9:CreateEnvironmentEC2
cloud9:CreateEnvironmentMembership
cloud9:DeleteEnvironment
cloud9:DeleteEnvironmentMembership
cloud9:DescribeEnvironmentMemberships
cloud9:DescribeEnvironmentStatus
cloud9:DescribeEnvironments
cloud9:GetUserSettings
cloud9:ListEnvironments
cloud9:ListTagsForResource
cloud9:TagResource
cloud9:UntagResource
cloud9:UpdateEnvironment
cloud9:UpdateEnvironmentMembership
cloud9:UpdateUserSettings

Docker

إذا كنت تفضل استخدام Docker بدلاً من تثبيت البرنامج النصي باستخدام Python، فإننا ندعم ذلك أيضًا. من جذر المستودع، استخدم هذا لبناء صورة Docker:

root@kitploit:~
docker build -t kmcquade/policy_sentry .

استخدم هذا لتشغيل بعض الأوامر الأساسية:

root@kitploit:~
# أوامر أساسية بدون وسائط
docker run -i --rm kmcquade/policy_sentry:latest "--help"
docker run -i --rm kmcquade/policy_sentry:latest "query"

# استعلام قاعدة البيانات
docker run -i --rm kmcquade/policy_sentry:latest "query action-table --service all --access-level permissions-management"

يدعم أمر write-policy أيضًا تمرير تكوين YML عبر STDIN. إذا كنت تستخدم طريقة Docker، جربه هنا:

root@kitploit:~
# كتابة السياسات عن طريق تمرير التكوين عبر STDIN
cat examples/yml/crud.yml | docker run -i --rm kmcquade/policy_sentry:latest "write-policy"

cat examples/yml/actions.yml | docker run -i --rm kmcquade/policy_sentry:latest "write-policy"

Terraform

وحدة Terraform منشورة ومُحافظة عليها هنا.

المراجع

  • تم استلهام واستعارة عملية كشط المستندات من نص ansible المماثل.
  • السياسات القائمة على الهوية مقابل السياسات القائمة على الموارد
  • الإجراءات والموارد ومفاتيح الشروط لخدمات AWS
تنزيل الأداة
الإجراءاتمستوى الوصولأنواع الموارد
ssm:GetParameterقراءة (Read)parameter
ssm:DescribeParametersقائمة (List)parameter
ssm:PutParameterكتابة (Write)parameter
secretsmanager:PutResourcePolicyإدارة الصلاحيات (Permissions management)secret
secretsmanager:TagResourceوسم (Tagging)secret