All Products
Search
Document Center

Object Storage Service:Kontrol akses OSS dengan kebijakan RAM

Last Updated:Sep 03, 2026

Konfigurasikan kontrol akses detail halus untuk bucket, direktori, dan objek OSS menggunakan kebijakan RAM. Pelajari bagaimana model penyimpanan flat dan daftar berbasis awalan memengaruhi desain kebijakan, serta cara memberikan izin tingkat direktori kepada pengguna RAM yang berbeda.

Struktur penyimpanan dan otorisasi

Model penyimpanan OSS

OSS menggunakan model penyimpanan flat untuk menyimpan objek sebagai pasangan kunci-nilai. Semua objek langsung termasuk dalam suatu bucket, dan tidak ada hierarki direktori fisik. 'Direktori' yang ditampilkan di Konsol dibuat dengan menggunakan awalan kunci objek dan delimiter (/) untuk mensimulasikan hierarki folder.

Untuk bucket examplebucket, Konsol menampilkan struktur direktori dan kunci objek berikut:

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

Kunci objek direktori diakhiri dengan /. OSS menggunakan akhiran ini untuk mengidentifikasi direktori. Di dalam penyimpanan, semua objek, termasuk objek direktori, disimpan secara flat.

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

Perbedaan permintaan bucket, direktori, dan objek

Operasi yang berbeda memerlukan permintaan API dan konfigurasi Resource yang berbeda.

Mekanisme permintaan ListObjects

Konsol menampilkan struktur menyerupai direktori dengan menggunakan dua parameter dari operasi API GetBucket (ListObjects):

Parameter

Deskripsi

Nilai contoh

prefix

Membatasi respons hanya mencakup objek yang kuncinya dimulai dengan awalan yang ditentukan.

Development/

delimiter

Karakter untuk mengelompokkan objek, biasanya /.

/

Mengklik folder Development/ di 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 delimiter=/ ditentukan, OSS mengembalikan subdirektori (seperti Development/SubFolder/) sebagai CommonPrefixes alih-alih mencantumkan semua file di dalamnya.

Resource konfigurasi

Target operasi

API yang dipicu

Resource konfigurasi

Poin konfigurasi kebijakan

Daftar direktori root bucket

ListObjects, prefix kosong, delimiter /

acs:oss:*:*:examplebucket

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

Masuk ke direktori

ListObjects, dengan prefix folder_name/ dan delimiter /

acs:oss:*:*:examplebucket

Resource merujuk ke bucket, bukan ke path. Kondisi oss:Prefix membatasi cakupan yang dapat didaftar.

Baca dan tulis konten file

GetObject, PutObject

acs:oss:*:*:examplebucket/directory_name/*

Resource dapat ditentukan hingga ke path dan mendukung wildcard *.

Akses Konsol vs. API/SDK

Akses melalui Konsol memerlukan navigasi dari daftar bucket ke direktori target, sehingga membutuhkan lebih banyak izin dibandingkan panggilan API atau SDK langsung.

Metode akses

Izin yang diperlukan

API/SDK

Hanya diperlukan izin resource target, seperti oss:GetObject.

Konsol

Izin resource target ditambah izin tambahan seperti oss:ListBuckets (daftar bucket) dan oss:GetBucketInfo (tampilkan detail bucket).

Skenario

Asumsikan bahwa ACL baca/tulis default untuk semua file di bucket examplebucket bersifat private. Struktur bucket adalah sebagai berikut:

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

Tujuan kontrol akses:

RAM user/kelompok pengguna

Target otorisasi

Jenis izin

RAM user Anne

Folder Development/ dan semua file-nya

Baca-tulis

RAM user Leo

Folder Marketing/ dan semua file-nya

Read-only

Semua anggota kelompok pengguna tertentu

Direktori Private/ dan semua file-nya

Tolak akses

Langkah 1: Buat bucket dan unggah objek

  1. Buka Daftar Bucket dan klik Create Bucket, misalnya examplebucket.

  2. Di dalam bucket, klik Create Directory untuk membuat direktori: Development, Marketing, dan Private (serta buat subdirektori 2017 di bawah Private).

  3. Klik Upload Object untuk mengunggah objek ke path berikut:

    • Direktori root: oss-dg.pdf

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

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

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

Langkah 2: Buat RAM user Anne dan Leo

Buka halaman Users di Konsol RAM dan klik Create User untuk membuat pengguna Anne dan Leo.

Langkah 3: Berikan akses baca-tulis ke direktori Development

Desain kebijakan

Akses baca/tulis ke Development/ memerlukan dua jenis izin:

  1. Izin daftar: Daftar objek di Development/ (oss:ListObjects), dengan Condition yang membatasi daftar hanya pada awalan Development.

  2. Izin baca/tulis: Baca dan unggah file di Development/ (oss:GetObject, oss:PutObject), dengan Resource diatur ke examplebucket/Development/*.

Buat dan sambungkan kebijakan

  1. Buka halaman Policies di Konsol RAM dan klik Create Policy.

  2. Di tab JSON, masukkan dokumen 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, menggunakan Condition dengan oss:Prefix untuk membatasi daftar hanya pada direktori Development dan subdirektorinya.

    • Pernyataan kedua: Memberikan akses baca/tulis ke semua objek di bawah Development/*.

  3. Klik OK, masukkan Policy Name (misalnya AllowAnneAccessDevelopment), lalu klik OK untuk menyelesaikan pembuatan.

  4. Buka halaman Users, temukan pengguna RAM Anne, dan klik add permissions untuk menyambungkan kebijakan yang baru dibuat.

Langkah 4: Berikan akses read-only ke direktori Marketing

Buat dan sambungkan kebijakan read-only untuk pengguna RAM Leo dengan prosedur yang sama seperti Langkah 3. Kebijakan ini hanya mencakup operasi baca di Action:

{
  "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/*"
    }
  ]
}

Karena oss:PutObject tidak termasuk dalam Action, Leo dapat membaca file tetapi tidak dapat mengunggah atau mengubahnya.

Langkah 5: Tolak akses ke direktori Private

Tambahkan pengguna RAM yang tidak boleh mengakses folder Private/ ke kelompok pengguna, lalu sambungkan kebijakan deny ke kelompok tersebut.

Catatan

Ini hanya berlaku untuk anggota kelompok. Untuk menolak akses bagi semua pengguna RAM di akun Anda, termasuk yang akan dibuat di masa depan, gunakan bucket policy sebagai gantinya.

Buat kelompok pengguna dan tambahkan anggota

  1. Buka daftar kelompok pengguna RAM dan klik Create User Group (misalnya DenyPrivateAccessGroup).

  2. Klik Add Group Members, lalu tambahkan pengguna RAM yang perlu ditolak aksesnya ke folder Private/ ke kelompok pengguna tersebut.

Buat dan sambungkan kebijakan deny

  1. Buka halaman Policies di Konsol RAM dan klik Create Policy.

  2. Di tab JSON, masukkan dokumen 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 di bawah Private/.

    • Pernyataan kedua: Menolak daftar isi Private/, mencegah pengguna melihat daftar file.

  3. Klik OK, masukkan Policy Name (misalnya DenyAccessPrivateFolder), lalu klik OK untuk menyelesaikan pembuatan.

  4. Buka halaman Groups, temukan kelompok pengguna tersebut, dan klik add permissions untuk menyambungkan kebijakan yang baru saja dibuat.

Jika anggota kelompok mencoba mendaftar atau mengunduh file di folder Private/, OSS akan mengembalikan error permission denied.

Dokumen terkait