All Products
Search
Document Center

Object Storage Service:Bucket Policy

Last Updated:Mar 26, 2026

Bucket Policy adalah kebijakan otorisasi berbasis resource yang dilampirkan ke bucket. Anda dapat menggunakannya untuk memberikan akses ke bucket Anda kepada akun Alibaba Cloud lain, pengguna RAM, atau pengguna anonim, sehingga memungkinkan skenario seperti otorisasi cross-account, kontrol akses anonim, serta pembatasan berdasarkan alamat IP atau VPC.

Cara kerja

Bucket Policy dilampirkan langsung ke bucket dan menentukan Principal mana yang dapat melakukan Action tertentu pada Resource tertentu di bawah Condition tertentu.

Saat pengguna mengirim permintaan akses, OSS mengevaluasi semua kebijakan yang relevan, termasuk Bucket Policy dan kebijakan RAM yang berlaku. Proses evaluasi mengikuti satu aturan: penolakan eksplisit memiliki prioritas lebih tinggi. Aturan Deny eksplisit apa pun akan segera memblokir permintaan tersebut, mengesampingkan semua kebijakan Allow. Jika tidak ada aturan Deny atau Allow yang berlaku, permintaan ditolak secara default.

Bucket Policy memiliki aturan evaluasi khusus untuk pemilik bucket:

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

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

Jika Anda mengonfigurasi beberapa aturan Bucket Policy untuk pengguna yang sama, izin pengguna tersebut merupakan gabungan dari semua aturan yang berlaku. Prinsip bahwa penolakan eksplisit memiliki prioritas lebih tinggi tetap berlaku.

Penting
  • Saat Anda mengonfigurasi Bucket Policy, jika Anda mengonfigurasi acs:SourceIp, Anda juga harus mengonfigurasi acs:SourceVpc.

Konfigurasi bucket policy

OSS menyediakan dua metode untuk mengonfigurasi Bucket Policy: antarmuka pengguna grafis (GUI) dan editor kebijakan berbasis sintaks. Masing-masing metode melayani kebutuhan yang berbeda.

  • Antarmuka pengguna grafis (GUI): Menyediakan pengalaman berbasis formulir yang intuitif untuk skenario otorisasi umum, sehingga menyederhanakan konfigurasi.

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

Antarmuka grafis

  1. Buka halaman Buckets dan klik nama bucket target.

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

  3. Pilih Add in GUI, lalu klik Authorize untuk membuka panel konfigurasi kebijakan.

    Parameter

    Deskripsi

    Applied To

    Pilih apakah kebijakan berlaku untuk Whole Bucket atau untuk Specific Resources.

    Resource Paths

    • Jika Applied To diatur ke Whole Bucket, maka Resource Paths adalah 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.

    • All Accounts (*): Kebijakan berlaku untuk siapa saja, termasuk pengguna anonim.

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

      Akun saat ini harus merupakan akun root atau pengguna RAM dengan izin manajemen untuk bucket ini dan izin ListUsers di konsol RAM. Jika tidak, Anda tidak dapat melihat daftar pengguna RAM.

    • Other accounts: Masukkan UID akun atau pengguna RAM lain, atau ARN pengguna peran yang diasumsikan yang dimulai dengan arn:sts, seperti arn:sts::1798************:assumed-role/role-name/session-name. Anda dapat mengotorisasi beberapa pengguna. Masukkan satu per baris.

      Jika principal yang diotorisasi adalah peran RAM, mereka harus mengakses resource secara terprogram menggunakan tool seperti ossutil, SDK, atau API.

    Authorized Operation

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

      Penting

      Untuk memastikan layanan OSS-HDFS dapat mengakses direktori .dlsdata/ dan semua objek di dalamnya, jangan mengatur aksi Deny Access saat Anda mengonfigurasi Bucket Policy untuk bucket yang telah mengaktifkan layanan OSS-HDFS. Jika Anda harus membatasi akses ke alamat IP jaringan atau VPC tertentu demi alasan keamanan, Anda perlu menambahkan konfigurasi khusus. Untuk informasi selengkapnya, lihat Prasyarat untuk menggunakan OSS-HDFS.

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

    Condition (Opsional)

    Tentukan kondisi di mana kebijakan berlaku.

    • Access Method: Opsi termasuk HTTPS dan HTTP. Jika dipilih, kebijakan hanya berlaku untuk permintaan yang menggunakan protokol yang ditentukan.

    • IP =: Masukkan daftar alamat IP. Jika dipilih, kebijakan hanya berlaku untuk permintaan dari alamat IP yang ditentukan.

    • IP ≠: Masukkan daftar alamat IP. Jika dipilih, kebijakan hanya berlaku untuk permintaan yang tidak berasal dari alamat IP yang ditentukan.

    • VPC =: Pilih VPC dari akun saat ini atau masukkan ID VPC dari akun lain. Jika dipilih, kebijakan hanya berlaku untuk permintaan dari VPC yang ditentukan.

    • VPC ≠: Pilih VPC dari akun saat ini atau masukkan ID VPC dari akun lain. Jika dipilih, kebijakan hanya berlaku untuk permintaan yang tidak berasal dari VPC yang ditentukan.

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

  4. Setelah memverifikasi pengaturan, klik OK.

