پرش به مطلب اصلی

باکت پالیسی | Bucket Policy

باکت پالیسی فضای ابری آروان به شما این امکان را می‌دهد تا صندوقچه‌هایتان را با دیگران به‌اشتراک بگذارید. با استفاده از این ویژگی می‌توانید با مشخص کردن سطح دسترسی لازم، کار با صندوقچه‌هایتان را در اختیار کاربرانی که به میز کارتان دعوت کرده‌اید قرار دهید. اگر سازمانی بزرگ هستید یا تعداد زیادی صندوقچه در حساب کاربری‌تان دارید، این قابلیت به شما کمک می‌کند تا به‌شکل امن و بهینه فایل‌ها و باکت‌هایتان را مدیریت کنید.

مدیریت پالیسی

برای فعال‌سازی این قابلیت، پس از ورود به پنل فضای ابری آروان، از بخش باکت پالیسی، صفحه‌ی «مدیریت پالیسی» را باز کنید.

سپس با کلیک روی دکمه‌ی «افزودن باکت پالیسی» مطابق نیازتان قانونی برای به‌اشتراک گذاشتن صندوقچه تعریف کنید.

در این صفحه باید موارد زیر را وارد کنید:

  • صندوقچه: در این بخش صندوقچه‌ای را که می‌خواهید برای آن پالیسی تعریف شود انتخاب کنید.

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

  • نام پالیسی: یک نام دل‌خواه برای قانون‌تان تعریف کنید. این نام باید شامل حروف بزرگ و کوچک انگلیسی و یا اعداد باشد.

  • تاثیر: مشخص کنید می‌خواهید دسترسی به منابع را مجاز یا مسدود کنید.

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

    لیست کاربران را می‌توانید از بخش مدیریت کاربران فضای ابری مدیریت کنید.

  • مجوزها: می‌توانید مجوزهای لازم را از میان گزینه‌های زیر به کاربران اختصاص دهید و دسترسی آن‌ها را به منابع کنترل کنید.

    مجوزهاتوضیحات
    دسترسی کاملدسترسی کامل به صندوقچه
    AbortMultipartUploadدسترسی برای لغو آپلود Multipart
    CreateBucketدسترسی ساخت صندوقچه جدید
    DeleteBucketPolicyدسترسی حذف پالیسی صندوقچه
    DeleteBucketدسترسی حذف صندوقچه تعریف‌شده در قانون
    DeleteObjectدسترسی حذف نسخه‌ی Null یک آبجکت
    DeleteObjectVersionدسترسی حذف نسخه‌ی خاصی از یک آبجکت
    GetBucketAclدسترسی دریافت تنظیمات ACL (سطوح دسترسی) صندوقچه
    GetBucketCORSدسترسی دریافت تنظیمات CORS صندوقچه
    GetBucketNotificationدسترسی دریافت تنظیمات پیام‌های صندوقچه
    GetBucketPolicyدسترسی دریافت قوانین پالیسی صندوقچه
    GetBucketTaggingدسترسی دریافت برچسب‌های صندوقچه
    GetBucketVersioningدسترسی دریافت وضعیت نسخه‌نگاری صندوقچه
    GetBucketWebsiteدسترسی دریافت تنظیمات وب‌سایت استاتیک صندوقچه
    GetLifecycleConfigurationدسترسی دریافت تنظیمات چرخه عمر صندوقچه
    GetObjectAclدسترسی دریافت تنظیمات ACL (سطوح دسترسی) آبجکت
    GetObjectدسترسی دریافت آبجکت
    GetObjectTaggingدسترسی دریافت برچسب‌های آبجکت
    PutObjectTaggingدسترسی اضافه کردن برچسب به آبجکت‌ها
    GetObjectVersionAclدسترسی دریافت ACL (سطوح دسترسی) نسخه‌ی خاصی از آبجکت
    GetObjectVersionدسترسی دریافت نسخه‌ی خاصی از آبجکت‌ها
    ListAllMyBucketsدسترسی دریافت لیست همه‌ی صندوقچه‌های حساب کاربری
    ListBucketMultipartUploadsدسترسی دریافت لیست آپلودهای Multipart در حال اجرا
    ListBucketدسترسی دریافت لیست همه‌ یا برخی از آبجکت‌های صندوقچه (تا ۱۰۰۰ آبجکت)
    ListBucketVersionsدسترسی دریافت لیست متادیتای همه‌ی نسخه‌های آبجکت‌های صندوقچه
    ListMultipartUploadPartsدسترسی دریافت لیست بخش‌هایی که در یک آپلود Multipart بارگذاری شده‌اند
    PutBucketAclتعیین سطح دسترسی به یک صندوقچه به‌وسیله‌ی ACL
    PutBucketCORSدسترسی تعیین تنظیمات CORS برای صندوقچه
    PutBucketNotificationدسترسی دریافت پیام هنگام رخ دادن رویدادهای مشخص
    PutBucketPolicyدسترسی اضافه یا جایگزین کردن پالیسی صندوقچه
    PutBucketTaggingدسترسی اضافه کردن برچسب‌ به صندوقچه
    PutBucketVersioningدسترسی تعیین وضعیت نسخه‌نگاری صندوقچه
    PutBucketWebsiteدسترسی تعیین تنظیمات وب‌سایت صندوقچه
    PutLifecycleConfigurationدسترسی اضافه یا جایگزین کردن قوانین چرخه عمر صندوقچه
    PutObjectAclدسترسی تعیین وضعیت ACL (سطوح دسترسی) به آبجکت‌ها
    PutObjectدسترسی اضافه کردن آبجکت به صندوقچه
    PutObjectVersionAclدسترسی تعیین وضعیت ACL (سطوح دسترسی) آبجکت‌های موجود
  • فیلتر آبجکت‌ها: با وارد کردن نام آبجکت یا Prefix، مشخص کنید کدام آبجکت‌های صندوقچه به اشتراک گذاشته شوند.

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

