全部产品
Search
文档中心

Object Storage Service:Contoh konfigurasi kebijakan bucket untuk mengizinkan atau menolak akses pengguna ke OSS

更新时间:Nov 05, 2025

Kebijakan bucket memungkinkan Anda untuk mengizinkan atau menolak akses pengguna anonim atau teridentifikasi, seperti Akun Alibaba Cloud, Pengguna Manajemen Akses Sumber Daya (RAM), dan Peran RAM, ke sumber daya Object Storage Service (OSS) tertentu. Sebagai contoh, Anda dapat memberikan izin baca-saja pada sumber daya OSS tertentu kepada Pengguna RAM dari Akun Alibaba Cloud lainnya.

Deskripsi

Dibandingkan dengan kebijakan RAM, kebijakan bucket mencakup elemen tambahan Principal yang menentukan pengguna yang diizinkan atau ditolak akses ke sumber daya OSS tertentu. Kebijakan bucket memungkinkan Anda mengelola izin akses beberapa pengguna secara terpusat tanpa perlu mengonfigurasi izin terpisah untuk setiap pengguna. Contohnya, Anda dapat mencocokkan Pengguna RAM tertentu dengan menentukan UID mereka dalam elemen Principal atau mencocokkan semua pengguna dengan menyetel elemen Principal menjadi tanda asterisk (*).

Catatan Penggunaan

  • Jika elemen Principal disetel ke tanda asterisk (*) dan elemen Condition ditentukan saat mengonfigurasi kebijakan bucket, kebijakan tersebut berlaku untuk semua pengguna, termasuk pemilik bucket. Dalam hal ini, jika permintaan akses memicu pernyataan Deny, permintaan tersebut akan ditolak, meskipun dibuat oleh pemilik bucket, yang secara default memiliki semua izin akses pada bucket dan objek di dalamnya.

  • Jika elemen Principal disetel ke tanda asterisk (*) dan elemen Condition tidak ditentukan saat mengonfigurasi kebijakan bucket, kebijakan tersebut berlaku untuk semua pengguna kecuali pemilik bucket. Dalam hal ini, pernyataan Deny tidak dipicu untuk pemilik bucket, yang secara default memiliki semua izin akses pada bucket dan objek di dalamnya.

Contoh 1: Memberikan akses baca dan tulis ke bucket bagi Pengguna RAM tertentu

Untuk memberikan anggota tim atau mitra tertentu izin untuk mengunggah, mengunduh, dan mengelola objek dalam bucket, Anda dapat mengonfigurasi kebijakan bucket untuk memberikan izin tersebut kepada anggota tersebut tanpa perlu mengonfigurasi kebijakan akses untuk setiap pengguna RAM. Contoh kebijakan berikut memberikan pengguna RAM dengan UID 27737962156157xxxx dan 20214760404935xxxx izin untuk membaca dan menulis bucket bernama examplebucket.

Penting

Pada pernyataan Allow berikut, Pengguna RAM tidak diberikan izin untuk mencantumkan bucket. Oleh karena itu, Pengguna RAM tidak dapat melihat bucket apa pun atau masuk ke bucket yang diizinkan dari halaman Buckets di konsol OSS. Pengguna RAM dapat mengakses bucket dengan menambahkannya ke jalur favorit. Untuk informasi lebih lanjut, lihat Jalur akses OSS.

{
    "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:examplebucket/*"
            ]
        },
        {
            "Effect":"Allow",
            "Action":[
                "oss:ListObjects"
            ],
            "Principal":[
                "27737962156157xxxx",
                "20214760404935xxxx"
            ],
            "Resource":[
                "acs:oss:*:174649585760xxxx:examplebucket"
            ],
            "Condition":{
                "StringLike":{
                    "oss:Prefix":[
                        "*"
                    ]
                }
            }
        }
    ]
}

Contoh 2: Memberikan izin kepada Pengguna RAM tertentu untuk membaca direktori tertentu di bucket

Jika Anda ingin melindungi objek proyek tertentu di bucket dari perubahan sambil mengizinkan anggota proyek tertentu untuk membaca objek tersebut, Anda dapat memberikan anggota tersebut izin baca-saja pada objek proyek. Contoh kebijakan berikut memberikan izin baca-saja pada direktori hangzhou/2020 dan shanghai/2015 dari bucket bernama examplebucket kepada Pengguna RAM dengan UID 20214760404935xxxx.

