برنامه نویسی

ساده کردن کشف اجازه IAM با طرح های منبع CloudFormation

هنگامی که تیم های زیرساختی در پروژه های اتوماسیون ابری شروع به کار می کنند ، شناسایی مجوزهای دقیق IAM مورد نیاز برای منابع خود اغلب به یک چالش وقت گیر تبدیل می شود. مهندسان غالباً خود را در جستجوی مستندات گسترده AWS ، آزمایش با سیاست ها یا مجوزهای بیش از حد برای جلوگیری از مسدود کردن می دانند. چه می شود اگر یک رویکرد ساختار یافته تر برای کشف دقیقاً کدام مجوزها برای عملیات خاص در منابع AWS مورد نیاز باشد؟

این پست وبلاگ یک منبع قدرتمند و در عین حال غالباً نادیده گرفته شده را معرفی می کند: طرح های منابع CloudFormation. این طرح ها اطلاعات مفصلی در مورد مجوزهای مورد نیاز برای عملیات مشترک CRUD (ایجاد ، خواندن ، به روزرسانی ، حذف) به علاوه عملکرد لیست در منابع AWS ارائه می دهند ، و یک منبع واقعی از حقیقت را ارائه می دهد که می تواند از طریق ارائه دهنده AWSCC از تیم هایی استفاده کند.

چالش کشف مجوز

هنگام خودکار سازی استقرار و مدیریت زیرساخت ها ، تیم ها اغلب با سؤالاتی مانند:

  • حتی مجوزهای مرتبط با یک سرویس یا منبع چیست؟
  • برای ایجاد این منبع ، کدام مجوزهای دقیق لازم است؟
  • آیا مجموعه مجوزهای مختلفی برای لیست در مقابل خواندن منابع فردی لازم است؟
  • چگونه می توانیم بدون آزمایش و خطا ، دسترسی کمترین میزان را اجرا کنیم؟

این سؤالات حتی پیچیده تر می شوند زیرا سازمان ها ردپای AWS خود را مقیاس می کنند و خدمات جدیدتری را با مدل های مجوز در حال تحول در خود جای می دهند.

طرح های منابع CloudFormation: یک رویکرد مکمل

AWS CloudFormation طرح های قابل خواندن با دستگاه را برای همه انواع منابع پشتیبانی شده فراهم می کند. این طرح ها در دسترس عموم هستند و حاوی ابرداده های ارزشمندی در مورد منابع ، از جمله مجوزهای مورد نیاز آنها هستند. این طرح ها در: https://cloudformation-schema.s3.us-s3-2.amazonaws.com/ برای هر نوع منبع پشتیبانی شده در دسترس هستند.

نکته مهم: این رویکرد به معنای جایگزینی شیوه های امنیتی مستقر مانند استفاده از AWS IAM Analyzer برای اعتبار سنجی جامع سیاست و پالایش نیست. در عوض ، این یک نقطه شروع مفید برای جلوگیری از شروع با سیاست های بیش از حد مجاز مانند AdministratorAccess فراهم می کند. این روش را به عنوان یک ابزار در ابزار امنیتی گسترده تر خود در نظر بگیرید.

مثال عملی: کشف مجوزهای IAM برای سطل آمازون S3

بیایید روند شناسایی مجوزهای مورد نیاز برای عملیات سطل آمازون S3 را طی کنیم:

مرحله 1: طرحواره منابع را پیدا کنید

ابتدا باید طرح را برای سطل S3 پیدا کنیم. انواع منابع CloudFormation از الگویی از AWS::Service::Resourceبشر برای سطل S3 ، ما به دنبال آن هستیم AWS::S3::Bucketبشر

URL طرحواره https://cloudformation-schema.s3.us-west-2.amazonaws.com/resourcetype/aws-s3-bucket.json خواهد بود

مرحله 2: بخش مجوزها را بررسی کنید