هم‌چنین در همین صفحه و با کلیک روی دکمه‌ی «افزودن پالیسی دیگر» می‌توانید قوانین بیش‌تری برای صندوقچه تعریف کنید.

در پایان با کلیک روی دکمه‌ی ذخیره، قانون‌ را تایید کنید.

مدیریت پالیسی با SDK

علاوه‌بر پنل کاربری آروان، می‌توانید پالیسی‌های صندوقچه‌تان را به‌کمک SDK فضای ابری نیز مدیریت کنید. برای نمونه، می‌توانید از تکه کد Golang زیر استفاده کنید:

package main

import (
"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/aws/awserr"
"github.com/aws/aws-sdk-go/aws/session"
"github.com/aws/aws-sdk-go/service/s3"
"github.com/aws/aws-sdk-go/aws/credentials"
"encoding/json"
"fmt"
"os"
"path/filepath"
)
func main() {
if len(os.Args) != 2 {
exitErrorf("bucket name required\nUsage: %s bucket_name",
filepath.Base(os.Args[0]))
}
bucket := os.Args[1]

sess, err := session.NewSession(&aws.Config{
Credentials: credentials.NewStaticCredentials("access_key_owner", "secret_key", ""),
})
svc := s3.New(sess, &aws.Config{
Region: aws.String("ir-thr-at1"),
Endpoint: aws.String("s3.ir-thr-at1.arvanstorage.ir"),
})

// Create a policy using map interface. Filling in the bucket as the
// resource.
readOnlyAnonUserPolicy := map[string]interface{}{
"Version": "2012-10-17",
"Statement": []map[string]interface{}{
{
"Sid": "AddPermDef",
"Effect": "Allow",
"Principal": map[string]interface{}{
"AWS": []string{
"arn:aws:iam:::user/Accesskey_invited_user",
},
},
"Action": []string{
"s3:GetObject",
"s3:GetObjectTagging",
},
"Resource": []string{
fmt.Sprintf("arn:aws:s3:::%s/*", bucket),
},
},
},
}

// Marshal the policy into a JSON value so that it can be sent to S3.
policy, err := json.Marshal(readOnlyAnonUserPolicy)
if err != nil {
exitErrorf("Failed to marshal policy, %v", err)
}

// Call S3 to put the policy for the bucket.
_, err = svc.PutBucketPolicy(&s3.PutBucketPolicyInput{
Bucket: aws.String(bucket),
Policy: aws.String(string(policy)),
})
if err != nil {
if aerr, ok := err.(awserr.Error); ok && aerr.Code() == s3.ErrCodeNoSuchBucket {
// Special error handling for the when the bucket doesn't
// exists so we can give a more direct error message from the CLI.
exitErrorf("Bucket %q does not exist", bucket)
}
exitErrorf("Unable to set bucket %q policy, %v", bucket, err)
}

fmt.Printf("Successfully set bucket %q's policy\n", bucket)
}

