全部产品
Search
文档中心

Object Storage Service:Kontrol akses ke OSS menggunakan kebijakan RAM

更新时间:Jan 22, 2026

Tutorial ini menggunakan skenario bisnis untuk menunjukkan cara mengonfigurasi izin akses detail halus untuk bucket, folder, dan file OSS. Anda akan mempelajari bagaimana struktur penyimpanan flat dan mekanisme daftar berbasis awalan (prefix listing) di OSS memengaruhi konfigurasi kebijakan, serta cara memberikan izin akses tingkat folder—read/write, read-only, dan deny—kepada Pengguna Resource Access Management (RAM) yang berbeda.

Struktur penyimpanan dan otorisasi

Model penyimpanan OSS

OSS menggunakan model penyimpanan flat yang menyimpan objek sebagai pasangan kunci-nilai secara langsung di dalam bucket. Tidak ada hierarki direktori fisik. Folder yang Anda lihat di Konsol disimulasikan menggunakan awalan kunci objek dan pemisah (/), sehingga memungkinkan pengelompokan, klasifikasi, dan pengelolaan objek.

Untuk bucket examplebucket, struktur folder dan kunci objek yang sesuai ditampilkan di Konsol sebagai berikut:

examplebucket
├── Development/                     # Key: Development/ (folder object)
│   ├── Alibaba Cloud.pdf            # Key: Development/Alibaba Cloud.pdf
│   ├── ProjectA.docx                # Key: Development/ProjectA.docx
│   └── ProjectB.docx                # Key: Development/ProjectB.docx
├── Marketing/                       # Key: Marketing/ (folder object)
│   ├── data2020.xlsx                # Key: Marketing/data2020.xlsx
│   └── data2021.xlsx                # Key: Marketing/data2021.xlsx
├── Private/                         # Key: Private/ (folder object)
│   └── 2017/                        # Key: Private/2017/ (folder object)
│       ├── images.zip               # Key: Private/2017/images.zip
│       └── promote.pptx             # Key: Private/2017/promote.pptx
└── oss-dg.pdf                       # Key: oss-dg.pdf

Kunci objek folder diakhiri dengan /. OSS menggunakan karakter ini sebagai penanda untuk mengidentifikasi objek tersebut sebagai folder. Namun, semua objek—termasuk objek folder—disimpan dalam struktur flat.

Karena OSS tidak memiliki hierarki direktori nyata, pemberian akses ke suatu folder sebenarnya berarti memberikan akses ke semua objek yang memiliki awalan tertentu. Misalnya, memberikan akses ke folder Development/ setara dengan memberikan akses ke semua objek yang kuncinya dimulai dengan Development/.

Perbedaan permintaan untuk bucket, folder, dan file

Operasi pada target berbeda—seperti bucket, folder, dan file—berkorespondensi dengan permintaan API dan konfigurasi Resource yang berbeda. Pemahaman perbedaan ini penting untuk mengonfigurasi kebijakan akses secara tepat.

Mekanisme permintaan ListObjects

Penampilan struktur folder di daftar file Konsol bergantung pada dua parameter inti dari operasi API GetBucket (ListObjects):

Parameter

Fungsi

Nilai contoh

prefix

Membatasi objek yang dikembalikan hanya pada objek yang kuncinya dimulai dengan awalan ini.

Development/

delimiter

Karakter yang digunakan untuk mengelompokkan objek. Biasanya /.

/

Ketika pengguna mengklik folder Development/ di Konsol, Konsol mengirimkan permintaan berikut ke OSS:

GET /?prefix=Development/&delimiter=/ HTTP/1.1
Host: examplebucket.oss-cn-hangzhou.aliyuncs.com

OSS mengembalikan semua objek yang dimulai dengan Development/. Karena parameter delimiter=/ ditentukan, OSS mengembalikan subfolder seperti Development/SubFolder/ sebagai CommonPrefixes alih-alih mencantumkan semua file di dalamnya.

Konfigurasi Resource untuk operasi berbeda

Target operasi

API yang dipicu

Konfigurasi Sumber Daya

Poin penting untuk konfigurasi kebijakan

Daftar direktori root bucket

ListObjects, dengan prefix kosong dan / sebagai delimiter

acs:oss:*:*:examplebucket

Elemen Resource mengarah ke bucket itu sendiri, bukan ke path tertentu.

