دسترسی به باکت (Bucket access)
Bucket access راه گرفتن کلید و هویت برای یک یا چند bucket claim در همین namespace است. هر access یک هویت و یک Secret میسازد — حتی اگر چند باکت را پوشش دهد — تا اپلیکیشن با یک جفت کلید به همهٔ آنها وصل شود.
فقط claimهای همین namespace را میتوانید انتخاب کنید. برای دسترسی عمومی یا دسترسی از namespace دیگر، از سیاست باکت روی خود claim استفاده کنید.
قبل از ساخت access، حداقل یک bucket claim در همان namespace داشته باشید. بدون claim، فرم ساخت خالی میماند.
سطوح دسترسی
| در کنسول | در YAML (accessMode) | معنی ساده |
|---|---|---|
| Read only | ReadOnly | فهرست باکت و خواندن آبجکتها |
| Read / write | ReadWrite | خواندن، نوشتن و حذف آبجکتها |
| Read / write + publish objects | ReadWritePublish | مثل ReadWrite، بهعلاوه امکان عمومی کردن تکآبجکتها با ACL |
هیچکدام از این سطوح مدیریت باکت نمیدهند: حذف باکت، تغییر سیاست، versioning، lifecycle یا سهمیه هرگز از طریق access داده نمیشود.
ReadWritePublish میتواند آبجکت را برای خوانندهٔ ناشناس باز کند. اگر فقط آپلود/دانلود اپ لازم است، از ReadWrite استفاده کنید.
ایجاد از کنسول

- وارد workspace شوید و یک namespace را باز کنید.
- در ناوبری namespace، از گروه Object Storage روی Bucket access بزنید.
- روی New access بزنید.
- در پنل بازشده (تب Form):
- Name را پر کنید (مثلاً
reporting-svc) — بعداً قابل تغییر نیست. - در Buckets، claimهای موردنظر را تیک بزنید و برای هر کدام سطح دسترسی را انتخاب کنید.
- Name را پر کنید (مثلاً
- روی Create بزنید.
- صبر کنید تا وضعیت access برابر Ready شود.
- در ستون Credentials روی Reveal بزنید تا
AWS_ACCESS_KEY_ID،AWS_SECRET_ACCESS_KEYوAWS_ENDPOINT_URLرا ببینید.
برای ساخت از YAML در همان پنل، تب From YAML را باز کنید.
ایجاد با kubectl
در همان namespace یک S3BucketAccess اعمال کنید:
❯ kubectl -n <namespace> apply -f - <<EOF❯ apiVersion: oss.tapsicloud.com/v1alpha1❯ kind: S3BucketAccess❯ metadata:❯ name: reporting-svc❯ spec:❯ buckets:❯ - bucketClaimName: app-data❯ accessMode: ReadOnly❯ - bucketClaimName: logs❯ accessMode: ReadWrite# secretName: reporting-svc-credentials # اختیاری؛ پیشفرض: <name>-credentials❯ EOF
<namespace> را با namespace خود جایگزین کنید. فرض بر این است که kubeconfig و context مربوط به workspace شما از قبل تنظیم شده است. هر bucketClaimName باید نام یک claim در همین namespace باشد.
وضعیت را بررسی کنید:
❯ kubectl -n <namespace> get s3bucketaccesses reporting-svc
وقتی Phase برابر Ready شد، کلیدها در Secret هستند:
❯ kubectl -n <namespace> \get secret reporting-svc-credentials -o jsonpath='{.data}'
کلیدهای معمول Secret: AWS_ACCESS_KEY_ID، AWS_SECRET_ACCESS_KEY، AWS_ENDPOINT_URL (مقادیر base64).
مدیریت بعد از ایجاد
| کار | در کنسول | معنی |
|---|---|---|
| دیدن کلیدها | Reveal / Hide | خواندن Secret؛ نیاز به دسترسی get روی secrets |
| چرخش کلید | Rotate | کلید جدید ساخته میشود؛ کلید قبلی فوری از کار میافتد |
| تغییر باکتها | Edit روی ستون Buckets | افزودن/حذف claim یا تغییر سطح — بدون تعویض کلید |
| حذف | حذف ردیف | هویت و کلید حذف میشوند؛ هر کلاینتی که از آن استفاده میکند قطع میشود |
چرخش کلید با kubectl:
❯ kubectl -n <namespace> \annotate s3bucketaccess reporting-svc \oss.tapsicloud.com/rotate-keys="$(date -u +%FT%TZ)" --overwrite
تا وقتی یک access هنوز به claim اشاره میکند، حذف آن claim رد میشود. اول access را ویرایش یا حذف کنید، بعد claim را.
لیست باکتهای یک access قابل تغییر است و کلید را عوض نمیکند. فقط Rotate یا Delete کلید فعلی را بیاعتبار میکند.