باکت پالیسی | 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 مدیریت کنید.