پس از بارگیری طرح ، به دنبال handlers بخش ، که حاوی اطلاعات مربوط به مجوزهای مورد نیاز برای عملیات مختلف است:

"handlers": {
  "create": {
    "permissions": [
      "s3:CreateBucket",
      "s3:PutBucketTagging",
      "s3:PutBucketPolicy",
      "s3:PutBucketVersioning",
      "s3:PutBucketAcl",
      "s3:PutBucketLogging",
      ...
    ]
  },
  "read": {
    "permissions": [
      "s3:GetBucketAcl",
      "s3:GetBucketLocation",
      "s3:GetBucketPolicy",
      "s3:GetBucketTagging",
      "s3:GetBucketVersioning",
      ...
    ]
  },
  "update": {
    "permissions": [
      "s3:PutBucketAcl",
      "s3:PutBucketPolicy",
      "s3:PutBucketVersioning",
      "s3:PutBucketTagging",
      ...
    ]
  },
  "delete": {
    "permissions": [
      "s3:DeleteBucket",
      "s3:DeleteBucketPolicy",
      ...
    ]
  },
  "list": {
    "permissions": [
      "s3:ListAllMyBuckets"
    ]
  }
}
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

مرحله 3: خط مشی IAM خود را بسازید

بر اساس عملیاتی که اتوماسیون شما باید انجام دهد ، اکنون می توانید یک سیاست دقیق IAM را فقط با مجوزهای لازم تنظیم کنید. به عنوان مثال ، اگر اتوماسیون شما فقط نیاز به ایجاد و خواندن سطل S3 دارد ، شما فقط مجوزهای موجود در “ایجاد” و “خواندن” را درج می کنید. به خاطر داشته باشید که برخی از مجوزهای S3 در حال حاضر شامل مجوزهای S3Tables است که ممکن است شما به آن احتیاج نداشته باشید.

مثال: مجوزهای برنامه AWS QBUSINESS

بیایید به سرویس جدید AWS QBusiness نگاه کنیم:

مرحله 1: طرح را پیدا کنید

URL طرحواره برای برنامه های QBusiness https://cloudformation-schema.s3.us-west-2.amazonaws.com/resourcetype/aws-qbusiness-application.json

مرحله 2: مجوزهای مورد نیاز را استخراج کنید

این طرح شامل مجوزهایی مانند:

"handlers": {
  "create": {
    "permissions": [
      "qbusiness:CreateApplication",
      "qbusiness:TagResource",
      "iam:PassRole"
    ]
  },
  "read": {
    "permissions": [
      "qbusiness:GetApplication",
      "qbusiness:ListTagsForResource"
    ]
  },
  "update": {
    "permissions": [
      "qbusiness:UpdateApplication",
      "qbusiness:TagResource",
      "qbusiness:UntagResource",
      "iam:PassRole"
    ]
  },
  "delete": {
    "permissions": [
      "qbusiness:DeleteApplication"
    ]
  },
  "list": {
    "permissions": [
      "qbusiness:ListApplications"
    ]
  }
}
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

توجه کنید که چگونه iam:PassRole مجوز در هر دو عملیات ایجاد و به روزرسانی ظاهر می شود – این یک مجوز مهم است که ممکن است هنگام تحقیق دستی مجوزهای مورد نیاز به راحتی نادیده گرفته شود.

مزایایی برای کاربران Terraform

کاربران Terraform با استفاده از ارائه دهنده AWSCC می توانند به راحتی از آنها استفاده کنند زیرا آنها به منابع مشابه Cloudformation نقشه می کشند. گفته می شود ، دانش مجوزهای مورد نیاز در مورد هر نوع اسکریپت/IAC که تیم شما ممکن است برای تهیه زیرساخت ها استفاده کند ، اعمال می شود.

به عنوان مثال ، هنگام استفاده:

resource "awscc_s3_bucket" "example" {
  bucket_name = "my-example-bucket"
  # other properties
}
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

