باکت پالیسی


نکته‌ی مهم: توجه داشته باشید که در صورت تنظیم پالیسی به حالت عمومی، داده‌های شما از طریق اینترنت قابل دسترسی خواهند بود.


در این مستند با پالیسی‌هایی که می‌توانید روی سرویس استوریج ستون اعمال کنید آشنا می‌شوید.

می‌توان با دستور get-bucket-policy قاعده‌ی دسترسی یا policy که برای یک سبد تعریف شده را دریافت کرد. (برای آشنایی بیشتر با ابزار aws به راهنمای کار با cli مراجعه کنید.)

قاعده‌ی دسترسی در فرمت json تعریف می‌شود که در رابطه با آن در ادامه توضیح خواهیم داد. به صورت پیش‌فرض هیچ قاعده‌ی دسترسی برای سبدها تنظیم نشده است.

در صورتی که در هریک از مواردی که می‌خواهید پیکربندی کنید به شناسه‌ی فضای کاری (Workspace ID) و یا شناسه‌ی کاربر (User ID) نیاز داشتید به این صورت می‌توانید آن را دریافت کنید:

شناسه‌ی فضای كاری: برای دریافت شناسه‌ی فضای کاری وارد قسمت پروفایل کاربری شوید. در بخش فضاهای کاری می‌توانید شناسه‌ی مربوط به فضای کاری مورد نظر خود را پیدا کنید.

شناسه‌ی کاربر: برای دریافت شناسه‌ی کاربر وارد سرویس IAM شوید. در بخش کاربرها ابتدا کاربر مورد نظر را جستجو کنید. با کلیک روی نام کاربر می‌توانید شناسه‌ی مربوط به آن را در صفحه‌ی باز شده ببینید.

می‌توان با دستور put-bucket-policy برای یک سبد یک قاعده‌ی دسترسی یا policy تعریف کرد.

نکته: تنظیم قاعده‌ی جدید، قواعد قبلی را از بین می‌برد. بنابراین قبل از استفاده از دستور put-bucket-policy با استفاده از دستور get-bucket-policy، قواعد موجود را دریافت کرده و در صورت نیاز قواعد موجود را در فایل جدید وارد کنید.

تنظیمات قواعد دسترسی در قالب یک فایل json و به عنوان ورودی به دستور بالا داده می‌شوند. در ادامه چند مثال از قواعد پرکاربرد را مرور می‌کنیم.

ساختار کلی یک باکت پالیسی به این شکل است:

ساختار user می‌تواند به این صورت باشد برای مشخص کردن یک کاربر از یک فضای کاری:

هم‌چنین می‌توان برای مشخص کردن تمام کاربران یک فضای کاری از این ساختار استفاده کرد:

در قواعد دسترسی ستون می‌توان از این عملیات استفاده کرد:

  • دسترسی مربوط به اشیا:

s3:GetObject

s3:PutObject

s3:DeleteObject

s3:GetObjectVersion

s3:DeleteObjectVersion

  • دسترسی لیست کردن اشیای باکت:

s3:ListBucket

  • دسترسی به تنظیمات قواعد دسترسی:

s3:GetBucketPolicy

s3:PutBucketPolicy

s3:DeleteBucketPolicy

  • دسترسی به تنظیمات ACL:

s3:GetBucketAcl

s3:PutBucketAcl

s3:GetObjectAcl

s3:PutObjectAcl

  • دسترسی به تنظیمات چرخه‌ی حیات اشیا:

s3:GetLifecycleConfiguration

s3:PutLifecycleConfiguration

  • دسترسی به تنظیمات CORS:

s3:GetBucketCORS

s3:PutBucketCORS

  • سایر:

s3:AbortMultipartUpload

s3:CreateBucket

s3:DeleteBucket

s3:DeleteBucketWebsite

s3:DeleteReplicationConfiguration

s3:GetAccelerateConfiguration

s3:GetBucketLocation

s3:GetBucketLogging

s3:GetBucketNotification

s3:GetBucketRequestPayment

s3:GetBucketTagging

s3:GetBucketWebsite

s3:GetObjectTorrent

s3:GetObjectVersionAcl

s3:GetObjectVersionTorrent

s3:GetReplicationConfiguration

s3:ListAllMyBuckets

s3:ListBucketMultipartUploads

s3:ListMultipartUploadParts

s3:PutAccelerateConfiguration

s3:PutBucketLogging

s3:PutBucketNotification

s3:PutBucketRequestPayment

s3:PutBucketTagging

s3:PutBucketVersioning

s3:PutBucketWebsite

s3:PutObjectVersionAcl

s3:PutReplicationConfiguration

s3:RestoreObject

برای تعریف کردن قسمتی از یک باکت باید با این عبارت شروع کنیم:

و در ادامه می‌توانیم اسم باکت و prefix مورد نظر را قرار دهیم:

در هر قسمت از عبارت بالا می‌توانیم عبارت را قطع کرده و از * استفاده کنیم که به معنای هر مقداری است که در ادامه عبارت می‌آید. به عنوان مثال عبارات زیر قابل قبول هستند:

مقادیر زیر برای condition type قابل استفاده است (غیر از قسمت Null به بقیه مقادیر می‌توان پس‌وند IfExists نیز اضافه کرد):

  • string:

StringEquals

StringNotEquals

StringEqualsIgnoreCase

StringNotEqualsIgnoreCase

StringLike قابلیت دریافت regx

StringNotLike

  • Numeric

NumericEquals

NumericNotEquals

NumericLessThan

NumericLessThanEquals

NumericGreaterThan

NumericGreaterThanEquals

  • Date

DateEquals

DateNotEquals

DateLessThan

DateLessThanEquals

DateGreaterThan

DateGreaterThanEquals

  • Bool

Bool

  • Binary

BinaryEquals

  • Ip Address

IpAddress

NotIpAddress

  • Null

Null

لیست مقادیری که می‌توانیم برای condition key استفاده کنیم:

aws:CurrentTime

aws:EpochTime

aws:PrincipalType

aws:Referer

aws:SourceIp

aws:UserAgent

aws:username

ضمنا می‌توان از این مقادیر در قسمت condition value نیز استفاده کرد. به این صورت که باید آن داخل {} قرار داد و قبل از آن علامت $ قرار گیرد. به عنوان مثال:

مثال زیر دسترسی خواندن را برای تمام سبد غیر از یک پوشه‌ی خاص باز می‌کند. (آبجکت‌های داخل پوشه‌ی مورد نظر برای هیچ کاربری قابل خواندن نخواهد بود.)

اگر می‌خواهید به یک ip خاص دسترسی‌های متفاوتی بدهید مثلا به دلایل امنیتی فقط به ipهای cdn دسترسی بدهید این قابلیت به شما کمک می‌کند.

به عتوان مثال، دستور زیر باعث می‌شود هیچ کاربری نتواند روی objectهای درون باکت‌های مشخص‌شده عملیاتی را اجرا کند مگر اینکه درخواست‌ها از بازه‌ی ipهای مشخص‌شده ارسال شده باشند.

آیا این مقاله به شما کمک کرد؟

با نظر دادن به بهبود کیفیت مستندات کمک کنید

sotoon

کلیه حقوق مادی و معنوی محفوظ است. © ۱۴۰۳ ستون/ شرکت رایانش ابری واحد هزاردستان