Sintaks kebijakan

  1. Buka halaman Buckets dan klik nama bucket target.

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

  3. Pilih Add by Syntax, lalu klik Edit. Di editor kebijakan, masukkan kebijakan berformat JSON.

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

    {
        "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 lengkap mencakup elemen Version dan blok Statement.

    • Version: Versi kebijakan izin. Nilainya diatur ke 1 dan tidak dapat diubah.

    • Statement: Elemen utama kebijakan. Berisi satu atau beberapa aturan. Setiap aturan adalah pernyataan yang mencakup elemen seperti Effect, Action, Principal, Resource, dan Condition.

      Elemen

      Deskripsi

      Contoh

      Effect

      Efek kebijakan. Nilainya dapat berupa Allow atau Deny.

      Deny permintaan tersebut.

      Action

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

      Tolak semua aksi OSS (oss:*).

      Principal

      Pengguna, akun, atau peran yang menjadi sasaran kebijakan.

      Jika bidang Principal diatur ke daftar kosong (yaitu, Principal:[]), perilakunya identik dengan mengaturnya ke semua akun (yaitu, Principal:["*"]).

      Kebijakan hanya berlaku untuk pengguna RAM 20214760404935xxxx.

      Resource

      Cakupan resource yang menjadi sasaran 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 (logika AND) agar kebijakan berlaku.

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

      Untuk daftar lengkap elemen kebijakan, lihat Elemen dan sintaks kebijakan.

  4. Setelah memverifikasi bahwa kebijakan sudah benar, klik Save dan ikuti petunjuk di layar untuk menyimpan kebijakan.

Konfigurasi bucket policy vektor

Untuk bucket vektor, Anda hanya dapat mengonfigurasi Bucket Policy menggunakan editor kebijakan berbasis sintaks.

  1. Buka halaman Vector Buckets dan klik nama bucket vektor target.

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

  3. Klik Edit. Di editor kebijakan, masukkan kebijakan berformat JSON.

    Contoh kebijakan otorisasi: 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 lengkap mencakup elemen Version dan blok Statement.

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

    • Statement: Elemen utama kebijakan. Berisi satu atau beberapa aturan. Setiap aturan adalah pernyataan yang mencakup elemen seperti Effect, Action, Principal, Resource, dan Condition.

      Elemen

      Deskripsi

      Contoh

      Effect

      Efek kebijakan dapat berupa Allow atau Deny.

      Allow permintaan.

      Action

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

      Membaca dan menulis data vektor.

      Principal

      Pengguna, akun, atau peran yang menjadi sasaran kebijakan.

      Jika bidang Principal diatur ke daftar kosong (yaitu, Principal:[]), perilakunya identik dengan mengaturnya ke semua akun (yaitu, Principal:["*"]).

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

      Resource

      Cakupan resource yang menjadi sasaran 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 (logika AND) agar kebijakan berlaku.

      Tidak ada.

      Untuk daftar lengkap elemen kebijakan, lihat Elemen dan sintaks kebijakan.

  4. Setelah memverifikasi bahwa kebijakan sudah benar, klik Save dan ikuti petunjuk di layar untuk menyimpan kebijakan.

Kasus penggunaan

Skenario berikut menunjukkan penerapan khas Bucket Policy, mencakup pemberian izin, pembatasan akses, dan kontrol keamanan. Setiap skenario menyediakan contoh kebijakan lengkap yang dapat Anda sesuaikan dengan kebutuhan.

Skenario 1: Memberikan izin baca/tulis kepada pengguna RAM

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 pada bucket target (example-bucket) kepada pengguna RAM dengan UID 27737962156157xxxx dan 20214760404935xxxx.

Catatan

Karena kebijakan ini tidak memberikan izin oss:ListBuckets, pengguna RAM yang ditentukan tidak dapat melihat bucket di halaman Buckets. Untuk mengakses bucket, pengguna RAM dapat menambahkan path bucket ke My Favorite Paths > + di panel navigasi kiri konsol.

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

Skenario 2: Memberikan izin read-only pada direktori

Jika Anda ingin melindungi file proyek tertentu dalam bucket agar tidak dimodifikasi tetapi memungkinkan anggota proyek membacanya, Anda dapat memberikan izin read-only kepada pengguna RAM yang sesuai. Misalnya, Anda dapat memberikan izin read-only kepada pengguna RAM dengan UID 20214760404935xxxx untuk direktori yang memiliki awalan hangzhou/2020 dan shanghai/2015 di bucket example-bucket.

Catatan

Karena kebijakan ini tidak memberikan izin oss:ListBuckets, pengguna RAM yang ditentukan tidak dapat melihat bucket di halaman Buckets. Untuk mengakses bucket, pengguna RAM dapat menambahkan path bucket ke My Favorite Paths > + di panel navigasi kiri konsol.

{
    "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 untuk melihat bucket dan mencantumkan objek

Jika Anda perlu mengizinkan anggota tim atau mitra tertentu untuk melihat semua informasi tentang bucket dan mencantumkan file di dalamnya, Anda dapat menggunakan Bucket Policy untuk memberikan izin yang diperlukan kepada pengguna RAM yang sesuai. Contoh berikut memberikan izin kepada pengguna RAM tertentu untuk melihat semua informasi tentang bucket target (example-bucket) dan mencantumkan file di dalamnya.

Catatan

Karena kebijakan ini tidak memberikan izin oss:ListBuckets, pengguna RAM yang ditentukan tidak dapat melihat bucket di halaman Buckets. Untuk mengakses bucket, pengguna RAM dapat menambahkan path bucket ke My Favorite Paths > + di panel navigasi kiri konsol.

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

Skenario 4: Memberikan izin kepada peran RAM untuk membaca objek

Jika Anda perlu mengizinkan pengguna RAM atau aplikasi untuk sementara mengakses file dalam bucket, Anda dapat membuat peran RAM dan memberikan izin yang diperlukan. Dengan mengasumsikan peran tersebut, pengguna RAM atau aplikasi memperoleh kredensial akses sementara untuk membaca file dalam bucket. Contoh berikut memberikan izin untuk membaca semua file dalam bucket example-bucket kepada semua sesi dari satu peran RAM dan sesi tertentu dari peran RAM lain di bawah akun Alibaba Cloud.

Catatan

Saat memberikan izin kepada peran RAM, Principal harus menggunakan format berikut: arn:sts::<uid>:assumed-role/<role-name>/<session-name>. Dalam format ini, nilai <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: Memberikan izin kepada semua pengguna untuk mencantumkan objek

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

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

Skenario 6: Memblokir akses dari internet

Saat Anda perlu menolak akses ke bucket tertentu dari internet publik, Anda dapat menggunakan kunci kondisi acs:SourceVpc untuk membuat pernyataan kebijakan Deny dan menambahkannya ke Bucket Policy guna memblokir permintaan yang tidak berasal dari VPC. Permintaan dari internet publik ditolak karena tidak sesuai dengan awalan jaringan VPC yang ditentukan. Contoh berikut menolak akses ke bucket target (example-bucket) untuk semua permintaan yang tidak berasal dari 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: Mengizinkan akses hanya dari VPC tertentu

Untuk membatasi akses ke bucket hanya dari VPC tertentu, Anda dapat menambahkan pernyataan kebijakan Deny dengan kunci kondisi acs:SourceVpc ke Bucket Policy. Hal ini menolak permintaan dari VPC lain atau internet publik karena permintaan tersebut tidak berasal dari ID VPC yang ditentukan. Contoh berikut menolak semua pemohon untuk membaca file dalam bucket target example-bucket kecuali jika permintaan berasal dari VPC yang ditentukan dengan ID t4nlw426y44rd3iq4xxxx.

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

  • Pernyataan Deny berikut hanya membatasi akses dan tidak memberikan izin apa pun. Jika principal belum diberikan izin akses, Anda juga harus menambahkan pernyataan Allow untuk memberikan izin yang diperlukan.

  • Jika layanan OSS-HDFS diaktifkan untuk bucket, Anda harus menambahkan 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"
        ]
    }
{
    "Version":"1",
    "Statement":[
        {
            "Effect":"Deny",
            "Action":[
                "oss:GetObject"
            ],
            "Principal":[
                "*"
            ],
            "Resource":[
                "acs:oss:*:174649585760xxxx:example-bucket/*"
            ],
            "Condition":{
                "StringNotEquals":{
                    "acs:SourceVpc":[
                        "vpc-t4nlw426y44rd3iq4xxxx"
                    ]
                }
            }
        }
    ]
}

