All Products
Search
Document Center

Object Storage Service:Bucket Policy

Last Updated:Jul 19, 2026

Bucket policy adalah kebijakan otorisasi berbasis resource yang dilampirkan ke bucket. Gunakan bucket policy untuk memberikan akses lintas akun, mengaktifkan akses anonim, atau membatasi akses berdasarkan alamat IP atau VPC.

Cara kerja

Bucket policy menggunakan model berbasis resource: dilampirkan ke bucket dan menentukan principal mana yang dapat melakukan aksi apa pada resource mana di bawah kondisi tertentu.

Saat permintaan masuk, OSS mengevaluasi semua kebijakan yang relevan, termasuk bucket policy dan kebijakan RAM. Evaluasi mengikuti prinsip deny-first: setiap penolakan eksplisit (Deny) 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 principal diatur ke karakter wildcard (*) dan kebijakan tidak mencakup kondisi, kebijakan tersebut hanya berlaku untuk pengguna selain pemilik bucket.

  • Jika principal diatur ke karakter wildcard (*) dan kebijakan mencakup 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 membuka data Anda kepada pengguna anonim.

Jika beberapa pernyataan berlaku untuk pengguna yang sama, izin efektif merupakan gabungan (union) dari semua pernyataan tersebut, mengikuti prinsip deny-first.

Penting
  • Kunci kondisi acs:SourceIp hanya mencocokkan alamat IP sumber dari 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 diizinkan, sehingga menimbulkan risiko akses tidak sah. Oleh karena itu, saat mengonfigurasi Bucket Policy, jika Anda menentukan acs:SourceIp, Anda juga harus menentukan acs:SourceVpc untuk secara eksplisit mengidentifikasi sumber jaringan permintaan.

  • 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.

Konfigurasi bucket policy

OSS menyediakan dua metode konfigurasi: grafis dan sintaks.

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

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

Metode grafis

  1. Buka daftar Buckets dan klik bucket target.

  2. Di panel navigasi sebelah 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 principal yang akan diberi izin.

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

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

      Akun yang sedang login harus merupakan Akun Alibaba Cloud (akun root) atau pengguna RAM dengan izin manajemen bucket dan izin ListUsers di RAM. Jika tidak, daftar pengguna RAM tidak akan terlihat.

    • Other Accounts: Masukkan UID akun lain atau pengguna RAM yang ingin diotorisasi, atau pengguna sementara 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 umum operasi yang diizinkan. 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)

    Tentukan kondisi di mana kebijakan berlaku.

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

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

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

    • VPC =: Pilih VPC yang termasuk dalam akun saat ini atau masukkan VPC milik akun lain. Jika 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 milik akun lain. Jika memilih opsi ini, kebijakan hanya berlaku untuk permintaan akses yang bukan berasal dari VPC yang ditentukan.

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

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

Metode sintaks

  1. Buka daftar Buckets dan klik bucket target.

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

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

    Contoh kebijakan: Tolak pengguna 20214760404935xxxx dari semua operasi pada example-bucket 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: Badan utama kebijakan. Berisi satu atau lebih aturan spesifik. Setiap aturan mendukung Sid opsional, serta mencakup Effect, Action, Principal, Resource, dan Condition.

      Elemen kebijakan

      Deskripsi

      Makna dalam contoh

      Sid (opsional)

      ID Pernyataan. Pengenal unik yang mudah dibaca untuk setiap pernyataan dalam kebijakan. Membantu diferensiasi, manajemen, 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. Mendukung karakter wildcard *.

      Menolak semua aksi OSS (oss:*).

      Principal

      Pengguna, akun, atau peran yang menjadi sasaran kebijakan.

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

      Kebijakan hanya berlaku untuk pengguna RAM 20214760404935xxxx.

      Resource

      Resource yang menjadi sasaran kebijakan.

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

      Condition

      Kondisi di mana kebijakan berlaku.

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

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

      Referensi lengkap elemen kebijakan: Sintaks dan elemen otorisasi.

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

Konfigurasi bucket policy vektor