func exitErrorf(msg string, args ...interface{}) {
fmt.Fprintf(os.Stderr, msg+"\n", args...)
os.Exit(1)
}

مدیریت پالیسی با S3Browser

اگر از ابزار S3browser برای مدیریت آبجکت‌ها و صندوقچه‌هایتان استفاده می‌‌کنید، می‌توانید از بخش "Buckets" و گزینه‌ی "Edit Bucket Policy" قانون مورد نظرتان را تعریف و روی دکمه‌ی "Apply" کلیک کنید.

توجه داشته باشید که باید Access Key کاربر مورد نظرتان را مطابق تنظیمات زیر در principal قرار دهید.

{
"Version": "2008-10-17",
"Statement": [
{
"Sid": "AllowPublicRead",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam:::user/ACCESS-KEY"
},
"Action": [
"s3:GetObject"
],
"Resource": [
"arn:aws:s3:::my-brand-new-bucket/*"
]
}
]
}

مدیریت کاربران

از منوی باکت پالیسی و بخش «مدیریت کاربران»‌ می‌توانید لیست کاربرانی که امکان اشتراک منابع با آن‌ها را دارید مشاهده کنید. این کاربران همان اعضای میز کارتان هستند که پیش‌تر آن‌ها را دعوت کرده‌اید.

هم‌چنین می‌توانید برای ماشین‌یوزرهایی که ساخته‌اید دسترسی ایجاد کنید. کاربرانی که از این طریق در فضای ابری ساخته می‌شوند قادر به ساخت منابع برای خود نیستند و فقط می‌توانند از منابعی که با آن‌ها به اشتراک گذاشته می‌شود استفاده کنند.

این کاربران می‌توانند از طریق ابزارهای S3 یا SDK به منابع به‌اشتراک‌گذاشته‌شده دسترسی داشته باشند.

صندوقچه‌های اشتراک‌گذاری‌شده

با کلیک روی بخش صندوقچه‌ها در پنل کاربری فضای ابری آروان و از تب «اشتراک‌گذاری‌شده» می‌توانید صندوقچه‌هایی را که با شما به‌اشتراک گذاشته شده‌اند مشاهده کنید و عملیات مورد نیازتان را روی آن‌ها انجام دهید.

اگر صندوقچه‌ای با شما به اشتراک گذاشته شده و در این لیست وجود ندارد، می‌توانید از گزینه‌ی «افزودن صندوقچه» استفاده کنید.

هم‌چنین می‌توانید این صندوقچه‌ها را در S3Browser نیز اضافه کنید. برای این کار از منوی "Buckets" و گزینه‌ی "Add External Bucket" نام صندوقچه‌ی مورد نظرتان را وارد و روی دکمه‌ی "Add External Bucket" کلیک کنید.

پس از آن می‌توانید این باکت را طبق سطح دسترسی‌های آن در S3Browser مدیریت کنید.