Masuk ke folder

ListObjects, dengan prefix diatur ke foldername/ dan delimiter diatur ke /

acs:oss:*:*:examplebucket

Elemen Resource mengarah ke bucket itu sendiri, bukan ke path tertentu. Rentang yang dapat didaftar dibatasi oleh kondisi oss:Prefix.

Baca atau tulis konten file

GetObject, PutObject

acs:oss:*:*:examplebucket/foldername/*

Elemen Resource dapat menentukan path dan mendukung karakter wildcard *.

Perbedaan antara akses melalui Konsol dan API/SDK

Mengakses OSS melalui Konsol memerlukan lebih banyak izin dibandingkan akses langsung menggunakan API atau SDK karena pengguna perlu menavigasi dari daftar bucket hingga ke folder target.

Metode akses

Izin yang diperlukan

API/SDK

Hanya diperlukan izin untuk operasi resource target, seperti oss:GetObject.

Konsol

Selain izin pada resource target, diperlukan juga izin tambahan seperti oss:ListBuckets (untuk menampilkan daftar bucket) dan oss:GetBucketInfo (untuk menampilkan informasi bucket).

Skenario

Asumsikan bahwa daftar kontrol akses (ACL) untuk semua objek di bucket examplebucket diatur ke private secara default. Struktur bucket adalah sebagai berikut:

examplebucket
├── Development/           # Folder departemen Development
│   ├── Alibaba Cloud.pdf
│   ├── ProjectA.docx
│   └── ProjectB.docx
├── Marketing/             # Folder departemen Marketing
│   ├── data2020.xlsx
│   └── data2021.xlsx
├── Private/               # Folder rahasia
│   └── 2017/
│       ├── images.zip
│       └── promote.pptx
└── oss-dg.pdf

Tujuan kontrol akses adalah sebagai berikut:

Pengguna RAM/Kelompok pengguna

Target otorisasi

Jenis izin

RAM user Anne

Folder Development/ dan semua file di dalamnya

Izin baca dan tulis

RAM user Leo

Folder Marketing/ dan semua file di dalamnya

Izin read-only

Semua anggota kelompok pengguna tertentu

Folder Private/ dan semua file di dalamnya

Akses ditolak

Langkah 1: Buat bucket dan unggah file

  1. Buka halaman Daftar Bucket dan klik Create Bucket. Beri nama bucket tersebut examplebucket.

  2. Di dalam bucket, klik Create Folder untuk membuat folder Development, Marketing, dan Private. Lalu, buat subfolder 2017 di dalam folder Private.

  3. Klik Upload File dan unggah file ke path berikut:

    • Direktori root: oss-dg.pdf

    • Folder Development/: Alibaba Cloud.pdf, ProjectA.docx, ProjectB.docx

    • Folder Marketing/: data2020.xlsx, data2021.xlsx

    • Folder Private/2017/: images.zip, promote.pptx

Langkah 2: Buat pengguna RAM Anne dan Leo

Buka halaman Daftar Pengguna dan klik Create User. Buat pengguna Anne dan Leo.

Langkah 3: Berikan izin baca dan tulis kepada Anne untuk folder Development

Pendekatan desain kebijakan

Untuk memberikan akses baca dan tulis ke folder Development/, Anda perlu memberikan dua jenis izin:

  1. Izin daftar: Mengizinkan pengguna untuk mendaftar objek di folder Development/ (oss:ListObjects). Sebuah Condition membatasi daftar hanya pada objek yang dimulai dengan awalan Development.

  2. Izin baca dan tulis: Memberikan izin untuk membaca (oss:GetObject) dan mengunggah (oss:PutObject) file di folder Development/. Elemen Resource mengarah ke examplebucket/Development/*.

Buat dan berikan kebijakan

  1. Buka halaman Kebijakan RAM dan klik Create Policy.

  2. Pilih tab Script Editor dan masukkan konten kebijakan berikut:

    {
      "Version": "1",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": "oss:ListObjects",
          "Resource": "acs:oss:*:*:examplebucket",
          "Condition": {
            "StringLike": {
              "oss:Prefix": [
                "Development",
                "Development/*"
              ]
            }
          }
        },
        {
          "Effect": "Allow",
          "Action": [
            "oss:GetObject",
            "oss:PutObject",
            "oss:GetObjectAcl"
          ],
          "Resource": "acs:oss:*:*:examplebucket/Development/*"
        }
      ]
    }

    Analisis kebijakan:

    • Pernyataan Pertama: Memberikan izin daftar pada bucket. Condition dengan oss:Prefix membatasi daftar hanya pada konten di dalam folder Development dan subfoldernya.

    • Pernyataan Kedua: Memberikan izin baca dan tulis. Resource mengarah ke semua objek di path Development/*.

  3. Klik OK. Masukkan Policy Name, misalnya AllowAnneAccessDevelopment, lalu klik OK untuk membuat kebijakan.

  4. Buka halaman Daftar Pengguna. Temukan RAM user Anne, klik Add Permissions, lalu pilih kebijakan yang baru saja Anda buat.

Langkah 4: Berikan izin read-only kepada Leo untuk folder Marketing

Ikuti prosedur pada Langkah 3 untuk membuat dan memberikan kebijakan read-only kepada RAM user Leo. Satu-satunya perbedaan dari kebijakan baca/tulis adalah elemen Action hanya mencakup operasi terkait pembacaan. Konten kebijakan adalah sebagai berikut:

{
  "Version": "1",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "oss:ListObjects",
      "Resource": "acs:oss:*:*:examplebucket",
      "Condition": {
        "StringLike": {
          "oss:Prefix": [
            "Marketing",
            "Marketing/*"
          ]
        }
      }
    },
    {
      "Effect": "Allow",
      "Action": [
        "oss:GetObject",
        "oss:GetObjectAcl"
      ],
      "Resource": "acs:oss:*:*:examplebucket/Marketing/*"
    }
  ]
}

Aksi oss:PutObject dihapus. Leo hanya dapat membaca file tetapi tidak dapat mengunggah atau mengubahnya.

Langkah 5: Tolak akses kelompok pengguna tertentu ke folder Private

Anda dapat mengelola izin secara terpusat menggunakan kelompok pengguna. Tambahkan RAM user yang harus ditolak aksesnya ke folder Private/ ke dalam kelompok pengguna yang sama. Kemudian, sambungkan kebijakan deny ke kelompok tersebut.

Catatan

Metode ini hanya berlaku untuk RAM user yang merupakan anggota kelompok pengguna tersebut. Untuk menolak akses bagi semua RAM user di akun Anda, termasuk yang baru, Anda harus mengonfigurasi kebijakan deny pada bucket menggunakan bucket policy.

Buat kelompok pengguna dan tambahkan anggota

  1. Buka halaman Kelompok Pengguna RAM dan klik Create User Group. Misalnya, beri nama DenyPrivateAccessGroup.

  2. Klik Add Members dan tambahkan RAM user yang harus ditolak aksesnya ke folder Private/ ke dalam kelompok pengguna tersebut.

Buat dan berikan kebijakan deny

  1. Buka halaman Kebijakan RAM dan klik Create Policy.

  2. Pilih tab Script Editor dan masukkan konten kebijakan berikut:

    {
      "Version": "1",
      "Statement": [
        {
          "Effect": "Deny",
          "Action": "oss:*",
          "Resource": "acs:oss:*:*:examplebucket/Private/*"
        },
        {
          "Effect": "Deny",
          "Action": "oss:ListObjects",
          "Resource": "acs:oss:*:*:examplebucket",
          "Condition": {
            "StringLike": {
              "oss:Prefix": [
                "Private/",
                "Private/*"
              ]
            }
          }
        }
      ]
    }

    Analisis kebijakan:

    • Pernyataan Pertama: Menolak semua operasi pada objek apa pun di bawah path Private/.

    • Pernyataan Kedua: Menolak pencantuman isi folder Private/ untuk mencegah pengguna melihat daftar file.

  3. Klik OK. Masukkan Policy Name, misalnya DenyAccessPrivateFolder, lalu klik OK untuk membuat kebijakan.

  4. Buka halaman Kelompok Pengguna RAM. Pada kelompok pengguna tersebut, klik Add Permissions dan pilih kebijakan yang baru saja Anda buat.

Ketika RAM user dalam kelompok tersebut mencoba mengakses folder Private/, OSS akan mengembalikan error permission denied, baik saat mencoba melihat daftar maupun mengunduh file.

Referensi