Skenario 8: Mengizinkan akses hanya dari alamat IP publik tertentu

Untuk membatasi akses ke bucket hanya dari alamat IP publik tertentu, buat pernyataan kebijakan Deny yang menggunakan kunci kondisi acs:SourceIp dan tambahkan ke Bucket Policy. Kebijakan ini memblokir permintaan dari alamat IP publik lainnya. Permintaan dari alamat IP publik lain tidak memenuhi kondisi IP yang ditentukan dan karenanya memicu aturan penolakan. Contoh berikut menolak operasi baca pada example-bucket untuk semua pengunjung kecuali yang berasal dari alamat IP publik 203.0.113.5.

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

  • Pernyataan Deny berikut hanya membatasi akses dan tidak memberikan izin apa pun. Jika principal belum diberikan izin akses, Anda juga harus menambahkan pernyataan Allow untuk memberikan izin yang diperlukan.

  • Jika layanan OSS-HDFS diaktifkan untuk bucket, Anda harus menambahkan 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"
        ]
    }
{
  "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 9: Mengizinkan akses dari rentang IP tertentu dalam VPC

Untuk membatasi akses bucket ke 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 internet publik. Permintaan dari alamat IP publik atau VPC lain diidentifikasi sebagai tidak memenuhi kondisi IP yang ditentukan, yang memicu aturan deny.

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

Setelah menambahkan dua pernyataan Deny di atas ke Bucket Policy, akses ditolak jika salah satu kondisi terpenuhi. Contoh berikut menolak semua permintaan untuk membaca objek dari bucket target (example-bucket) kecuali permintaan yang berasal dari rentang alamat IP 192.168.0.0/16 dalam VPC yang ditentukan (ID: t4nlw426y44rd3iq4xxxx).

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

  • Pernyataan Deny berikut hanya membatasi akses dan tidak memberikan izin apa pun. Jika principal belum diberikan izin akses, Anda juga harus menambahkan pernyataan Allow untuk memberikan izin yang diperlukan.

  • Jika layanan OSS-HDFS diaktifkan untuk bucket, Anda harus menambahkan 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"
        ]
    }
{
    "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: Mengizinkan akses dari IP atau VPC tertentu

Untuk membatasi akses bucket ke alamat IP publik tertentu atau VPC tertentu, Anda harus membuat dua pernyataan Deny:

  • Buat pernyataan kebijakan deny yang menggunakan kunci kondisi acs:SourceIp untuk memblokir permintaan dari alamat IP publik lain, dan operator kondisi StringNotLike serta 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. Pada saat yang sama, gunakan operator kondisi StringLike dengan kunci acs:SourceVpc untuk mengecualikan permintaan dari alamat IP publik yang ditentukan. Hal ini mencegah permintaan tersebut salah ditolak karena tidak memenuhi kondisi ID VPC.

Setelah dua pernyataan kebijakan deny di atas ditambahkan ke Bucket Policy, permintaan ditolak jika salah satu kondisi terpenuhi. Contoh berikut menolak semua pengunjung, kecuali yang berasal dari alamat IP publik 203.0.113.5 atau VPC t4nlw426y44rd3iq4xxxx, untuk membaca file dalam bucket target example-bucket.

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

  • Pernyataan Deny berikut hanya membatasi akses dan tidak memberikan izin apa pun. Jika principal belum diberikan izin akses, Anda juga harus menambahkan pernyataan Allow untuk memberikan izin yang diperlukan.

  • Jika layanan OSS-HDFS diaktifkan untuk bucket, Anda harus menambahkan 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"
        ]
    }
{
    "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: Mengonfigurasi daftar hitam IP

Untuk menolak akses ke bucket dan objeknya dari alamat IP tertentu, Anda dapat menggunakan kebijakan daftar hitam IP. Dengan mengonfigurasi kebijakan Deny dalam Bucket Policy, Anda dapat memblokir semua permintaan akses dari alamat IP atau rentang alamat IP yang ditentukan.

Catatan
  • Karena Principal dalam pernyataan kebijakan deny berikut adalah karakter wildcard asterisk (*) dan pernyataan tersebut mencakup Condition, pernyataan kebijakan deny berlaku untuk semua pengakses, 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 12: Mengharuskan kredensial sementara untuk panggilan API

Saat Anda mengakses resource bucket melalui API, Anda dapat mewajibkan penggunaan kredensial akses sementara. Untuk melakukannya, tambahkan pernyataan kebijakan Deny yang menggunakan kunci kondisi acs:AccessId ke Bucket Policy Anda. Pernyataan ini memblokir akses dari kredensial non-sementara lainnya, seperti kunci akses jangka panjang dari akun Alibaba Cloud atau pengguna RAM. Upaya akses yang menggunakan kredensial non-sementara akan memicu aturan Deny dalam kebijakan. Contoh berikut menolak semua pengunjung, kecuali yang menggunakan kredensial akses sementara yang dimulai dengan TMP. atau STS., untuk melihat bucket target (example-bucket) dan mencantumkan file di dalamnya.

{
    "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: Melarang ACL publik untuk bucket dan objek

Untuk melarang pengaturan ACL bucket dan objek agar mengizinkan akses 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. Setiap upaya mengatur izin ke public-read atau public-read-write diidentifikasi sebagai pelanggaran terhadap kondisi private dan memicu aturan deny.

  • Gunakan kunci kondisi oss:x-oss-object-acl untuk membuat pernyataan kebijakan deny guna mencegah ACL Objek diatur ke izin selain private atau default.

Setelah menambahkan dua pernyataan kebijakan deny di atas ke Bucket Policy, tindakan deny 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"
                    ]
                }
            }
        }
    ]
}

Pengembangan dan integrasi tool

Selain menggunakan konsol, Anda dapat mengelola otorisasi Bucket Policy dengan tool grafis, tool baris perintah, dan SDK.

  • Gunakan tool grafis ossbrowser

    ossbrowser menyediakan antarmuka visual, mirip dengan konsol, untuk mengelola kebijakan bucket. Setelah Anda menginstal dan login ke ossbrowser, ikuti petunjuk di layar untuk mengonfigurasi Bucket Policy.

  • Gunakan tool baris perintah ossutil

    Tetapkan kebijakan otorisasi dengan menjalankan perintah put-bucket-policy.

    Catatan

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

  • Gunakan SDK

    Anda dapat mengonfigurasi kebijakan dengan menggunakan SDK untuk 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

    Panggil operasi PutBucketPolicy untuk menetapkan kebijakan otorisasi untuk bucket.

Kuota dan Batasan

  • Ukuran kebijakan: Satu bucket hanya dapat memiliki satu Bucket Policy. Kebijakan ini dapat berisi beberapa aturan, tetapi ukuran totalnya tidak boleh melebihi 16 KB.

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

Referensi