All Products
Search
Document Center

Object Storage Service:Bucket Policy

Last Updated:May 14, 2026

Bucket Policy adalah kebijakan otorisasi yang dilampirkan pada sebuah bucket. Anda dapat menggunakan Bucket Policy untuk memberikan otorisasi kepada akun Alibaba Cloud lain, pengguna RAM, atau pengguna anonim agar dapat mengakses bucket tersebut. Hal ini memungkinkan penerapan otorisasi cross-account, kontrol akses anonim, serta pembatasan akses berdasarkan alamat IP atau VPC.

Cara kerja

Bucket Policy menggunakan model otorisasi berbasis resource. Kebijakan ini langsung dilampirkan pada bucket dan mendefinisikan principal mana yang dapat melakukan tindakan tertentu terhadap resource dalam kondisi spesifik.

Ketika pengguna mengirim permintaan akses, OSS mengevaluasi semua kebijakan yang relevan, termasuk Bucket Policy dan Kebijakan RAM. Evaluasi izin mengikuti prinsip deny-first: aturan Deny eksplisit segera memblokir permintaan dan memiliki prioritas lebih tinggi daripada semua aturan Allow. Jika tidak ada aturan Deny maupun Allow, permintaan secara default ditolak.

Bucket Policy memiliki aturan khusus untuk pemilik bucket:

  • Jika principal diatur ke karakter wildcard (*) dan kebijakan tidak mencakup kondisi, maka kebijakan tersebut berlaku hanya untuk pengguna selain pemilik bucket.

  • Jika principal diatur ke karakter wildcard (*) dan kebijakan mencakup kondisi, maka kebijakan tersebut berlaku untuk semua pengguna, termasuk pemilik bucket dan pengguna anonim. Aturan deny juga berlaku untuk pemilik bucket, yang dapat menyebabkan seluruh bucket menjadi tidak dapat diakses. Aturan allow juga memberikan akses kepada pengguna anonim, yang berpotensi membocorkan data Anda.

Jika Anda mengonfigurasi beberapa pernyataan Bucket Policy untuk pengguna yang sama, izin pengguna tersebut merupakan gabungan (union) dari semua pernyataan tersebut, dengan tetap 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 akan 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 tersebut.

  • Pembatasan 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 pembatasan ini.

Konfigurasi kebijakan bucket

OSS menyediakan dua metode untuk mengonfigurasi kebijakan sesuai skenario berbeda: metode grafis dan metode sintaks.

  • Metode grafis: Menyediakan pengalaman berbasis formulir yang intuitif untuk skenario otorisasi umum, sehingga menyederhanakan konfigurasi.

  • Metode sintaks: Menggunakan format JSON untuk menulis kebijakan lengkap. Metode ini mendukung semua fitur lanjutan dan kombinasi kondisi kompleks, memberikan fleksibilitas konfigurasi maksimal.

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, maka Resource Paths diatur menjadi bucket-name/*.

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

    Authorized User

    Tentukan principal yang akan diberikan 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 (juga dikenal sebagai akun root) atau pengguna RAM yang memiliki izin manajemen atas bucket tersebut dan izin ListUsers di konsol RAM. Jika tidak, Anda tidak dapat melihat daftar pengguna RAM untuk akun saat ini.

    • Other Accounts: Masukkan UID akun atau pengguna RAM lain yang ingin diberi otorisasi, atau pengguna temporary dengan kredensial yang diawali dengan arn:sts, seperti arn:sts::1798************:assumed-role/role-name/session-name. Anda dapat memberikan otorisasi kepada beberapa pengguna. Masukkan satu pengguna per baris.

      Jika izin diberikan kepada peran RAM, peran tersebut tidak dapat digunakan untuk mengakses resource yang diotorisasi dari konsol OSS. Anda harus mengakses resource tersebut menggunakan tool baris perintah seperti ossutil, SDK, atau API.

    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 milik 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 milik 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 Anda mengonfigurasi beberapa kondisi, semua kondisi harus terpenuhi (relasi 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": [
            {
                "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 beberapa 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.

      Menolak permintaan.

      Action

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

      Menolak semua tindakan OSS (oss:*).

      Principal

      Pengguna, akun, atau peran yang dikenai kebijakan.

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

      Kebijakan hanya berlaku untuk pengguna RAM 20214760404935xxxx.

      Resource

      Resource yang dikenai kebijakan.

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

      Condition

      Kondisi di mana kebijakan berlaku.

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

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

      Untuk daftar lengkap elemen kebijakan, lihat Sintaks dan elemen otorisasi.

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

Konfigurasikan bucket policy vektor

Bucket vektor saat ini hanya mendukung konfigurasi Bucket Policy menggunakan metode sintaks.

  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 izin kepada pengguna 20816353761158**** 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 beberapa 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

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

      Membaca dan menulis data vektor.

      Principal

      Pengguna, akun, atau peran yang dikenai kebijakan.

      Menyetel bidang Principal ke daftar kosong (<code class="inline-code___1opEe" data-init-id="396b0553f4p34" data-tag="code" id="38fd39c90a131">Principal:[]) identik dengan menyetelnya 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 dikenai kebijakan.

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

      Condition

      Kondisi di mana kebijakan berlaku.

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

      Tidak ada.

      Untuk daftar lengkap elemen kebijakan, lihat Sintaks dan elemen otorisasi.

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

Konfigurasikan 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. Untuk informasi lebih lanjut, lihat Prasyarat penggunaan OSS-HDFS.

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

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

Skenario umum: Pemberian izin

Skenario berikut menunjukkan cara menggunakan Bucket Policy untuk memberikan izin akses kepada pengguna, peran, atau semua pengguna tertentu. Setiap skenario menyediakan contoh kebijakan lengkap yang dapat Anda modifikasi sesuai kebutuhan.

Skenario 1: Berikan izin baca/tulis

Untuk mengizinkan anggota tim atau mitra tertentu mengunggah, mengunduh, dan mengelola file dalam bucket, Anda dapat menggunakan Bucket Policy untuk memberikan izin kepada pengguna RAM yang sesuai. Contoh berikut memberikan izin baca/tulis pada bucket example-bucket kepada pengguna RAM dengan UID 27737962156157xxxx dan 20214760404935xxxx.

Catatan

Kebijakan ini tidak memberikan izin kepada pengguna RAM untuk melihat daftar bucket. Akibatnya, pengguna RAM yang ditentukan tidak dapat melihat semua bucket di halaman Buckets atau mengklik bucket untuk membukanya. Pengguna RAM tersebut dapat menambahkan bucket target ke My Favorite Paths > + di panel navigasi kiri konsol untuk mengaksesnya.

{
    "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: Berikan izin read-only ke direktori tertentu

Untuk melindungi file proyek tertentu dalam bucket dari modifikasi namun tetap mengizinkan anggota proyek membacanya, Anda dapat memberikan izin read-only kepada pengguna RAM yang sesuai. Contoh berikut memberikan izin read-only kepada pengguna RAM dengan UID 20214760404935xxxx pada direktori tertentu (dengan awalan hangzhou/2020 dan shanghai/2015) di bucket example-bucket.

Catatan

Kebijakan ini tidak memberikan izin kepada pengguna RAM untuk melihat daftar bucket. Akibatnya, pengguna RAM yang ditentukan tidak dapat melihat semua bucket di halaman Buckets atau mengklik bucket untuk membukanya. Pengguna RAM tersebut dapat menambahkan bucket target ke My Favorite Paths > + di panel navigasi kiri konsol untuk mengaksesnya.

{
    "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: Berikan izin tampil dan daftar

Untuk mengizinkan anggota tim atau mitra tertentu melihat semua informasi tentang bucket dan mencantumkan objek-objeknya, Anda dapat menggunakan Bucket Policy untuk memberikan izin kepada pengguna RAM yang sesuai. Contoh berikut memberikan izin kepada pengguna RAM untuk melihat semua informasi tentang bucket example-bucket dan mencantumkan objek-objek di dalamnya.

Catatan

Kebijakan ini tidak memberikan izin kepada pengguna RAM untuk melihat daftar bucket. Akibatnya, pengguna RAM yang ditentukan tidak dapat melihat semua bucket di halaman Buckets atau mengklik bucket untuk membukanya. Pengguna RAM tersebut dapat menambahkan bucket target ke My Favorite Paths > + di panel navigasi kiri konsol untuk mengaksesnya.

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

Skenario 4: Berikan izin baca ke peran RAM

Untuk mengizinkan pengguna RAM atau aplikasi mengakses objek bucket secara sementara, Anda dapat membuat peran RAM dan memberikan izin yang diperlukan. Pengguna RAM atau aplikasi tersebut mengasumsikan peran tersebut untuk mendapatkan kredensial akses sementara guna membaca objek bucket. Contoh berikut memberikan izin kepada semua sesi di bawah satu peran RAM dan sesi tertentu di bawah peran RAM lain untuk membaca semua objek di bucket example-bucket.

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> bersifat case-sensitive.

{
    "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: Berikan izin daftar ke semua pengguna

Jika bucket digunakan untuk berbagi resource publik dan Anda perlu mengizinkan semua pengguna melihat nama objek tetapi tidak mengakses kontennya, Anda dapat mengatur principal ke karakter wildcard (*). Kemudian, berikan izin kepada principal tersebut untuk mencantumkan semua objek. Contoh berikut memberikan izin kepada semua pengguna untuk mencantumkan semua objek di bucket example-bucket.

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

Skenario umum: Pembatasan akses jaringan

Skenario berikut menunjukkan cara menggunakan Bucket Policy untuk membatasi akses ke bucket berdasarkan sumber jaringan, seperti alamat IP publik atau VPC. Saat mengonfigurasi kondisi berdasarkan alamat IP atau VPC, Anda harus menggunakan kunci kondisi acs:SourceIp dan acs:SourceVpc. Tabel berikut menjelaskan persyaratan pembatasan jaringan umum, pendekatan desain kebijakan, dan skenario terkait untuk membantu Anda memahami perbedaan dan menemukan konfigurasi yang sesuai.

Sumber akses

Pendekatan kebijakan

Skenario

VPC apa pun

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

Skenario 1: Batasi akses jaringan publik

VPC tertentu

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

Skenario 2: Batasi 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: Batasi 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: Batasi 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: Batasi akses ke IP publik atau VPC

Semua kecuali IP tertentu (blacklist)

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

Skenario 6: Atur blacklist IP

Skenario 1: Batasi akses jaringan publik

Untuk memblokir akses ke bucket tertentu dari jaringan publik, buat pernyataan deny yang berisi kunci kondisi acs:SourceVpc dan tambahkan pernyataan tersebut ke Bucket Policy. Pernyataan ini memblokir permintaan yang tidak berasal dari VPC, sehingga secara efektif menolak semua akses jaringan publik. Contoh berikut menolak semua pengguna di luar jaringan VPC untuk mengakses bucket 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: Batasi akses ke VPC tertentu

Untuk membatasi akses ke bucket hanya pada VPC tertentu, Anda dapat menggunakan kunci kondisi acs:SourceVpc untuk membuat pernyataan deny dalam Bucket Policy. Pernyataan ini memblokir permintaan yang berasal dari VPC lain atau jaringan publik. Contoh berikut menolak semua pengguna di luar VPC yang ditentukan dengan ID t4nlw426y44rd3iq4xxxx untuk membaca objek di bucket example-bucket.

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

  • Pernyataan deny berikut hanya membatasi akses dan tidak memberikan izin apa pun. Jika principal 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: Batasi akses ke alamat IP publik tertentu

Untuk membatasi akses bucket hanya pada alamat IP publik tertentu, Anda harus membuat 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-). Kemudian menggunakan NotIpAddress: {"acs:SourceIp": "..."} untuk menolak permintaan yang bukan berasal dari alamat IP yang ditentukan. Tindakan deny dipicu ketika kedua kondisi terpenuhi.

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

Setelah menambahkan dua pernyataan deny ini ke Bucket Policy, permintaan akan ditolak jika memenuhi kondisi di salah satu pernyataan tersebut. Contoh berikut menolak akses baca ke example-bucket untuk semua pengguna kecuali yang berasal dari alamat IP publik 203.0.113.5.

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

  • Pernyataan deny berikut hanya membatasi akses dan tidak memberikan izin apa pun. Jika principal 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: Batasi akses ke rentang IP dalam VPC

Untuk membatasi akses ke bucket hanya pada rentang alamat IP tertentu dalam VPC tertentu, Anda harus membuat 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. Tindakan deny dipicu ketika kedua kondisi terpenuhi.

Setelah menambahkan dua pernyataan deny ini ke Bucket Policy, permintaan akan ditolak jika memenuhi kondisi di salah satu pernyataan tersebut. Contoh berikut menolak akses baca ke bucket example-bucket untuk semua pengguna kecuali yang berasal dari rentang alamat IP 192.168.0.0/16 dalam VPC dengan ID t4nlw426y44rd3iq4xxxx.

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

  • Pernyataan deny berikut hanya membatasi akses dan tidak memberikan izin apa pun. Jika principal 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: Batasi akses ke IP publik atau VPC

Untuk membatasi akses ke bucket hanya pada alamat IP publik tertentu atau VPC tertentu, Anda harus membuat 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. Tindakan 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. Tindakan deny dipicu ketika kedua kondisi terpenuhi. Permintaan jaringan publik tidak cocok dengan pernyataan ini karena nilai acs:SourceVpc-nya tidak dimulai dengan vpc-.

Setelah menambahkan dua pernyataan deny ini ke Bucket Policy, permintaan akan ditolak jika memenuhi kondisi di salah satu pernyataan tersebut. Contoh berikut menolak akses baca ke bucket example-bucket untuk semua pengguna kecuali yang berasal dari alamat IP publik 203.0.113.5 atau VPC dengan ID t4nlw426y44rd3iq4xxxx.

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

  • Pernyataan deny berikut hanya membatasi akses dan tidak memberikan izin apa pun. Jika principal 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: Atur blacklist IP

Untuk menolak akses ke bucket dan objek-objeknya dari alamat IP tertentu, Anda dapat menggunakan kebijakan blacklist IP. Dengan mengatur kebijakan deny dalam Bucket Policy, Anda dapat memblokir semua permintaan akses dari alamat IP atau rentang alamat IP yang ditentukan.

StringLike: {"acs:SourceVpc": "*"} dalam kebijakan menggunakan karakter wildcard untuk mencocokkan semua nilai dan sebenarnya tidak membatasi cakupan VPC. Kondisi ini ada untuk memenuhi pembatasan wajib bahwa jika Anda menentukan acs:SourceIp, Anda juga harus menentukan acs:SourceVpc.

Catatan
  • Karena principal dalam pernyataan deny berikut adalah karakter wildcard (*) dan mencakup kondisi, pernyataan deny tersebut 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 umum: Kontrol keamanan

Skenario berikut menunjukkan cara menggunakan Bucket Policy untuk menerapkan kebijakan keamanan, termasuk membatasi jenis kredensial, mencegah akses publik, dan mengontrol kebijakan retensi.

Skenario 1: Wajibkan kredensial sementara untuk panggilan API

Untuk mewajibkan panggilan API menggunakan kredensial akses sementara, Anda dapat menggunakan kunci kondisi acs:AccessId untuk membuat pernyataan deny. Pernyataan ini memblokir akses dari kredensial non-sementara, seperti access key jangka panjang dari akun Alibaba Cloud atau pengguna RAM. Upaya akses yang menggunakan kredensial non-sementara akan memicu aturan deny. Contoh berikut menolak semua pengguna yang tidak menggunakan kredensial akses sementara (diawali TMP. atau STS.) untuk melihat bucket example-bucket dan mencantumkan objek-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: Larang ACL publik

Untuk mencegah ACL bucket dan objek diatur ke publik, Anda dapat membuat dua pernyataan deny:

  • Gunakan kunci kondisi oss:x-oss-acl untuk membuat pernyataan deny yang mencegah ACL bucket diatur ke izin selain private. Upaya apa pun untuk 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 selain private dan default.

Setelah menambahkan dua pernyataan deny ini ke Bucket Policy, permintaan akan ditolak jika memenuhi kondisi di salah satu pernyataan tersebut. Contoh berikut menolak operasi yang mengatur ACL akses publik pada bucket 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: Batasi periode retensi ObjectWorm

Setelah mengaktifkan kebijakan retensi tingkat objek (ObjectWorm) untuk bucket, Anda dapat menggunakan Bucket Policy untuk membatasi jumlah maksimum hari retensi yang dapat diatur pengguna. Misalnya, kebijakan berikut membatasi pengguna pada periode retensi maksimum 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 merepresentasikan jumlah hari retensi yang tersisa yang ditentukan dalam permintaan.

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

Pengembangan dan integrasi alat

Selain konfigurasi manual di konsol, Anda dapat menggunakan tool grafis, tool baris perintah, dan SDK untuk mengonfigurasi Bucket Policy.

  • Gunakan tool grafis ossbrowser

    ossbrowser mendukung operasi kebijakan tingkat bucket dan menyediakan pengalaman visual yang mirip dengan konsol. Instal dan login ke ossbrowser, lalu ikuti petunjuk di layar untuk mengonfigurasi Bucket Policy.

  • Gunakan tool baris perintah ossutil

    Anda dapat mengatur kebijakan otorisasi dengan menjalankan perintah put-bucket-policy.

    Catatan

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

  • Gunakan SDK

    Anda dapat mengonfigurasi kebijakan menggunakan berbagai bahasa pemrograman, seperti Java SDK, Python SDK, Go SDK, dan Node.js SDK. Untuk informasi lebih lanjut tentang SDK yang didukung, lihat Referensi SDK.

  • Panggil API secara langsung

    Panggil operasi PutBucketPolicy untuk mengatur kebijakan otorisasi untuk 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 field: Panjang setiap field dalam Bucket Policy tidak boleh melebihi 4.095 byte.

Dokumen terkait