Bucket vektor hanya mendukung metode sintaks untuk konfigurasi bucket policy.

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

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

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

    Contoh kebijakan: Berikan pengguna 20816353761158**** izin untuk membaca dan menulis data vektor pada tabel indeks indextest di vector-bucket-example.

    {
      "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: Badan utama kebijakan. Berisi satu atau lebih aturan spesifik. Setiap aturan mencakup Effect, Action, Principal, Resource, dan Condition.

      Elemen kebijakan

      Deskripsi

      Makna dalam contoh

      Effect

      Efek kebijakan. Nilai yang valid adalah Allow dan Deny.

      Mengizinkan permintaan.

      Action

      Aksi spesifik yang dilakukan pada resource. Mendukung karakter wildcard *.

      Membaca dan menulis data vektor.

      Principal

      Pengguna, akun, atau peran yang menjadi sasaran kebijakan.

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

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

      Resource

      Resource yang menjadi sasaran kebijakan.

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

      Condition

      Kondisi di mana kebijakan berlaku.

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

      Tidak ada.

      Referensi lengkap elemen kebijakan: Sintaks dan elemen otorisasi.

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

Konfigurasi kebijakan OSS-HDFS

Untuk memastikan pengguna layanan OSS-HDFS dapat mengakses direktori .dlsdata/ dan objek-objeknya, jangan mengatur operasi yang diizinkan ke Deny Access saat mengonfigurasi Bucket Policy untuk bucket yang diaktifkan OSS-HDFS. 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 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. Setiap skenario mencakup contoh kebijakan yang dapat Anda sesuaikan.

Skenario 1: Memberikan izin baca/tulis

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

Catatan

Kebijakan ini tidak memberikan izin untuk melihat daftar bucket. Pengguna RAM tidak dapat menjelajahi halaman Buckets secara langsung. Sebagai gantinya, mereka dapat menambahkan bucket target ke My Favorite Paths > + di panel navigasi sebelah 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 baca-saja ke direktori tertentu

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

Catatan

Kebijakan ini tidak memberikan izin untuk melihat daftar bucket. Pengguna RAM tidak dapat menjelajahi halaman Buckets secara langsung. Sebagai gantinya, mereka dapat menambahkan bucket target ke My Favorite Paths > + di panel navigasi sebelah 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 mendaftar objek. Contoh ini memberikan izin lihat dan daftar kepada pengguna RAM pada example-bucket.

Catatan

Kebijakan ini tidak memberikan izin untuk melihat daftar bucket. Pengguna RAM tidak dapat menjelajahi halaman Buckets secara langsung. Sebagai gantinya, mereka dapat menambahkan bucket target ke My Favorite Paths > + di panel navigasi sebelah 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. Pengguna RAM 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 lain.

Catatan

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

{
    "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 kepada semua pengguna

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

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

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 merangkum pendekatan umum.

Access Source

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 dari membaca objek di example-bucket.

Catatan
  • Karena principal dalam pernyataan deny berikut adalah karakter wildcard (*) dan mencakup kondisi, pernyataan deny berlaku untuk semua pengguna, termasuk pemilik bucket.

  • Pernyataan deny berikut hanya membatasi akses dan tidak memberikan izin apa pun. Jika principal belum diberi 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 (Tolak 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-). Lalu menggunakan NotIpAddress: {"acs:SourceIp": "..."} untuk menolak permintaan yang bukan berasal dari alamat IP yang ditentukan. Aksi deny dipicu saat kedua kondisi terpenuhi.

  • Pernyataan 2 (Tolak semua permintaan VPC): Pernyataan ini menggunakan StringLike: {"acs:SourceVpc": "vpc-*"} untuk mencocokkan dan menolak semua permintaan dari VPC mana pun, karena tujuannya adalah hanya mengizinkan akses 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 principal dalam pernyataan deny berikut adalah karakter wildcard (*) dan mencakup kondisi, pernyataan deny berlaku untuk semua pengguna, termasuk pemilik bucket.

  • Pernyataan deny berikut hanya membatasi akses dan tidak memberikan izin apa pun. Jika principal belum diberi 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 (Tolak semua permintaan dari luar VPC yang ditentukan): Pernyataan ini menggunakan StringNotEquals: {"acs:SourceVpc": "..."} untuk menolak permintaan dari VPC lain dan jaringan publik.

  • Pernyataan 2 (Tolak 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 saat 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 principal dalam pernyataan deny berikut adalah karakter wildcard (*) dan mencakup kondisi, pernyataan deny berlaku untuk semua pengguna, termasuk pemilik bucket.

  • Pernyataan deny berikut hanya membatasi akses dan tidak memberikan izin apa pun. Jika principal belum diberi 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 saat 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 saat 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 principal dalam pernyataan deny berikut adalah karakter wildcard (*) dan mencakup kondisi, pernyataan deny berlaku untuk semua pengguna, termasuk pemilik bucket.

  • Pernyataan deny berikut hanya membatasi akses dan tidak memberikan izin apa pun. Jika principal belum diberi 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 IP 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 hanya ada untuk memenuhi batasan bahwa acs:SourceIp memerlukan kondisi acs:SourceVpc yang sesuai.

Catatan
  • Karena principal dalam pernyataan deny berikut adalah karakter wildcard (*) dan mencakup kondisi, 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 log delivery dan bucket inventory) 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 pernyataan Deny guna mengecualikan permintaan jaringan klasik dan menghindari pemblokiran yang tidak disengaja.

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

Skenario umum: Kontrol keamanan

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

Skenario 1: Mengharuskan kredensial sementara untuk panggilan API

Mengharuskan 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 pengguna RAM). Contoh berikut menolak semua pengguna tanpa kredensial sementara (dimulai dengan TMP. atau STS.) dari melihat example-bucket dan mendaftar 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 ACL bucket dan objek diatur ke 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. Setiap upaya mengatur ACL public-read atau public-read-write 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. Setiap permintaan PutObjectRetention 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 merepresentasikan jumlah hari retensi yang tersisa yang ditentukan dalam permintaan.

  • Karena principal dalam kebijakan ini adalah karakter wildcard (*) dan mencakup kondisi, kebijakan berlaku untuk semua pengguna, termasuk pemilik bucket.

Integrasi pengembangan dan tool

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

  • Gunakan tool grafis ossbrowser

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

  • Gunakan tool baris perintah ossutil

    Tetapkan kebijakan otorisasi menggunakan perintah put-bucket-policy.

    Catatan

    Untuk menetapkan kebijakan otorisasi untuk bucket vektor, jalankan perintah ossutil vectors-api put-bucket-policy.

  • Gunakan SDK

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

  • Panggil API secara langsung

    Panggil operasi PutBucketPolicy untuk menetapkan kebijakan otorisasi bucket.

Kuota dan batasan

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

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

Dokumen terkait