Penting

Pada pernyataan Allow berikut, Pengguna RAM tidak diberikan izin untuk mencantumkan bucket. Oleh karena itu, Pengguna RAM tidak dapat melihat bucket atau masuk ke bucket yang diizinkan dari halaman Buckets di konsol OSS. Pengguna RAM dapat mengakses bucket dengan menambahkannya ke jalur favorit. Untuk informasi lebih lanjut, lihat Jalur akses OSS.

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

Contoh 3: Memberikan semua pengguna izin hanya untuk mencantumkan semua objek di bucket

Jika bucket Anda digunakan untuk berbagi sumber daya publik dan Anda ingin semua pengguna dapat melihat nama objek tetapi tidak konten objek, Anda dapat menyetel elemen Principal ke tanda asterisk (*) dan memberikan semua pengguna izin untuk mencantumkan semua objek di bucket. Contoh kebijakan berikut memberikan semua pengguna izin hanya untuk mencantumkan semua objek di bucket bernama examplebucket.

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

Contoh 4: Memberikan Pengguna RAM tertentu izin untuk melihat informasi tentang bucket dan mencantumkan semua objek di bucket

Jika Anda ingin memberikan anggota tim atau mitra tertentu izin untuk melihat informasi tentang bucket dan mencantumkan semua objek di bucket, Anda dapat mengonfigurasi kebijakan bucket untuk memberikan izin tersebut kepada Pengguna RAM yang sesuai dengan anggota tersebut. Anda tidak perlu mengonfigurasi kebijakan akses untuk setiap Pengguna RAM. Contoh kebijakan berikut memberikan Pengguna RAM tertentu izin untuk melihat informasi tentang bucket bernama examplebucket dan mencantumkan objek di bucket tersebut.

Penting

Pada pernyataan Allow berikut, Pengguna RAM tidak diberikan izin untuk mencantumkan bucket. Oleh karena itu, Pengguna RAM tidak dapat melihat bucket atau masuk ke bucket yang diizinkan dari halaman Buckets di konsol OSS. Pengguna RAM dapat mengakses bucket dengan menambahkannya ke jalur favorit. Untuk informasi lebih lanjut, lihat Jalur akses OSS.

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

Contoh 5: Memberikan Peran RAM tertentu izin untuk membaca objek di bucket

Jika Pengguna RAM atau aplikasi memerlukan akses sementara ke objek di bucket Anda, Anda dapat membuat Peran RAM dan menetapkan izin yang diperlukan kepada Peran RAM tersebut. Pengguna RAM atau aplikasi dapat mengasumsikan Peran RAM untuk mendapatkan kredensial akses sementara yang dapat digunakan untuk mengakses objek di bucket Anda. Contoh kebijakan berikut memungkinkan dua Peran RAM dari Akun Alibaba Cloud untuk membaca semua objek di bucket bernama examplebucket. Satu Peran RAM hanya dapat mengakses objek di bucket dari sesi yang ditentukan, sedangkan yang lainnya dapat mengakses objek di bucket dari semua sesi.

Penting

Saat menggunakan kebijakan bucket untuk memberikan izin kepada Peran RAM, tentukan elemen Principal dalam format arn:sts::<uid>:assumed-role/<role-name>/<session-name>. Nilai dari<role-name>dan<session-name>bersifat peka huruf besar-kecil.

{
    "Version": "1",
    "Statement": [
        {
            "Action": [
                "oss:GetObject"
            ],
            "Effect": "Allow",
            "Principal": [
                "arn:sts::10323xxxxx72056:assumed-role/okrole/sessiontest",
                "arn:sts::10323xxxxx72056:assumed-role/secondrole/*"
            ],
            "Resource": [
                "acs:oss:*:1032xxxxx672056:examplebucket/*"
            ]
        }
    ]
}

Contoh 6: Membatasi akses ke VPC tertentu

Jika Anda ingin mengizinkan akses ke bucket hanya dari virtual private cloud (VPC) tertentu, Anda dapat menentukan parameter acs:SourceVpc sebagai kondisi dan menambahkan pernyataan Deny ke kebijakan bucket untuk menolak permintaan dari VPC lain dan Internet. Permintaan dari VPC lain dan Internet ditolak karena tidak cocok dengan ID VPC yang ditentukan. Contoh kebijakan berikut menolak semua permintaan membaca objek di bucket bernama examplebucket dari semua sumber selain VPC yang diidentifikasi oleh ID t4nlw426y44rd3iq4xxxx.

