All Products
Search
Document Center

Object Storage Service:Kontrol akses OSS dengan kebijakan RAM

Last Updated:May 01, 2026

Topik ini menggunakan skenario perusahaan untuk menjelaskan cara mengonfigurasi otorisasi detail halus untuk bucket, direktori, dan objek OSS. Anda akan mempelajari bagaimana model penyimpanan flat OSS dan daftar berbasis awalan memengaruhi konfigurasi kebijakan, serta cara memberikan izin tingkat direktori tertentu 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 dari kunci objek dan delimiter (/) untuk mensimulasikan hierarki folder. Fitur ini memungkinkan Anda mengelompokkan, mengklasifikasikan, dan mengelola file.

Untuk bucket examplebucket, struktur direktori yang ditampilkan di Konsol dan Object Keys yang sesuai adalah sebagai 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 /. Inilah cara OSS mengenalinya sebagai 'direktori'. Dalam sistem penyimpanan aktual, semua objek, termasuk objek direktori, disimpan dalam struktur flat.

Karena OSS tidak memiliki hierarki direktori sebenarnya, ketika Anda memberikan akses ke suatu 'direktori', Anda sebenarnya 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

Target operasi yang berbeda memerlukan permintaan API dan konfigurasi Resource yang berbeda. Memahami perbedaan ini sangat penting untuk mengonfigurasi kebijakan secara tepat.

Mekanisme permintaan ListObjects

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

Parameter

Deskripsi

Nilai contoh

prefix

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

Development/

delimiter

Karakter untuk mengelompokkan objek, biasanya /.

/

Ketika pengguna mengklik folder Development/ di Konsol, Konsol mengirim 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.

Konfigurasi Resource

Target operasi

API yang dipicu

Konfigurasi Resource

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 mengacu pada bucket itu sendiri, bukan path tertentu, dan kondisi oss:Prefix membatasi cakupan objek yang dapat didaftar.

Baca dan Tulis Konten File

GetObject, PutObject

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

Resource dapat ditentukan hingga ke path tertentu dan mendukung wildcard *.

Akses melalui Konsol vs. API/SDK

Ketika Anda mengakses OSS menggunakan Konsol, Anda harus menavigasi dari daftar bucket ke direktori target. Hal ini memerlukan lebih banyak izin dibandingkan melakukan panggilan API atau SDK secara langsung.

Metode akses

Izin yang diperlukan

API/SDK

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

Console

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

Skenario

Asumsikan bahwa ACL baca/tulis default untuk semua file dalam 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 adalah sebagai berikut:

Pengguna/grup pengguna RAM

Target otorisasi

Jenis izin

RAM user Anne

Folder Development/ dan semua file di dalamnya

Baca-tulis

RAM user Leo

Folder Marketing/ dan semua file di dalamnya

Read-only

Semua anggota grup pengguna tertentu

Direktori Private/ dan semua file di dalamnya

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 pengguna RAM 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

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

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

  2. Izin baca/tulis: Mengizinkan pengguna membaca dan mengunggah file di direktori Development/ (oss:GetObject, oss:PutObject). Resource diatur ke examplebucket/Development/*.

Buat dan sambungkan kebijakan

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

  2. Pada 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 untuk mendaftar objek dengan bucket itu sendiri sebagai Resource, dan menggunakan kondisi oss:Prefix dalam blok Condition untuk membatasi daftar hanya pada direktori Development dan subdirektorinya.

    • Pernyataan kedua: Memberikan izin baca dan tulis, dengan Resource ditentukan sebagai semua objek di path Development/*.

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

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

Langkah 4: Berikan akses read-only ke direktori Marketing

Ikuti prosedur pada Langkah 3 untuk membuat dan menyambungkan kebijakan read-only untuk pengguna RAM Leo. Kebijakan ini mirip dengan kebijakan baca/tulis, tetapi elemen Action hanya mencakup operasi terkait baca. Dokumen 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/*"
    }
  ]
}

Jika oss:PutObject dihapus dari Action, Leo hanya dapat membaca file tetapi tidak dapat mengunggah atau mengubahnya.

Langkah 5: Tolak akses ke direktori Private

Kelola izin secara terpusat dengan menambahkan pengguna RAM yang ingin dicegah mengakses folder Private/ ke grup pengguna yang sama, lalu konfigurasikan kebijakan tolak untuk grup pengguna tersebut.

Catatan

Metode ini hanya berlaku untuk pengguna RAM yang merupakan anggota grup pengguna. Untuk menerapkan aturan ini bagi semua pengguna RAM di akun Anda, termasuk yang dibuat di masa depan, kami menyarankan Anda mengonfigurasi kebijakan tolak di sisi resource dengan bucket policy.

Buat grup pengguna dan tambahkan anggota

  1. Buka daftar grup 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 dalam grup pengguna tersebut.

Buat dan sambungkan kebijakan tolak

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

  2. Pada 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 semua file di bawah path Private/.

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

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

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

Ketika pengguna RAM dalam grup pengguna mencoba mengakses folder Private/ dengan mendaftar atau mengunduh file, OSS mengembalikan tanggapan error permission denied.

Dokumen terkait