All Products
Search
Document Center

Object Storage Service:Bucket Policy

Last Updated:Oct 24, 2026

Bucket policy adalah kebijakan otorisasi berbasis resource yang diterapkan pada bucket. Gunakan bucket policy untuk memberikan akses cross-account, mengaktifkan akses anonim, atau membatasi akses berdasarkan alamat IP atau VPC.

Cara kerja

Bucket policy menggunakan model berbasis resource: kebijakan ini diterapkan pada bucket dan menentukan Pihak yang berwenang mana yang dapat melakukan aksi apa terhadap resource apa di bawah kondisi apa.

Saat permintaan masuk, OSS mengevaluasi semua kebijakan yang relevan, termasuk bucket policy dan kebijakan RAM. Evaluasi mengikuti prinsip deny-first: aturan Deny eksplisit akan memblokir permintaan terlepas dari aturan Allow. Jika tidak ada aturan yang cocok, permintaan ditolak secara default.

Bucket policy memiliki aturan khusus untuk Pemilik bucket:

  • Jika Pihak yang berwenang diatur ke karakter wildcard (*) dan kebijakan tidak menyertakan kondisi, kebijakan tersebut hanya berlaku untuk pengguna selain Pemilik bucket.

  • Jika Pihak yang berwenang diatur ke karakter wildcard (*) dan kebijakan menyertakan kondisi, kebijakan tersebut berlaku untuk semua pengguna, termasuk Pemilik bucket dan pengguna anonim. Aturan Deny dapat membuat seluruh bucket tidak dapat diakses. Aturan Allow dapat mengekspos data Anda kepada pengguna anonim.

Jika beberapa pernyataan berlaku untuk pengguna yang sama, izin efektifnya merupakan union dari semua pernyataan tersebut, dengan tetap mengikuti prinsip deny-first.

Penting
  • Kunci kondisi acs:SourceIp hanya mencocokkan alamat IP sumber permintaan dan tidak membedakan apakah alamat IP tersebut berasal dari jaringan publik atau VPC. Artinya, jika Anda hanya menggunakan acs:SourceIp untuk membatasi akses, permintaan dari VPC lain yang menggunakan rentang alamat IP yang sama juga akan diizinkan, sehingga menimbulkan risiko akses tidak sah. Oleh karena itu, saat mengonfigurasi Bucket Policy, jika Anda menetapkan acs:SourceIp, Anda juga harus menetapkan acs:SourceVpc untuk mengidentifikasi sumber jaringan permintaan secara eksplisit.

  • Batasan ini hanya berlaku untuk Bucket Policy baru. Bucket Policy yang sudah ada tidak terpengaruh. Namun, memodifikasi Bucket Policy yang sudah ada dianggap sebagai pengajuan baru dan tunduk pada batasan ini.

Mengonfigurasi kebijakan bucket

OSS menyediakan dua metode konfigurasi: grafis dan sintaksis.

  • Metode grafis: Antarmuka berbasis formulir untuk skenario otorisasi umum.

  • Metode sintaksis: Editor berbasis JSON yang mendukung semua fitur kebijakan dan kombinasi kondisi yang kompleks.