مجوزهای مورد نیاز با کسانی که در طرح CloudFormation برای ایجاد ، خواندن ، به روزرسانی و حذف عملیات هستند مطابقت دارد.

نمونه اسکریپت برای انجام این کار

در حالی که من این مطلب را می نوشتم ، می خواستم با ایجاد یک اسکریپت ساده برای استفاده خودم ، به دنبال بررسی مجوزها به صورت روزانه ، این کار را گسترش دهم. این امر شما را ملزم می کند که نوع منابع فعلی CloudFormation را بدانید.

این فیلمنامه:

  1. یک cloudFormationPermissionSextractorClass ایجاد می کند تا بتواند کلاس منطق استخراج مجوز را کنترل کند تا منطق استخراج مجوز را اداره کند
  2. این طرح را برای نوع منابع مشخص شده واگذار می کند
  3. استخراج مجوزها بر اساس نوع عملکرد (در صورت مشخص شدن)
  4. نتایج را به روشی فرمت نشان می دهد

برای استفاده از فیلمنامه:

  1. بسته های مورد نیاز را نصب کنید:
pip install requests
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

استفاده مثال:

Enter CloudFormation resource type (e.g., AWS::S3::Bucket): AWS::S3::Bucket

Available operations: create, read, update, delete, list
Press Enter to see all permissions
Enter operation type (optional): create
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

سپس خروجی اسکریپت مجوزهای لازم برای ایجاد یک سطل S3 را از طریق CloudFormation نمایش می دهد.
به یاد داشته باشید که پاسخ را به درستی انجام دهید زیرا انواع منابع مختلف ممکن است ساختارهای مجوز متفاوتی در طرحواره های خود داشته باشند.

بهترین روش ها برای استفاده از طرح های منابع

  1. مجوزها را جمع کنید: فقط شامل مجوزهایی برای عملیاتی است که کد شما در واقع انجام می دهد.
  2. از طریق آزمایش تأیید کنید: در حالی که طرحواره ها جامع هستند ، همیشه با آزمایش در دنیای واقعی تأیید کنید.
  3. تولید سیاست خودکار: خودکار کردن استخراج مجوزها از طرحواره های خط لوله CI/CD خود را در نظر بگیرید.
  4. کنونی ماندن: برنامه های منابع با تکامل خدمات AWS به روز می شوند ، بنابراین به طور دوره ای به روزرسانی ها را بررسی کنید.

ادغام با شیوه های امنیتی موجود

این رویکرد مبتنی بر طرحواره به عنوان بخشی از یک استراتژی جامع امنیتی کار می کند:

  1. برای استقرار اولیه با مجوزهای مشتق از طرحواره شروع کنید
  2. برای شناسایی مجوزهای بلااستفاده از AWS IAM Analy Analyzer استفاده کنید
  3. پالایش مداوم سیاست را بر اساس الگوهای استفاده واقعی اجرا کنید
  4. بررسی های امنیتی منظم از همه سیاست های IAM را حفظ کنید

پایان

برنامه های منابع CloudFormation منبع ارزشمندی از اطلاعات در مورد مجوزهای مورد نیاز IAM را ارائه می دهند که می تواند به طور قابل توجهی تلاش های اتوماسیون زیرساخت شما را ساده تر کند. با استفاده از این طرح ها ، تیم ها می توانند:

  • دسترسی کمتری را آسانتر انجام دهید
  • زمان عیب یابی مربوط به مشکلات مجوز را کاهش دهید
  • با تکامل خدمات AWS با الزامات مجوز به روز بمانید
  • مجموعه های مجوز مداوم را در هر دو جریان کار IAC خود اعمال کنید

دفعه بعد که تیم شما مجوزهای IAM را برای یک منبع جدید AWS تنظیم می کند ، در نظر بگیرید که بررسی اولین طرح Cloudformation می تواند در حالی که وضعیت امنیتی خود را از طریق تعاریف دقیق تر اجازه می دهد ، ساعت های تحقیق و آزمایش را صرفه جویی کند.

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا