全部产品
Search
文档中心

Object Storage Service:Bucket Policy

更新时间:Feb 03, 2026

Bucket policy adalah kebijakan otorisasi yang dilampirkan pada bucket untuk memberikan akses kepada akun Alibaba Cloud lain, pengguna Resource Access Management (RAM), atau pengguna anonim. Anda dapat menggunakan bucket policy untuk menerapkan 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 dilampirkan langsung pada bucket dan menentukan pihak mana (principal) yang dapat melakukan tindakan (action) tertentu terhadap resource tertentu dalam kondisi tertentu.

Saat pengguna mengirim permintaan akses, Object Storage Service (OSS) mengevaluasi semua kebijakan yang relevan, termasuk bucket policy dan kebijakan RAM. Evaluasi izin mengikuti prinsip deny-first eksplisit: aturan Deny apa pun akan segera memblokir permintaan dan mengungguli semua kebijakan Allow. Jika tidak ada aturan Deny maupun Allow, permintaan ditolak secara default.

Bucket policy memiliki aturan khusus yang memengaruhi pemilik bucket:

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

  • Jika Principal diatur ke karakter wildcard (*) dan kebijakan mencakup Condition, maka kebijakan tersebut berlaku untuk semua pengguna, termasuk pemilik bucket.

Saat Anda mengonfigurasi beberapa aturan bucket policy untuk pengguna yang sama, izin pengguna tersebut merupakan gabungan dari semua aturan tersebut. Prinsip deny-first tetap berlaku.

Penting

Saat mengonfigurasi bucket policy atau kebijakan RAM, lakukan berdasarkan arsitektur akses jaringan Anda. Konfigurasikan kedua kondisi acs:SourceIp dan acs:SourceVpc untuk kontrol akses ganda. Menggunakan hanya satu kondisi dapat menimbulkan risiko keamanan. Misalnya, jika Anda hanya membatasi akses berdasarkan alamat IP publik, VPC masih dapat mengakses secara tidak sah melalui alamat IP egress yang sesuai.

Konfigurasikan kebijakan otorisasi bucket

OSS menyediakan dua cara untuk mengonfigurasi kebijakan: editor visual dan editor sintaks. Metode ini dirancang untuk kebutuhan konfigurasi yang berbeda.

  • Editor visual: Menyediakan pengalaman intuitif. Anda dapat menggunakan formulir untuk mengonfigurasi kebijakan dalam skenario otorisasi umum. Ini menyederhanakan proses konfigurasi.

  • Editor sintaks: Menggunakan format JSON untuk mendefinisikan kebijakan lengkap. Mendukung semua fitur lanjutan dan kombinasi kondisi kompleks. Memberikan fleksibilitas konfigurasi maksimal.

Metode kebijakan grafis

  1. Buka halaman Buckets dan klik bucket target.

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

  3. Pilih Add in GUI, lalu klik Authorize. Konfigurasikan otorisasi tersebut.

    Item Konfigurasi

    Deskripsi

    Applied To

    Pilih apakah akan mengotorisasi Whole Bucket atau Specific Resources.

    Resource Paths

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

    • Jika Anda mengatur Applied To ke Specific Resources, masukkan folder atau objek individual yang ingin diotorisasi. Anda dapat menambahkan beberapa catatan.

    Authorized User

    Tentukan objek yang diotorisasi.

    • All Accounts (*): Mengotorisasi siapa saja, termasuk pengunjung anonim.

    • RAM User: Pilih pengguna RAM di bawah akun Alibaba Cloud saat ini.

      Akun login saat ini harus berupa akun Alibaba Cloud atau pengguna RAM dengan izin manajemen untuk bucket ini dan izin ListUsers di konsol Resource Access Management (RAM). Jika tidak, Anda tidak dapat melihat daftar pengguna RAM untuk akun saat ini.

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

      Saat objek yang diotorisasi adalah peran RAM, akun tersebut tidak dapat mengakses resource yang diotorisasi melalui konsol OSS. Akses harus dilakukan menggunakan tool seperti antarmuka baris perintah ossutil (CLI), kit pengembangan perangkat lunak (SDK), atau API.

    Authorized Operation

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

      Catatan

      Untuk memastikan pengguna layanan OSS-HDFS dapat mengakses folder .dlsdata/ dan objek apa pun di dalamnya, jangan mengatur operasi yang diotorisasi ke Deny Access saat mengonfigurasi bucket policy untuk bucket yang telah mengaktifkan layanan OSS-HDFS.

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

    Condition (Opsional)

    Tentukan kondisi agar otorisasi berlaku.

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

    • IP =: Masukkan daftar alamat IP. Setelah memilih opsi ini, kebijakan hanya berlaku jika alamat IP akses ada dalam daftar.

    • IP ≠: Masukkan daftar alamat IP. Setelah memilih opsi ini, kebijakan hanya berlaku jika alamat IP akses tidak ada dalam daftar.

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

    • VPC ≠: Pilih VPC dari akun saat ini atau masukkan VPC dari akun lain. Setelah 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 (hubungan AND) agar kebijakan berlaku.

  4. Setelah memastikan konfigurasi otorisasi benar, klik OK untuk menerapkan bucket policy.

Pendekatan kebijakan berbasis sintaks

  1. Buka halaman Buckets dan klik bucket target.

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

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

    Contoh kebijakan: Untuk pengguna 20214760404935xxxx, jika permintaan akses tidak berasal dari jaringan VPC vpc-t4nlw426y44rd3iq4xxxx, semua operasi pada example-bucket ditolak.

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

      Elemen Kebijakan

      Deskripsi

      Makna dalam contoh kebijakan

      Effect

      Efek kebijakan. Nilai yang valid adalah Allow dan Deny.

      Tolak permintaan tersebut.

      Action

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

      Menolak semua operasi OSS (oss:*).

      Principal

      Entitas yang dipengaruhi kebijakan, seperti pengguna, akun, atau peran.

      Jika bidang Principal dikonfigurasi sebagai daftar kosong (Principal:[]), perilakunya identik dengan dikonfigurasi untuk semua akun (Principal:["*"]).

      Kebijakan hanya berlaku untuk pengguna RAM 20214760404935xxxx.

      Resource

      Cakupan resource yang dipengaruhi kebijakan.

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

      Condition

      Kondisi di mana kebijakan berlaku.

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

      Kebijakan Deny ini hanya berlaku ketika VPC sumber permintaan tidak sama dengan vpc-t4nlw426y44rd3iq4xxxx.

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

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

Konfigurasikan kebijakan otorisasi untuk bucket vektor

Untuk bucket vektor, Anda hanya dapat mengonfigurasi bucket policy menggunakan editor sintaks.

  1. Buka halaman Vector Bucket List dan klik bucket vektor target.

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

  3. Klik Edit dan masukkan kebijakan otorisasi dalam format JSON di editor.

    Contoh kebijakan: Berikan izin kepada pengguna 20816353761158**** untuk membaca dan menulis data vektor di 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 pernyataan kebijakan. Berisi satu atau lebih aturan otorisasi atau penolakan spesifik. Setiap pernyataan otorisasi mencakup Effect, Action, Principal, Resource, dan Condition.

      Elemen Kebijakan

      Deskripsi

      Makna dalam contoh kebijakan

      Effect

      Efek kebijakan. Nilai yang valid adalah Allow dan Deny.

      Mengizinkan permintaan.

      Action

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

      Membaca dan menulis data vektor.

      Principal

      Entitas yang dipengaruhi kebijakan, seperti pengguna, akun, atau peran.

      Jika bidang Principal dikonfigurasi sebagai daftar kosong (Principal:[]), perilakunya identik dengan dikonfigurasi untuk semua akun (Principal:["*"]).

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

      Resource

      Cakupan resource yang dipengaruhi kebijakan.

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

      Condition

      Kondisi di mana kebijakan berlaku.

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

      Tidak ada.

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

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

Skenario otorisasi umum

Skenario berikut menunjukkan penerapan bucket policy dalam bisnis nyata. Skenario ini mencakup berbagai kebutuhan seperti pemberian izin, pembatasan akses, dan kontrol keamanan. Setiap skenario menyediakan contoh konfigurasi kebijakan lengkap yang dapat Anda sesuaikan sesuai kebutuhan.

Skenario 1: Berikan izin baca dan tulis kepada pengguna RAM tertentu

Saat Anda perlu mengizinkan anggota tim atau mitra tertentu untuk 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 dan tulis untuk bucket target (example-bucket) kepada pengguna RAM tertentu (UID 27737962156157xxxx dan 20214760404935xxxx).

Catatan

Karena kebijakan ini tidak memberikan izin untuk melihat daftar bucket, pengguna RAM yang ditentukan tidak dapat melihat bucket target di halaman Buckets. Untuk mengakses bucket tersebut, mereka dapat mengklik My Favorite Paths > + di panel navigasi sebelah kiri untuk menambahkan bucket ke favorit mereka.

{
    "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 untuk folder tertentu kepada pengguna RAM tertentu

Saat Anda perlu melindungi file proyek tertentu dalam bucket agar tidak dimodifikasi tetapi memungkinkan anggota proyek terkait untuk membacanya, Anda dapat memberikan izin read-only kepada pengguna RAM yang sesuai. Contoh berikut memberikan izin read-only untuk folder tertentu (dengan awalan hangzhou/2020 dan shanghai/2015) di bucket target (example-bucket) kepada pengguna RAM tertentu (UID 20214760404935xxxx).

Catatan

Karena kebijakan ini tidak memberikan izin untuk melihat daftar bucket, pengguna RAM yang ditentukan tidak dapat melihat bucket target di halaman Buckets. Untuk mengakses bucket tersebut, mereka dapat mengklik My Favorite Paths > + di panel navigasi sebelah kiri untuk menambahkan bucket ke favorit mereka.

{
    "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 kepada pengguna RAM tertentu untuk melihat bucket dan melihat daftar file-nya

Saat Anda perlu mengizinkan anggota tim atau mitra tertentu untuk melihat semua informasi tentang bucket dan melihat daftar file-nya, Anda dapat menggunakan bucket policy untuk memberikan izin yang sesuai kepada pengguna RAM tersebut. Contoh berikut memberikan izin kepada pengguna RAM tertentu untuk melihat semua informasi tentang bucket target (example-bucket) dan melihat daftar file-nya.

Catatan

Karena kebijakan ini tidak memberikan izin untuk melihat daftar bucket, pengguna RAM yang ditentukan tidak dapat melihat bucket target di halaman Buckets. Untuk mengakses bucket tersebut, mereka dapat mengklik My Favorite Paths > + di panel navigasi sebelah kiri untuk menambahkan bucket ke favorit mereka.

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

Skenario 4: Berikan izin kepada peran RAM tertentu untuk membaca file

Saat Anda perlu mengizinkan pengguna RAM atau aplikasi untuk mengakses file bucket secara sementara, Anda dapat membuat peran RAM dan memberikan izin yang sesuai. Pengguna RAM atau aplikasi tersebut mengasumsikan peran tersebut untuk mendapatkan kredensial akses sementara guna membaca file bucket. Contoh berikut memberikan izin untuk membaca semua file dalam bucket (example-bucket) kepada semua sesi di bawah satu peran RAM dan sesi tertentu di bawah peran RAM lain dalam akun Alibaba Cloud.

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 kepada semua pengunjung untuk melihat daftar semua file

Saat bucket digunakan untuk berbagi sumber daya publik dan Anda ingin semua pengunjung dapat melihat nama file tetapi tidak mengakses konten file sebenarnya, Anda dapat mengatur Principal ke karakter wildcard asterisk (*) dan memberikan izin untuk melihat daftar semua file. Contoh berikut memberikan izin kepada semua pengunjung untuk melihat daftar semua file di bucket target (example-bucket).

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

Skenario 6: Batasi akses dari jaringan publik

Saat Anda perlu melarang akses ke bucket tertentu dari jaringan publik, Anda dapat menggunakan kunci kondisi acs:SourceVpc untuk membuat pernyataan deny dan menambahkannya ke bucket policy. Ini memblokir permintaan dari jaringan non-VPC. Contoh berikut menolak akses ke bucket target (example-bucket) untuk semua pengunjung kecuali yang berasal dari jaringan VPC.

{
  "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 7: Batasi akses ke VPC tertentu

Saat Anda perlu membatasi akses ke bucket hanya untuk VPC tertentu, Anda dapat menggunakan kunci kondisi acs:SourceVpc untuk membuat pernyataan deny dan menambahkannya ke bucket policy. Ini memblokir permintaan dari VPC lain atau jaringan publik. Contoh berikut menolak semua pengunjung, kecuali yang berasal dari VPC tertentu (ID t4nlw426y44rd3iq4xxxx), untuk membaca file di bucket target (example-bucket).

Catatan
  • Karena Principal dalam pernyataan deny berikut adalah karakter wildcard asterisk (*) dan mencakup Condition, pernyataan deny tersebut berlaku untuk semua pengunjung, termasuk pemilik bucket.

  • Pernyataan deny ini hanya membatasi akses dan tidak memberikan izin apa pun. Jika entitas yang diotorisasi memerlukan akses, Anda harus menambahkan pernyataan allow terpisah.

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

Skenario 8: Batasi akses ke alamat IP publik tertentu

Saat Anda perlu membatasi akses bucket hanya untuk alamat IP publik tertentu, Anda dapat menggunakan kunci kondisi acs:SourceIp untuk membuat pernyataan deny dan menambahkannya ke bucket policy. Ini memblokir permintaan dari alamat IP publik lainnya. Contoh berikut menolak semua pengunjung, kecuali yang berasal dari alamat IP publik tertentu 203.0.113.5, untuk membaca dari example-bucket.

Catatan
  • Karena Principal dalam pernyataan deny berikut adalah karakter wildcard asterisk (*) dan mencakup Condition, pernyataan deny tersebut berlaku untuk semua pengunjung, termasuk pemilik bucket.

  • Pernyataan deny ini hanya membatasi akses dan tidak memberikan izin apa pun. Jika entitas yang diotorisasi memerlukan akses, Anda harus menambahkan pernyataan allow terpisah.

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

Skenario 9: Membatasi akses hanya ke blok CIDR tertentu dalam VPC tertentu

Saat Anda perlu membatasi akses ke bucket hanya untuk rentang alamat IP tertentu dalam VPC tertentu, Anda harus membuat dua pernyataan deny:

  • Gunakan kunci kondisi acs:SourceVpc untuk membuat pernyataan kebijakan deny yang memblokir permintaan dari VPC lain atau jaringan publik. Permintaan dari alamat IP publik atau VPC lain gagal memenuhi kondisi yang ditentukan, sehingga memicu aturan deny.

  • Gunakan kunci kondisi acs:SourceIp dan kunci kondisi acs:SourceVpc untuk membuat pernyataan deny yang memblokir permintaan dari luar blok CIDR VPC yang ditentukan.

Setelah Anda menambahkan kedua pernyataan deny ini ke bucket policy, aturan deny akan dipicu jika salah satu kondisi terpenuhi. Contoh berikut menolak semua pengunjung, kecuali yang berasal dari blok CIDR tertentu (192.168.0.0/16) dalam VPC tertentu (ID t4nlw426y44rd3iq4xxxx), untuk membaca file dari bucket target (example-bucket).

Catatan
  • Karena Principal dalam pernyataan deny berikut adalah karakter wildcard asterisk (*) dan mencakup Condition, pernyataan deny tersebut berlaku untuk semua pengunjung, termasuk pemilik bucket.

  • Pernyataan deny ini hanya membatasi akses dan tidak memberikan izin apa pun. Jika entitas yang diotorisasi memerlukan akses, Anda harus menambahkan pernyataan allow terpisah.

{
    "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 10: Batasi akses ke alamat IP publik tertentu atau VPC tertentu

Saat Anda perlu membatasi akses ke bucket hanya untuk alamat IP publik tertentu atau VPC tertentu, Anda harus membuat dua pernyataan deny:

  • Gunakan kunci kondisi acs:SourceIp untuk membuat pernyataan deny yang memblokir permintaan dari alamat IP publik lainnya. Secara bersamaan, gunakan operator kondisi StringNotLike dan kunci kondisi acs:SourceVpc untuk mengecualikan permintaan dari VPC yang ditentukan.

  • Gunakan kunci kondisi acs:SourceVpc untuk membuat pernyataan kebijakan deny yang memblokir permintaan dari VPC lain. Untuk mencegah permintaan dari alamat IP publik ditolak secara keliru, gunakan operator kondisi StringLike dengan kunci acs:SourceVpc untuk membuat pengecualian.

Setelah Anda menambahkan kedua pernyataan deny ini ke bucket policy, aturan deny akan dipicu jika salah satu kondisi terpenuhi. Contoh berikut menolak semua pengunjung, kecuali yang berasal dari alamat IP publik tertentu (203.0.113.5) atau VPC tertentu (ID t4nlw426y44rd3iq4xxxx), untuk membaca file dari bucket target (example-bucket).

Catatan
  • Karena Principal dalam pernyataan deny berikut adalah karakter wildcard asterisk (*) dan mencakup Condition, pernyataan deny tersebut berlaku untuk semua pengunjung, termasuk pemilik bucket.

  • Pernyataan deny ini hanya membatasi akses dan tidak memberikan izin apa pun. Jika entitas yang diotorisasi memerlukan akses, Anda harus menambahkan pernyataan allow terpisah.

{
    "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 11: Tetapkan daftar hitam IP

Saat Anda perlu menolak akses ke bucket dan objek-objeknya dari alamat IP tertentu, Anda dapat menggunakan kebijakan daftar hitam IP. Dengan menetapkan kebijakan deny di bucket policy, Anda dapat memblokir semua permintaan akses dari alamat IP atau blok CIDR tertentu.

Catatan
  • Karena Principal dalam pernyataan deny berikut adalah karakter wildcard asterisk (*) dan mencakup Condition, pernyataan deny tersebut berlaku untuk semua pengunjung, termasuk pemilik bucket.

  • Anda dapat mengonfigurasi beberapa alamat IP dan blok CIDR sekaligus. 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"
          ]
        }
      }
    }
  ]
}