Metode grafis

  1. Buka daftar Buckets dan klik bucket target.

  2. Di panel navigasi kiri, klik Permission Control > Bucket Policy.

  3. Pilih Add in GUI, lalu klik Authorize.

    Parameter

    Deskripsi

    Applied To

    Pilih apakah akan memberikan izin pada Whole Bucket atau pada Specific Resources.

    Resource Paths

    • Jika Anda mengatur Applied To ke Whole Bucket, Resource Paths diatur ke bucket-name/*.

    • Jika Anda mengatur Applied To ke Specific Resources, masukkan direktori atau objek yang ingin Anda otorisasi. Anda dapat menambahkan beberapa entri.

    Authorized User

    Tentukan Pihak yang berwenang yang akan diberikan izin.

    • All Accounts (*): Memberikan izin kepada siapa saja, termasuk pengguna anonim.

    • RAM User: Pilih RAM user yang termasuk dalam Akun Alibaba Cloud saat ini.

      Akun yang masuk harus berupa Akun Alibaba Cloud (akun root) atau RAM user dengan izin management bucket dan izin ListUsers di RAM. Jika tidak, daftar RAM user tidak akan terlihat.

    • Other Accounts: Masukkan UID akun lain atau RAM user yang akan diotorisasi, atau pengguna temporary dengan kredensial yang dimulai dengan arn:sts, seperti arn:sts::1798************:assumed-role/role-name/session-name. Anda dapat mengotorisasi beberapa pengguna. Masukkan satu pengguna per baris.

      Jika izin diberikan kepada Peran RAM, peran tersebut tidak dapat mengakses resource dari Konsol OSS. Gunakan ossutil, SDK, atau API sebagai gantinya.

    Authorized Operation

    • Simple Settings: Pilih kombinasi operasi terotorisasi yang umum. Opsi meliputi Read-Only (excluding ListObject), Read-Only (including ListObject), Read/Write, Full Access, dan Deny Access.

    • Advanced Settings: Sesuaikan Effect (Allow atau Reject) dan Operation.

    Condition (Opsional)

    Tetapkan kondisi agar kebijakan berlaku.

    • Access Method: Opsi meliputi HTTPS dan HTTP. Setelah Anda memilih opsi, kebijakan hanya berlaku untuk permintaan akses yang menggunakan metode tersebut.

    • IP =: Masukkan daftar alamat IP. Jika Anda memilih opsi ini, kebijakan hanya berlaku untuk permintaan akses dari alamat IP yang ditentukan.

    • IP ≠: Masukkan daftar alamat IP. Jika Anda memilih opsi ini, kebijakan hanya berlaku untuk permintaan akses yang bukan dari alamat IP yang ditentukan.

    • VPC =: Pilih VPC yang termasuk dalam akun saat ini atau masukkan VPC yang termasuk dalam akun lain. Jika Anda memilih opsi ini, kebijakan hanya berlaku untuk permintaan akses dari VPC yang ditentukan.

    • VPC ≠: Pilih VPC yang termasuk dalam akun saat ini atau masukkan VPC yang termasuk dalam akun lain. Jika Anda memilih opsi ini, kebijakan hanya berlaku untuk permintaan akses yang bukan dari VPC yang ditentukan.

    Saat Anda mengonfigurasi beberapa kondisi, semua kondisi harus terpenuhi (hubungan AND).

  4. Setelah memastikan konfigurasi benar, klik OK untuk menerapkan Bucket Policy.

Metode sintaksis

  1. Buka daftar Buckets dan klik bucket target.

  2. Di panel navigasi kiri, klik Permission Control > Bucket Policy.

  3. Pilih Add by Syntax, lalu klik Edit. Di editor, masukkan kebijakan otorisasi dalam format JSON.

    Contoh kebijakan: Menolak semua operasi pada example-bucket untuk pengguna 20214760404935xxxx jika permintaan akses tidak berasal dari VPC vpc-t4nlw426y44rd3iq4xxxx.

    {
        "Version": "1",
        "Statement": [
            {
                "Sid": "DenyNonVpcAccess",
                "Effect": "Deny",
                "Action": "oss:*",
                "Principal": [
                    "20214760404935xxxx"
                ],
                "Resource": [
                    "acs:oss:*:174649585760xxxx:example-bucket",
                    "acs:oss:*:174649585760xxxx:example-bucket/*"
                ],
                "Condition": {
                    "StringNotEquals": {
                        "acs:SourceVpc": "vpc-t4nlw426y44rd3iq4xxxx"
                    }
                }
            }
        ]
    }

    Kebijakan otorisasi lengkap mencakup Version dan Statement.

    • Version: Versi kebijakan akses. Nilainya tetap 1 dan tidak dapat diubah.

    • Statement: Bagian utama kebijakan. Berisi satu atau lebih aturan spesifik. Setiap aturan mendukung Sid opsional, serta mencakup Effect, Action, Principal, Resource, dan Condition.

      Elemen kebijakan

      Deskripsi

      Arti dalam contoh

      Sid (opsional)

      Statement ID. Pengenal unik yang mudah dibaca manusia untuk setiap pernyataan dalam kebijakan. Elemen ini membantu diferensiasi, pengelolaan, dan audit, serta tidak memengaruhi izin itu sendiri.

      Mengidentifikasi pernyataan penolakan sebagai DenyNonVpcAccess.

      Effect

      Efek kebijakan. Nilai yang valid adalah Allow dan Deny.

      Menolak permintaan.

      Action

      Aksi spesifik yang dilakukan pada resource. Karakter wildcard * didukung.

      Menolak semua aksi OSS (oss:*).

      Principal

      Pengguna, akun, atau peran tempat kebijakan berlaku.

      Mengatur bidang Principal ke daftar kosong (<code class="inline-code___1opEe" data-tag="code" id="396b0553f4p34">Principal:[]) sama dengan mengaturnya ke semua akun (<code class="inline-code___1opEe" data-tag="code" id="86478af1e5pzx">Principal:["*"]).

      Kebijakan hanya berlaku untuk RAM user 20214760404935xxxx.

      Resource

      Resource tempat kebijakan berlaku.

      Kebijakan berlaku untuk bucket example-bucket itu sendiri dan semua objek di dalamnya.

      Condition

      Kondisi agar kebijakan berlaku.

      Saat Anda mengonfigurasi beberapa kondisi, semua kondisi harus terpenuhi (hubungan AND).

      Kebijakan Deny ini hanya berlaku ketika VPC sumber permintaan bukan vpc-t4nlw426y44rd3iq4xxxx.

      Referensi elemen kebijakan lengkap: Sintaksis dan elemen otorisasi.

  4. Setelah memastikan kebijakan otorisasi benar, klik Save dan ikuti instruksi di layar.

Konfigurasikan kebijakan bucket vektor

Vector bucket hanya mendukung metode sintaksis untuk konfigurasi bucket policy.

  1. Buka daftar Vector Buckets dan klik vector bucket target.

  2. Di panel navigasi kiri, klik Permission Control > Bucket Policy.

  3. Klik Edit. Di editor, masukkan kebijakan otorisasi dalam format JSON.

    Contoh kebijakan: Memberikan izin baca dan tulis data vektor untuk tabel indeks indextest di vector-bucket-example kepada pengguna 20816353761158****.

    {
      "Version": "1",
      "Statement": [{
        "Effect": "Allow",
        "Action": [
          "oss:PutVectors",
          "oss:GetVectors"
        ],
        "Principal": [
          "20816353761158****"
        ],
        "Resource": [
          "acs:ossvector:*:*:vector-bucket-example/indextest"
        ]
      }]
    }

    Kebijakan otorisasi lengkap mencakup Version dan Statement.

    • Version: Versi kebijakan akses. Nilainya tetap 1 dan tidak dapat diubah.

    • Statement: Bagian utama kebijakan. Berisi satu atau lebih aturan spesifik. Setiap aturan mencakup Effect, Action, Principal, Resource, dan Condition.

      Elemen kebijakan

      Deskripsi

      Arti dalam contoh

      Effect

      Efek kebijakan. Nilai yang valid adalah Allow dan Deny.

      Mengizinkan permintaan.

      Action

      Aksi spesifik yang dilakukan pada resource. Karakter wildcard * didukung.

      Membaca dan menulis data vektor.

      Principal

      Pengguna, akun, atau peran tempat kebijakan berlaku.

      Menetapkan bidang Principal menjadi daftar kosong (<code class="inline-code___1opEe" data-init-id="396b0553f4p34" data-tag="code" id="38fd39c90a131">Principal:[]) sama dengan menetapkannya untuk semua akun (<code class="inline-code___1opEe" data-init-id="86478af1e5pzx" data-tag="code" id="da174b022cl89">Principal:["*"]).

      Kebijakan hanya berlaku untuk RAM user 20816353761158****.

      Resource

      Resource tempat kebijakan berlaku.

      Kebijakan berlaku untuk tabel indeks indextest di bucket vector-bucket-example.

      Condition

      Kondisi agar kebijakan berlaku.

      Saat Anda mengonfigurasi beberapa kondisi, semua kondisi harus terpenuhi (hubungan AND).

      Tidak ada.

      Referensi elemen kebijakan lengkap: Sintaksis dan elemen otorisasi.

  4. Setelah memastikan kebijakan otorisasi benar, klik Save dan ikuti instruksi di layar.

Mengonfigurasi kebijakan OSS-HDFS

Untuk memastikan pengguna layanan OSS-HDFS dapat mengakses direktori .dlsdata/ beserta objeknya, jangan atur operasi terotorisasi ke Deny Access saat mengonfigurasi Bucket Policy untuk bucket yang mengaktifkan OSS-HDFS. Lihat Prasyarat penggunaan OSS-HDFS.

Untuk membatasi akses ke alamat IP jaringan tertentu atau VPC, tambahkan kondisi berikut ke semua pernyataan Deny. Hal ini memastikan layanan backend OSS-HDFS dapat membaca dari dan menulis ke bucket melalui jaringan klasik.

"StringNotLike": {
    "oss:ClassicIntranet": [
        "true"
    ]
}

Skenario umum: Memberikan izin

Skenario berikut menunjukkan cara memberikan akses kepada pengguna, peran, atau semua pengguna tertentu. Masing-masing menyertakan contoh kebijakan yang dapat Anda adaptasi.

Skenario 1: Memberikan izin baca/tulis

Berikan akses baca/tulis ke bucket kepada anggota tim atau mitra. Contoh ini memberikan izin baca/tulis pada example-bucket kepada RAM user 27737962156157xxxx dan 20214760404935xxxx.

Catatan

Kebijakan ini tidak memberikan izin untuk membuat daftar bucket. RAM user tidak dapat menjelajahi halaman Buckets secara langsung. Sebagai gantinya, mereka dapat menambahkan bucket target ke My Favorite Paths > + di panel navigasi kiri.

{
    "Version":"1",
    "Statement":[
        {
            "Effect":"Allow",
            "Action":[
                "oss:GetObject",
                "oss:PutObject",
                "oss:GetObjectAcl",
                "oss:PutObjectAcl",
                "oss:AbortMultipartUpload",
                "oss:ListParts",
                "oss:RestoreObject",
                "oss:GetVodPlaylist",
                "oss:PostVodPlaylist",
                "oss:PublishRtmpStream",
                "oss:ListObjectVersions",
                "oss:GetObjectVersion",
                "oss:GetObjectVersionAcl",
                "oss:RestoreObjectVersion"
            ],
            "Principal":[
                "27737962156157xxxx",
                "20214760404935xxxx"
            ],
            "Resource":[
                "acs:oss:*:174649585760xxxx:example-bucket/*"
            ]
        },
        {
            "Effect":"Allow",
            "Action":[
                "oss:ListObjects"
            ],
            "Principal":[
                "27737962156157xxxx",
                "20214760404935xxxx"
            ],
            "Resource":[
                "acs:oss:*:174649585760xxxx:example-bucket"
            ],
            "Condition":{
                "StringLike":{
                    "oss:Prefix":[
                        "*"
                    ]
                }
            }
        }
    ]
}

Skenario 2: Memberikan izin read-only ke direktori tertentu

Berikan akses read-only ke direktori tertentu. Contoh ini memberikan izin read-only pada direktori dengan awalan hangzhou/2020 dan shanghai/2015 di example-bucket kepada RAM user 20214760404935xxxx.

Catatan

Kebijakan ini tidak memberikan izin untuk membuat daftar bucket. RAM user tidak dapat menjelajahi halaman Buckets secara langsung. Sebagai gantinya, mereka dapat menambahkan bucket target ke My Favorite Paths > + di panel navigasi kiri.

{
    "Version":"1",
    "Statement":[
        {
            "Action":[
                "oss:GetObject",
                "oss:GetObjectAcl",
                "oss:GetObjectVersion",
                "oss:GetObjectVersionAcl"
            ],
            "Effect":"Allow",
            "Principal":[
                "20214760404935xxxx"
            ],
            "Resource":[
                "acs:oss:*:174649585760xxxx:example-bucket/hangzhou/2020/*",
                "acs:oss:*:174649585760xxxx:example-bucket/shanghai/2015/*"
            ]
        },
        {
            "Action":[
                "oss:ListObjects",
                "oss:ListObjectVersions"
            ],
            "Condition":{
                "StringLike":{
                    "oss:Prefix":[
                        "hangzhou/2020/*",
                        "shanghai/2015/*"
                    ]
                }
            },
            "Effect":"Allow",
            "Principal":[
                "20214760404935xxxx"
            ],
            "Resource":[
                "acs:oss:*:174649585760xxxx:example-bucket"
            ]
        }
    ]
}

Skenario 3: Memberikan izin lihat dan daftar

Izinkan pengguna melihat informasi bucket dan membuat daftar objek. Contoh ini memberikan izin lihat dan daftar pada example-bucket kepada RAM user.

Catatan

Kebijakan ini tidak memberikan izin untuk membuat daftar bucket. RAM user tidak dapat menjelajahi halaman Buckets secara langsung. Sebagai gantinya, mereka dapat menambahkan bucket target ke My Favorite Paths > + di panel navigasi kiri.

{
    "Version":"1",
    "Statement":[
        {
            "Action":[
                "oss:Get*",
                "oss:ListObjects",
                "oss:ListObjectVersions"
            ],
            "Effect":"Allow",
            "Principal":[
                "20214760404935xxxx"
            ],
            "Resource":[
                "acs:oss:*:174649585760xxxx:example-bucket"
            ]
        }
    ]
}

Skenario 4: Memberikan izin baca ke Peran RAM

Berikan akses sementara ke objek bucket melalui Peran RAM. RAM user atau aplikasi mengasumsikan peran tersebut untuk mendapatkan kredensial sementara. Contoh ini memberikan izin baca pada semua objek di example-bucket kepada semua sesi di bawah satu Peran RAM dan sesi tertentu di bawah peran lainnya.

Catatan

Saat memberikan izin ke Peran RAM, Principal harus mengikuti format ini: arn:sts::<uid>:assumed-role/<role-name>/<session-name>. Nilai untuk <role-name> dan <session-name> harus huruf kecil semua.

{
    "Version": "1",
    "Statement": [
        {
            "Action": [
                "oss:GetObject"
            ],
            "Effect": "Allow",
            "Principal": [
                "arn:sts::10323xxxxx72056:assumed-role/role-name/session-name",
                "arn:sts::10323xxxxx72056:assumed-role/role2-name/*"
            ],
            "Resource": [
                "acs:oss:*:10323xxxxx72056:example-bucket/*"
            ]
        }
    ]
}

Skenario 5: Memberikan izin daftar ke semua pengguna

Izinkan semua pengguna membuat daftar objek tanpa mengakses isinya. Contoh ini memberikan izin daftar pada example-bucket kepada semua pengguna (*).

{
    "Version":"1",
    "Statement":[
        {
            "Action":[
                "oss:ListObjects",
                "oss:ListObjectVersions"
            ],
            "Effect":"Allow",
            "Principal":[
                "*"
            ],
            "Resource":[
                "acs:oss:*:174649585760xxxx:example-bucket"
            ]
        }
    ]
}

Skenario 6: Memberikan izin untuk membuat bucketspaces dan mendaftar objek di AgenticBucket

Gunakan Bucket Policy untuk kontrol detail halus saat memberikan izin kepada pengguna untuk hanya membuat bucketspaces (bukan bucket reguler) di AgenticBucket tertentu. Kebijakan berikut berisi dua pernyataan:

  • Pernyataan 1 (Membatasi operasi ke AgenticBucket tertentu): Menggunakan kunci kondisi oss:AgenticBucketName untuk membatasi izin oss:PutBucket ke AgenticBucket tertentu. Hal ini memungkinkan pengguna hanya membuat bucketspaces di AgenticBucket tersebut, bukan bucket reguler. Ini juga memberikan izin operasi umum lainnya untuk objek, unggah multi-bagian, dan pendaftaran bucketspaces.

  • Pernyataan 2 (Membatasi operasi daftar ke bucketspaces): Mencocokkan pola *-bs-apsr di bidang Resource untuk membatasi operasi oss:ListObjects hanya ke bucketspaces, mencegah operasi daftar pada bucket reguler. Jika Anda mengubah Action menjadi oss:PutBucket, kebijakan membatasi pengguna hanya untuk membuat bucketspaces alih-alih bucket reguler.

Konfigurasi ini memungkinkan diferensiasi detail halus antara izin pembuatan bucketspaces dalam skenario AgenticBucket dan izin pembuatan bucket reguler.

{
    "Version": "1",
    "Statement": [
        {
            "Action": [
                "oss:GetObject",
                "oss:DeleteObject",
                "oss:PutObject",
                "oss:AbortMultipartUpload",
                "oss:ListMultipartUploads",
                "oss:ListObjects",
                "oss:ListParts",
                "oss:PutBucket",
                "oss:ListBucketSpaces"
            ],
            "Condition": {
                "StringLike": {
                    "oss:AgenticBucketName": [
                        "sandbox-test-189xxxxxxxxxxxxx-cn-hangzhou-ab-apsr"
                    ]
                }
            },
            "Effect": "Allow",
            "Resource": [
                "acs:oss:::"
            ]
        },
        {
            "Action": [
                "oss:ListObjects"
            ],
            "Effect": "Allow",
            "Resource": [
                "acs:oss:::-bs-apsr"
            ]
        }
    ]
}

Skenario umum: Membatasi akses jaringan

Skenario berikut membatasi akses bucket berdasarkan sumber jaringan (IP publik atau VPC) menggunakan kunci kondisi acs:SourceIp dan acs:SourceVpc. Tabel di bawah ini merangkum pendekatan umum.

Sumber akses

Pendekatan kebijakan

Skenario

VPC apa pun

Tolak permintaan di mana acs:SourceVpc tidak dimulai dengan vpc-*.

Skenario 1: Membatasi akses jaringan publik

VPC tertentu

Tolak permintaan di mana acs:SourceVpc tidak sama dengan ID VPC yang ditentukan.

Skenario 2: Membatasi akses ke VPC tertentu

IP publik tertentu

Pernyataan 1 menolak permintaan jaringan publik dari alamat IP yang tidak ditentukan; Pernyataan 2 menolak semua permintaan VPC.

Skenario 3: Membatasi akses ke alamat IP publik tertentu

Rentang IP tertentu dalam VPC tertentu

Pernyataan 1 menolak permintaan dari VPC yang tidak ditentukan; Pernyataan 2 menolak permintaan dari rentang IP yang tidak ditentukan dalam VPC yang ditentukan.

Skenario 4: Membatasi akses ke rentang IP dalam VPC

IP publik tertentu atau VPC tertentu

Pernyataan 1 menolak permintaan jaringan publik dari alamat IP yang tidak ditentukan; Pernyataan 2 menolak permintaan VPC dari VPC yang tidak ditentukan.

Skenario 5: Membatasi akses ke IP publik atau VPC

Semua kecuali IP tertentu (blacklist)

Tolak permintaan dari IP yang ditentukan, dan gunakan wildcard * untuk SourceVpc guna memenuhi batasan.

Skenario 6: Menetapkan blacklist IP

Jaringan klasik

Izinkan akses jaringan klasik.

Skenario 7: Mengonfigurasi akses jaringan klasik

Skenario 1: Membatasi akses jaringan publik

Blokir semua akses jaringan publik ke bucket dengan menambahkan pernyataan deny menggunakan kunci kondisi acs:SourceVpc. Pernyataan ini menolak permintaan yang tidak berasal dari VPC. Contoh berikut menolak semua akses non-VPC ke example-bucket.

{
  "Version": "1",
  "Statement": [
    {
      "Effect": "Deny",
      "Action": "oss:*",
      "Principal": [
        "*"
      ],
      "Resource": [
        "acs:oss:*:174649585760xxxx:example-bucket/*",
        "acs:oss:*:174649585760xxxx:example-bucket"
      ],
      "Condition": {
        "StringNotLike": {
          "acs:SourceVpc": [
            "vpc-*"
          ]
        }
      }
    }
  ]
}

Skenario 2: Membatasi akses ke VPC tertentu

Batasi akses bucket ke VPC tertentu menggunakan kunci kondisi acs:SourceVpc. Pernyataan ini memblokir permintaan dari VPC lain atau jaringan publik. Contoh berikut menolak semua pengguna di luar VPC t4nlw426y44rd3iq4xxxx untuk membaca objek di example-bucket.

Catatan
  • Karena Pihak yang berwenang dalam pernyataan deny berikut adalah karakter wildcard (*) dan kondisi disertakan, pernyataan deny berlaku untuk semua pengguna, termasuk Pemilik bucket.

  • Pernyataan deny berikut hanya membatasi akses dan tidak memberikan izin apa pun. Jika Pihak yang berwenang belum diberikan izin, Anda dapat menambahkan pernyataan allow untuk memberikan izin yang diperlukan.

{
    "Version":"1",
    "Statement":[
        {
            "Effect":"Deny",
            "Action":[
                "oss:GetObject"
            ],
            "Principal":[
                "*"
            ],
            "Resource":[
                "acs:oss:*:174649585760xxxx:example-bucket/*"
            ],
            "Condition":{
                "StringNotEquals":{
                    "acs:SourceVpc":[
                        "vpc-t4nlw426y44rd3iq4xxxx"
                    ]
                }
            }
        }
    ]
}

Skenario 3: Membatasi akses ke alamat IP publik tertentu

Untuk membatasi akses bucket ke alamat IP publik tertentu, buat dua pernyataan deny:

  • Pernyataan 1 (Menolak permintaan jaringan publik dari alamat IP yang tidak ditentukan): Pernyataan ini menggunakan StringNotLike: {"acs:SourceVpc": "vpc-*"} untuk mengidentifikasi permintaan jaringan publik (nilai acs:SourceVpc untuk permintaan jaringan publik tidak dimulai dengan vpc-). Kemudian menggunakan NotIpAddress: {"acs:SourceIp": "..."} untuk menolak permintaan yang bukan dari alamat IP yang ditentukan. Aksi deny dipicu ketika kedua kondisi terpenuhi.

  • Pernyataan 2 (Menolak semua permintaan VPC): Pernyataan ini menggunakan StringLike: {"acs:SourceVpc": "vpc-*"} untuk mencocokkan dan menolak semua permintaan dari VPC apa pun, karena tujuannya adalah mengizinkan akses hanya dari alamat IP publik yang ditentukan.

Permintaan ditolak jika cocok dengan salah satu pernyataan. Contoh berikut menolak akses baca ke example-bucket untuk semua pengguna kecuali yang berasal dari IP publik 203.0.113.5.

Catatan
  • Karena Pihak yang berwenang dalam pernyataan deny berikut adalah karakter wildcard (*) dan kondisi disertakan, pernyataan deny berlaku untuk semua pengguna, termasuk Pemilik bucket.

  • Pernyataan deny berikut hanya membatasi akses dan tidak memberikan izin apa pun. Jika Pihak yang berwenang belum diberikan izin, Anda dapat menambahkan pernyataan allow untuk memberikan izin yang diperlukan.

{
  "Version": "1",
  "Statement": [{
    "Effect": "Deny",
    "Action": [
      "oss:GetObject"
    ],
    "Principal": [
      "*"
    ],
    "Resource": [
      "acs:oss:*:174649585760xxxx:example-bucket/*"
    ],
    "Condition": {
      "NotIpAddress": {
        "acs:SourceIp": [
          "203.0.113.5"
        ]
      },
      "StringNotLike": {
        "acs:SourceVpc": [
          "vpc-*"
        ]
      }
    }
  },
    {
      "Effect": "Deny",
      "Action": [
        "oss:GetObject"
      ],
      "Principal": [
        "*"
      ],
      "Resource": [
        "acs:oss:*:174649585760xxxx:example-bucket/*"
      ],
      "Condition": {
        "StringLike": {
          "acs:SourceVpc": [
            "vpc-*"
          ]
        }
      }
    }
  ]
}

Skenario 4: Membatasi akses ke rentang IP dalam VPC

Untuk membatasi akses bucket ke rentang IP tertentu dalam VPC tertentu, buat dua pernyataan deny:

  • Pernyataan 1 (Menolak semua permintaan dari luar VPC yang ditentukan): Pernyataan ini menggunakan StringNotEquals: {"acs:SourceVpc": "..."} untuk menolak permintaan dari VPC lain dan jaringan publik.

  • Pernyataan 2 (Menolak permintaan dari luar rentang IP yang ditentukan dalam VPC): Pernyataan ini menggunakan StringEquals: {"acs:SourceVpc": "..."} untuk mencocokkan permintaan dari VPC yang ditentukan, lalu menggunakan NotIpAddress: {"acs:SourceIp": "..."} untuk menolak permintaan dari luar rentang alamat IP yang ditentukan. Aksi deny dipicu ketika kedua kondisi terpenuhi.

Permintaan ditolak jika cocok dengan salah satu pernyataan. Contoh berikut menolak akses baca ke example-bucket untuk semua pengguna kecuali yang berasal dari rentang 192.168.0.0/16 dalam VPC t4nlw426y44rd3iq4xxxx.

Catatan
  • Karena Pihak yang berwenang dalam pernyataan deny berikut adalah karakter wildcard (*) dan kondisi disertakan, pernyataan deny berlaku untuk semua pengguna, termasuk Pemilik bucket.

  • Pernyataan deny berikut hanya membatasi akses dan tidak memberikan izin apa pun. Jika Pihak yang berwenang belum diberikan izin, Anda dapat menambahkan pernyataan allow untuk memberikan izin yang diperlukan.

{
    "Version":"1",
    "Statement":[
        {
            "Effect":"Deny",
            "Action":[
                "oss:GetObject"
            ],
            "Principal":[
                "*"
            ],
            "Resource":[
                "acs:oss:*:174649585760xxxx:example-bucket/*"
            ],
            "Condition":{
                "StringNotEquals":{
                    "acs:SourceVpc":[
                        "vpc-t4nlw426y44rd3iq4xxxx"
                    ]
                }
            }
        },
        {
            "Effect":"Deny",
            "Action":[
                "oss:GetObject"
            ],
            "Principal":[
                "*"
            ],
            "Resource":[
                "acs:oss:*:174649585760xxxx:example-bucket/*"
            ],
            "Condition":{
                "StringEquals":{
                    "acs:SourceVpc":[
                        "vpc-t4nlw426y44rd3iq4xxxx"
                    ]
                },
                "NotIpAddress":{
                    "acs:SourceIp":[
                        "192.168.0.0/16"
                    ]
                }
            }
        }
    ]
}

Skenario 5: Membatasi akses ke IP publik atau VPC

Untuk membatasi akses bucket ke IP publik tertentu atau VPC tertentu, buat dua pernyataan deny:

  • Pernyataan 1 (Untuk permintaan jaringan publik, tolak IP yang tidak ditentukan): Pernyataan ini menggunakan StringNotLike: {"acs:SourceVpc": "vpc-*"} untuk mengidentifikasi permintaan jaringan publik, lalu menggunakan NotIpAddress: {"acs:SourceIp": "..."} untuk menolak permintaan dari alamat IP publik yang tidak ditentukan. Aksi deny dipicu ketika kedua kondisi terpenuhi. Permintaan VPC tidak cocok dengan pernyataan ini karena nilai acs:SourceVpc-nya dimulai dengan vpc-.

  • Pernyataan 2 (Untuk permintaan VPC, tolak VPC yang tidak ditentukan): Pernyataan ini menggunakan StringLike: {"acs:SourceVpc": "vpc-*"} untuk mengidentifikasi permintaan VPC, lalu menggunakan StringNotEquals: {"acs:SourceVpc": "..."} untuk menolak permintaan dari VPC yang tidak ditentukan. Aksi deny dipicu ketika kedua kondisi terpenuhi. Permintaan jaringan publik tidak cocok dengan pernyataan ini karena nilai acs:SourceVpc-nya tidak dimulai dengan vpc-.

Permintaan ditolak jika cocok dengan salah satu pernyataan. Contoh berikut menolak akses baca ke example-bucket untuk semua pengguna kecuali yang berasal dari IP publik 203.0.113.5 atau VPC t4nlw426y44rd3iq4xxxx.

Catatan
  • Karena Pihak yang berwenang dalam pernyataan deny berikut adalah karakter wildcard (*) dan kondisi disertakan, pernyataan deny berlaku untuk semua pengguna, termasuk Pemilik bucket.

  • Pernyataan deny berikut hanya membatasi akses dan tidak memberikan izin apa pun. Jika Pihak yang berwenang belum diberikan izin, Anda dapat menambahkan pernyataan allow untuk memberikan izin yang diperlukan.

{
    "Version":"1",
    "Statement":[
        {
            "Effect":"Deny",
            "Action":[
                "oss:GetObject"
            ],
            "Principal":[
                "*"
            ],
            "Resource":[
                "acs:oss:*:174649585760xxxx:example-bucket/*"
            ],
            "Condition":{
                "StringNotLike":{
                    "acs:SourceVpc":[
                        "vpc-*"
                    ]
                },
                "NotIpAddress":{
                    "acs:SourceIp":[
                        "203.0.113.5"
                    ]
                }
            }
        },
        {
            "Effect":"Deny",
            "Action":[
                "oss:GetObject"
            ],
            "Principal":[
                "*"
            ],
            "Resource":[
                "acs:oss:*:174649585760xxxx:example-bucket/*"
            ],
            "Condition":{
                "StringLike":{
                    "acs:SourceVpc":[
                        "vpc-*"
                    ]
                },
                "StringNotEquals":{
                    "acs:SourceVpc":[
                        "vpc-t4nlw426y44rd3iq4xxxx"
                    ]
                }
            }
        }
    ]
}

Skenario 6: Menetapkan blacklist IP

Blokir akses dari alamat IP atau rentang tertentu dengan menambahkan pernyataan deny ke bucket policy.

Kondisi StringLike: {"acs:SourceVpc": "*"} menggunakan wildcard untuk mencocokkan semua nilai dan tidak membatasi cakupan VPC. Kondisi ini ada hanya untuk memenuhi batasan bahwa acs:SourceIp memerlukan kondisi acs:SourceVpc yang sesuai.

Catatan
  • Karena Pihak yang berwenang dalam pernyataan deny berikut adalah karakter wildcard (*) dan kondisi disertakan, pernyataan deny berlaku untuk semua pengguna, termasuk Pemilik bucket.

  • Anda dapat mengonfigurasi beberapa alamat IP dan rentang alamat IP. Pisahkan dengan koma.

{
  "Version": "1",
  "Statement": [{
    "Effect": "Deny",
    "Action": "oss:*",
    "Principal": [
      "*"
    ],
    "Resource": [
      "acs:oss:*:174649585760xxxx:example-bucket/*",
      "acs:oss:*:174649585760xxxx:example-bucket"
    ],
    "Condition": {
      "IpAddress": {
        "acs:SourceIp": [
          "101.***.***.100"
        ]
      },
      "StringLike": {
        "acs:SourceVpc": [
          "*"
        ]
      }
    }
  }]
}

Skenario 7: Mengonfigurasi akses jaringan klasik

Kunci kondisi oss:ClassicIntranet menunjukkan apakah permintaan berasal dari jaringan klasik OSS. Nilai yang valid adalah true dan false. Beberapa layanan backend OSS (seperti Pengiriman log dan Daftar Bucket) mengakses bucket melalui jaringan klasik. Gunakan kondisi berikut untuk mencocokkan permintaan dari jaringan klasik.

"Condition": {
    "StringEquals": {
        "oss:ClassicIntranet": [
            "true"
        ]
    }
}

Saat mengonfigurasi pembatasan akses jaringan (kebijakan Deny), untuk mengizinkan layanan backend di atas, tambahkan kondisi berikut ke blok Condition pada pernyataan Deny guna mengecualikan permintaan jaringan klasik dan menghindari pemblokiran yang tidak diinginkan.

"StringNotEquals": {
    "oss:ClassicIntranet": [
        "true"
    ]
}

Skenario umum: Kontrol keamanan

Skenario berikut memberlakukan kontrol keamanan: pembatasan kredensial, pencegahan akses publik, dan batasan kebijakan retensi.

Skenario 1: Memerlukan kredensial temporary untuk panggilan API

Wajibkan kredensial akses sementara untuk panggilan API. Kebijakan ini menggunakan kunci kondisi acs:AccessId untuk memblokir akses dari kredensial jangka panjang (Akun Alibaba Cloud atau kunci akses RAM user). Contoh berikut menolak semua pengguna tanpa kredensial sementara (dimulai dengan TMP. atau STS.) untuk melihat example-bucket dan membuat daftar objeknya.

{
    "Version": "1",
    "Statement": [
        {            
            "Effect": "Deny",
            "Action":[
                "oss:Get*",
                "oss:ListObjects",
                "oss:ListObjectVersions"
            ],
            "Principal":[
                "*"
            ],
            "Resource":[
                "acs:oss:*:174649585760xxxx:example-bucket/*"
            ],
            "Condition": {
                "StringNotLike": {
                    "acs:AccessId": [
                        "TMP.*",
                        "STS.*"
                 ]
                }
            }
        }
    ]
}

Skenario 2: Melarang ACL publik

Cegah pengaturan ACL bucket dan objek menjadi publik. Buat dua pernyataan deny:

  • Gunakan kunci kondisi oss:x-oss-acl untuk membuat pernyataan deny yang mencegah ACL bucket diatur ke izin apa pun selain private. Upaya apa pun untuk mengatur ACL baca-publik atau baca-tulis publik akan memicu aturan deny.

  • Gunakan kunci kondisi oss:x-oss-object-acl untuk membuat pernyataan deny yang mencegah ACL objek diatur ke izin apa pun selain private dan default.

Permintaan ditolak jika cocok dengan salah satu pernyataan. Contoh berikut menolak operasi ACL publik pada example-bucket.

{
    "Version": "1",
    "Statement": [
        {            
            "Effect": "Deny",
            "Action": [
                "oss:PutBucketAcl"
            ],
            "Principal": [
                "*"
            ],
            "Resource": [
                "acs:oss:*:*:example-bucket"
            ],
            "Condition": {
                "StringNotEquals": {
                    "oss:x-oss-acl": "private"
                }
            }
        },
        {            
            "Effect": "Deny",
            "Action": [
                "oss:PutObjectAcl"
            ],
            "Principal": [
                "*"
            ],
            "Resource": [
                "acs:oss:*:*:example-bucket/*"
            ],
            "Condition": {
                "StringNotEquals": {
                    "oss:x-oss-object-acl": [
                        "private",
                        "default"
                    ]
                }
            }
        }
    ]
}

Skenario 3: Membatasi periode retensi ObjectWorm

Setelah mengaktifkan kebijakan retensi tingkat objek (ObjectWorm) untuk bucket, gunakan bucket policy untuk membatasi periode retensi maksimum. Contoh berikut membatasi retensi hingga 30 hari. Permintaan PutObjectRetention apa pun yang melebihi 30 hari akan ditolak.

{
  "Version": "1",
  "Statement": [
    {
      "Effect": "Deny",
      "Action": [
        "oss:PutObjectRetention"
      ],
      "Principal": [
        "*"
      ],
      "Resource": [
        "acs:oss:*:174649585760xxxx:example-bucket/*"
      ],
      "Condition": {
        "NumericGreaterThan": {
          "oss:object-remaining-retention-days": "30"
        }
      }
    }
  ]
}
Catatan
  • oss:object-remaining-retention-days adalah kunci kondisi untuk kebijakan ObjectWorm. Ini mewakili jumlah hari retensi tersisa yang ditentukan dalam permintaan.

  • Karena Pihak yang berwenang dalam kebijakan ini adalah karakter wildcard (*) dan kondisi disertakan, kebijakan berlaku untuk semua pengguna, termasuk Pemilik bucket.

Pengembangan dan integrasi tool

Selain Konsol, Anda dapat mengonfigurasi bucket policy menggunakan tool grafis, tool CLI, dan SDK.

  • Menggunakan tool grafis ossbrowser

    ossbrowser menyediakan pengalaman visual mirip konsol untuk operasi kebijakan tingkat bucket. Instal dan masuk ke ossbrowser, lalu konfigurasikan kebijakan.

  • Menggunakan tool baris perintah ossutil

    Tetapkan kebijakan otorisasi menggunakan perintah put-bucket-policy.

    Catatan

    Untuk menetapkan kebijakan otorisasi bagi vector bucket, jalankan perintah ossutil vectors-api put-bucket-policy.

  • Menggunakan SDK

    Konfigurasikan kebijakan menggunakan SDK seperti Java SDK, Python SDK, Go SDK, dan Node.js SDK. Referensi SDK mencakup semua bahasa yang didukung.

  • Memanggil API secara langsung

    Panggil operasi PutBucketPolicy untuk menetapkan kebijakan otorisasi bucket.

Kuota dan batasan

  • Ukuran kebijakan: Sebuah bucket dapat memiliki beberapa pernyataan Bucket Policy, tetapi ukuran total semua kebijakan tidak boleh melebihi 16 KB.

  • Panjang bidang: Panjang setiap bidang dalam Bucket Policy tidak boleh melebihi 4.095 byte.

Dokumen terkait