Penting
  • Pada pernyataan Deny berikut, elemen Principal disetel ke tanda asterisk (*) dan elemen Condition ditentukan. Dalam hal ini, pernyataan Deny berlaku untuk semua pengguna, termasuk pemilik bucket. Jika pemilik bucket memulai permintaan untuk membaca objek di bucket menggunakan VPC selain t4nlw426y44rd3iq4xxxx atau Internet, permintaan tersebut juga ditolak.

  • Pernyataan Deny berikut hanya digunakan untuk menolak akses. Jika principal tidak diberikan izin akses, Anda dapat menambahkan pernyataan Allow.

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

Contoh 7: Mengizinkan akses hanya dari alamat IP publik tertentu

Jika Anda ingin mengizinkan akses ke bucket hanya dari alamat IP publik tertentu, Anda dapat menentukan parameter acs:SourceIp sebagai kondisi dan menambahkan pernyataan Deny ke kebijakan bucket untuk menolak permintaan dari VPC dan alamat IP publik lainnya. Permintaan dari alamat IP publik lainnya dan VPC ditolak karena tidak cocok dengan alamat IP publik yang ditentukan. Contoh kebijakan berikut menolak permintaan untuk membaca objek di bucket bernama examplebucket dari pengguna yang tidak menggunakan alamat IP publik 203.0.113.5.

Penting
  • Pada pernyataan Deny berikut, elemen Principal disetel ke tanda asterisk (*) dan elemen Condition ditentukan. Dalam hal ini, pernyataan Deny berlaku untuk semua pengguna, termasuk pemilik bucket. Jika pemilik bucket memulai permintaan untuk membaca objek di bucket menggunakan alamat IP publik selain 203.0.113.5, permintaan tersebut juga ditolak.

  • Pernyataan Deny berikut hanya digunakan untuk menolak akses. Jika principal tidak diberikan izin akses, Anda dapat menambahkan pernyataan Allow.

{
    "Version":"1",
    "Statement":[
        {
            "Effect":"Deny",
            "Action":[
                "oss:GetObject"
            ],
            "Principal":[
                "*"
            ],
            "Resource":[
                "acs:oss:*:174649585760xxxx:examplebucket/*"
            ],
            "Condition":{
                "NotIpAddress":{
                    "acs:SourceIp":[
                        "203.0.113.5"
                    ]
                }
            }
        }
    ]
}

Contoh 8: Mengizinkan akses hanya dari blok CIDR tertentu dari VPC

Jika Anda ingin mengizinkan akses ke bucket hanya dari blok CIDR tertentu dari VPC, Anda dapat menambahkan pernyataan Deny berikut ke kebijakan bucket:

  • Tentukan parameter acs:SourceVpc sebagai kondisi dan tambahkan pernyataan Deny ke kebijakan bucket untuk menolak permintaan dari VPC lain dan Internet. Permintaan dari VPC lain dan Internet ditolak karena tidak cocok dengan blok CIDR yang ditentukan.

  • Tentukan parameter acs:SourceIp dan acs:SourceVpc sebagai kondisi dan tambahkan pernyataan Deny ke kebijakan bucket untuk menolak permintaan dari blok CIDR selain yang ditentukan.

Setelah Anda menambahkan pernyataan Deny sebelumnya ke kebijakan bucket, akses ditolak jika salah satu kondisi terpenuhi. Contoh kebijakan berikut menolak permintaan untuk membaca objek di bucket bernama examplebucket kecuali untuk permintaan dari blok CIDR 192.168.0.0/16 dari VPC t4nlw426y44rd3iq4xxxx.

Penting
  • Pada pernyataan Deny berikut, elemen Principal disetel ke tanda asterisk (*) dan elemen Condition ditentukan. Dalam hal ini, pernyataan Deny berlaku untuk semua pengguna, termasuk pemilik bucket. Jika pemilik bucket memulai permintaan untuk membaca objek di bucket menggunakan blok CIDR selain 192.168.0.0/16, permintaan tersebut juga ditolak.

  • Pernyataan Deny berikut hanya digunakan untuk menolak akses. Jika principal tidak diberikan izin akses, Anda dapat menambahkan pernyataan Allow.

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