Skenario 12: Wajibkan panggilan API menggunakan kredensial akses sementara

Untuk mewajibkan panggilan API menggunakan kredensial akses sementara, Anda dapat menambahkan pernyataan deny dengan kunci kondisi acs:AccessId ke bucket policy. Ini memblokir metode akses yang menggunakan kredensial non-sementara, seperti pasangan Kunci Akses jangka panjang dari akun Alibaba Cloud atau pengguna RAM. Contoh berikut menolak semua pengunjung, kecuali yang menggunakan kredensial akses sementara (dimulai dengan TMP. atau STS.), untuk melihat bucket target (example-bucket) dan melihat daftar file-nya.

{
    "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 13: Larang pengaturan ACL bucket dan objek menjadi publik

Saat Anda perlu melarang pengaturan daftar kontrol akses (ACL) bucket dan objek menjadi publik, Anda dapat membuat dua pernyataan deny:

  • Gunakan kunci kondisi oss:x-oss-acl untuk membuat pernyataan kebijakan deny yang mencegah ACL Bucket diatur ke izin selain private. Upaya apa pun untuk mengatur ACL Bucket ke public-read atau public-read-write gagal memenuhi kondisi private dan 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 Anda menambahkan kedua pernyataan deny ini ke bucket policy, aturan deny akan dipicu jika salah satu kondisi terpenuhi. Contoh berikut menolak operasi yang mengatur izin akses publik pada bucket target (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"
                    ]
                }
            }
        }
    ]
}

Integrasi pengembangan dan tool

Selain konfigurasi manual di konsol, Anda juga dapat menggunakan tool grafis atau baris perintah, SDK, dan metode lain untuk mengonfigurasi bucket policy.

  • Gunakan tool grafis ossbrowser

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

  • Gunakan tool baris perintah ossutil

    Tetapkan kebijakan otorisasi menggunakan perintah put-bucket-policy.

    Catatan

    Saat menetapkan kebijakan otorisasi untuk bucket vektor, gunakan 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 menetapkan kebijakan otorisasi untuk bucket.

Kuota dan batasan

  • Ukuran kebijakan: Anda dapat menambahkan beberapa bucket policy ke satu bucket. Ukuran total semua kebijakan tidak boleh melebihi 16 KB.

  • Panjang field: Panjang setiap field dalam bucket policy tidak boleh melebihi 4.095 byte.

Referensi