Di OSS, Anda dapat mengatur izin akses untuk objek guna mengontrol cara objek tersebut diakses.
Catatan penggunaan
Saat menggunakan alat packaging seperti Webpack dan Browserify, instal OSS SDK untuk Browser.js dengan menjalankan perintah npm install ali-oss.
Jika Anda ingin mengakses bucket OSS dari browser tetapi tidak ada aturan CORS yang dikonfigurasi untuk bucket tersebut, browser akan menolak permintaan tersebut. Oleh karena itu, Anda harus mengonfigurasi aturan CORS untuk bucket jika ingin mengaksesnya dari browser. Untuk informasi selengkapnya, lihat Instalasi.
Dalam kebanyakan kasus, OSS SDK untuk Browser.js digunakan di browser. Untuk mencegah pasangan AccessKey Anda terekspos, kami menyarankan agar Anda menggunakan kredensial akses temporary yang diperoleh dari Security Token Service (STS) untuk mengakses OSS.
Kredensial akses temporary terdiri atas pasangan AccessKey dan token keamanan. Pasangan AccessKey terdiri atas ID AccessKey dan Rahasia AccessKey. Untuk informasi selengkapnya tentang cara memperoleh kredensial akses temporary, lihat Gunakan STS untuk otorisasi akses temporary.
Jenis izin baca/tulis
Objek memiliki empat jenis daftar kontrol akses (ACL) berikut:
Izin akses suatu objek memiliki prioritas lebih tinggi daripada izin akses bucket tempat objek tersebut berada. Misalnya, jika bucket bersifat private tetapi sebuah objek di dalamnya memiliki izin public-read, siapa pun—termasuk pengguna anonim—dapat membaca objek tersebut.
Jenis izin | Deskripsi | Nilai izin |
Inherit from bucket (default) | Jika objek tidak memiliki izin akses sendiri, objek tersebut mewarisi ACL bucket tempatnya berada. Objek memiliki izin yang sama dengan bucket tersebut. | default |
Private | Hanya pemilik objek yang dapat membaca dan menulis objek tersebut. Pengguna lain tidak dapat mengakses objek ini. | private |
Public-read | Hanya pemilik objek yang dapat menulis ke objek tersebut. Siapa pun, termasuk pengguna anonim, dapat membaca objek ini. Peringatan Setiap pengguna di Internet dapat mengakses objek ini. Hal ini berpotensi menyebabkan kebocoran data dan lonjakan biaya. Gunakan izin ini dengan hati-hati. | public-read |
Public-read-write | Siapa pun, termasuk pengguna anonim, dapat membaca dan menulis objek ini. Peringatan Setiap pengguna di Internet dapat mengakses objek ini dan menulis data ke dalamnya. Hal ini berpotensi menyebabkan kebocoran data dan lonjakan biaya. Jika pengguna jahat menulis informasi ilegal ke objek tersebut, hak dan kepentingan hukum Anda mungkin terganggu. Jangan konfigurasi izin public-read-write kecuali untuk skenario tertentu. | public-read-write |
Kode contoh
Saat Anda mengunggah objek, ACL-nya secara default mewarisi ACL bucket tempat objek tersebut berada. Anda dapat menggunakan putACL untuk mengubah ACL objek tersebut.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Document</title>
</head>
<body>
<script src="https://gosspublic.alicdn.com/aliyun-oss-sdk-6.18.0.min.js"></script>
<script>
const client = new OSS({
// Set region to the region where the bucket is located. For example, if the bucket is in the China (Hangzhou) region, set region to oss-cn-hangzhou.
region: "yourRegion",
authorizationV4: true,
// The temporary AccessKey pair (AccessKey ID and AccessKey secret) obtained from Security Token Service (STS).
accessKeyId: "yourAccessKeyId",
accessKeySecret: "yourAccessKeySecret",
// The security token (SecurityToken) obtained from STS.
stsToken: "yourSecurityToken",
// Specify the bucket name. For example, examplebucket.
bucket: "examplebucket",
});
async function getACL() {
try {
result = await client.getACL("examplefile.txt");
console.log(result.acl);
await client.putACL("examplefile.txt", "public-read");
result = await client.getACL("examplefile.txt");
console.log(result.acl);
} catch (e) {
console.log(e);
}
}
getACL();
</script>
</body>
</html>
Referensi
Untuk kode contoh lengkap mengenai izin akses objek, lihat contoh GitHub.
Untuk informasi selengkapnya tentang operasi API untuk mengatur izin akses objek, lihat PutObjectACL.
Untuk informasi selengkapnya tentang operasi API untuk mengambil izin akses objek, lihat GetObjectACL.