Contoh 9: Mengizinkan akses hanya dari alamat IP publik tertentu atau VPC

Jika Anda ingin mengizinkan akses ke bucket hanya dari alamat IP publik tertentu atau VPC, Anda dapat menambahkan pernyataan Deny berikut ke kebijakan bucket:

  • Tentukan parameter acs:SourceIp sebagai kondisi dan tambahkan pernyataan Deny ke kebijakan bucket untuk menolak permintaan dari alamat IP publik lainnya. Sementara itu, tentukan parameter acs:SourceVpc dan operator StringNotLike untuk mencegah permintaan dari VPC yang ditentukan ditolak.

  • Tentukan parameter acs: SourceVpc sebagai kondisi dan tambahkan pernyataan Deny ke kebijakan bucket untuk menolak permintaan dari VPC lain. Sementara itu, tentukan parameter acs:SourceVpc dan operator StringLike untuk mencegah permintaan dari VPC selain VPC yang ditentukan ditolak.

Setelah Anda menambahkan dua pernyataan Deny sebelumnya ke kebijakan bucket, akses ditolak jika salah satu kondisi sebelumnya terpenuhi. Contoh kebijakan berikut menolak semua pengguna kecuali pengguna dengan alamat IP 203.0.113.5 atau pengguna dengan ID VPC t4nlw426y44rd3iq4xxxx untuk membaca file dari bucket tujuan examplebucket.

Penting
  • Pada pernyataan Deny berikut, elemen Principal disetel ke tanda asterisk (*) dan elemen Condition ditentukan. Dalam hal ini, pernyataan Deny berlaku untuk semua pengguna, termasuk pemilik bucket. Jika pemilik bucket memulai permintaan untuk membaca objek di bucket menggunakan alamat IP publik atau VPC selain 203.0.113.5 dan t4nlw426y44rd3iq4xxxx, permintaan tersebut juga ditolak.

  • Pernyataan Deny berikut hanya digunakan untuk menolak akses. Jika principal tidak diberikan izin akses, Anda dapat menambahkan pernyataan Allow.

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

Contoh 10: Membatasi akses berbasis API kepada pengguna yang menggunakan kredensial akses sementara

Jika Anda ingin membatasi akses berbasis API kepada pengguna yang menggunakan kredensial akses sementara, Anda dapat menentukan acs:AccessId sebagai kondisi dan menambahkan pernyataan Deny ke kebijakan bucket untuk memblokir akses menggunakan kredensial akses non-sementara seperti Pasangan Kunci Akses Akun Alibaba Cloud atau Pengguna RAM. Permintaan akses yang menggunakan kredensial akses non-sementara memicu pernyataan Deny. Contoh kebijakan berikut menolak permintaan membaca dan mencantumkan objek di bucket bernama examplebucket kecuali untuk permintaan membaca dan mencantumkan dari pengguna yang menggunakan kredensial akses sementara.

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

Contoh 11: Mencegah akses publik dengan membatasi ACL bucket dan objek

Untuk melindungi data Anda dari akses yang tidak sah, Anda dapat mengonfigurasi dua pernyataan Deny untuk mencegah akses publik berbasis ACL.

  • Gunakan kunci kondisi oss:x-oss-acl untuk membuat pernyataan Deny yang membatasi ACL bucket hanya untuk akses pribadi. Setiap upaya untuk mengonfigurasi izin baca-publik atau baca-tulis publik akan ditolak.

  • Gunakan kunci kondisi oss:x-oss-object-acl untuk membuat pernyataan Deny yang membatasi ACL objek ke private dan default.

Menambahkan dua pernyataan deny di atas ke dalam kebijakan bucket memastikan bahwa permintaan apa pun yang sesuai dengan salah satu kondisi tersebut akan ditolak. Contoh di bawah ini mencegah pengaturan akses publik pada examplebucket.

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

Referensi

  • Untuk informasi lebih lanjut tentang elemen kebijakan bucket, lihat Kebijakan RAM.

  • Untuk informasi lebih lanjut tentang cara mengonfigurasi kebijakan bucket, lihat Kebijakan Bucket.

  • Untuk informasi lebih lanjut tentang cara memberikan izin tertentu kepada pengguna lain untuk mengakses sumber daya OSS, lihat Otorisasi.