مشاهده‌ی تنظیمات موجود

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

aws --endpoint http://ARCHIVE_ENDPOINT/ s3api get-bucket-policy --bucket
BUCKET_NAME_HERE

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

تغییر تنظیمات

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

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

aws --endpoint http://ARCHIVE_ENDPOINT/ s3api put-bucket-policy --bucket
BUCKET_NAME_HERE --policy file://PATH_TO_POLICY_JSON

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

دسترسی عمومی خواندن برای تمام اشیای داخل سبد

{
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "*"
            },
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::*"
        }
    ]
}

دسترسی عمومی خواندن برای تمام اشیای داخل یک پوشه خاص

{
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "*"
            },
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::BUCKET_NAME/PATH/*"
        }
    ]
}

افزودن چند قاعده

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

{
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "*"
            },
            "Action": "s3:GetObject",
            "Resource": "*"
        },
        {
            "Effect": "Deny",
            "Principal": {
                "AWS": "*"
            },
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::BUCKET_NAME/PATH/*"
        }
    ]
}

دسترسی کامل به یک کاربر خاص

{
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam:::user/WORKSPACE_ID:USER_ID"
            },
            "Action": "*",
            "Resource": "arn:aws:s3:::*"
        }
    ]
}

دسترسی چند عملیات خاص به چند کاربر مشخص

{
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                    "arn:aws:iam:::user/WORKSPACE_ID:USER_ID_1",
                    "arn:aws:iam:::user/WORKSPACE_ID:USER_ID_2"
                ]
            },
            "Action": [
                "s3:GetObject",
                "s3:ListBucket",
                "s3:PutObject",
                "s3:DeleteObject"
            ],
            "Resource": "arn:aws:s3:::*"
        }
    ]
}

چند عملیات پرکاربرد را که می‌توان از آن‌ها در قسمت Action استفاده کرد، در فهرست زیر مشاهده می‌کنید:

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

s3:GetObject
s3:PutObject
s3:DeleteObject

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

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

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