Topik ini menjelaskan cara mengelola izin akses file.
Informasi latar belakang
File mendukung empat jenis daftar kontrol akses (ACL) berikut:
Access permission | Description | ACL value |
Inherit from bucket | File mewarisi ACL dari bucket. | oss2.OBJECT_ACL_DEFAULT |
Private | Hanya pemilik file dan pengguna yang berwenang yang memiliki izin baca dan tulis pada file tersebut. Pengguna lain tidak dapat mengakses file tersebut. | oss2.OBJECT_ACL_PRIVATE |
Public-read | Pemilik file dan pengguna yang berwenang memiliki izin baca dan tulis pada file tersebut. Pengguna lain hanya memiliki izin baca pada file tersebut. Gunakan izin ini dengan hati-hati. | oss2.OBJECT_ACL_PUBLIC_READ |
Public-read-write | Semua pengguna memiliki izin baca dan tulis pada file tersebut. Gunakan izin ini dengan hati-hati. | oss2.OBJECT_ACL_PUBLIC_READ_WRITE |
ACL suatu file memiliki prioritas lebih tinggi daripada ACL bucket. Misalnya, jika sebuah bucket bersifat private tetapi file di dalamnya memiliki izin public-read-write, semua pengguna memiliki izin baca dan tulis terhadap file tersebut. Jika suatu file tidak memiliki ACL, file tersebut akan mewarisi ACL dari bucket.
Catatan penggunaan
Pada topik ini, digunakan titik akhir publik wilayah China (Hangzhou). Jika Anda ingin mengakses OSS dari layanan Alibaba Cloud lainnya yang berada di wilayah yang sama dengan OSS, gunakan titik akhir internal. Untuk informasi selengkapnya mengenai wilayah dan titik akhir OSS, lihat Regions and endpoints.
Pada topik ini, kredensial akses diperoleh dari variabel lingkungan. Untuk informasi selengkapnya mengenai cara mengonfigurasi kredensial akses, lihat Configure access credentials using OSS SDK for Python 1.0.
Pada topik ini, instans OSSClient dibuat menggunakan titik akhir OSS. Jika Anda ingin membuat instans OSSClient menggunakan nama domain kustom atau Security Token Service (STS), lihat Initialization.
Untuk mengonfigurasi ACL suatu objek, Anda harus memiliki izin
oss:PutObjectAcl. Untuk menanyakan ACL suatu objek, Anda harus memiliki izinoss:GetObjectAcl. Untuk informasi selengkapnya, lihat Attach a custom policy to a RAM user.
Menetapkan izin akses file
Kode berikut memberikan contoh cara menetapkan ACL suatu objek:
# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
# Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
# Tentukan Endpoint untuk wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur Endpoint ke https://oss-cn-hangzhou.aliyuncs.com.
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
# Tentukan wilayah tempat bucket berada, seperti cn-hangzhou. Perhatikan bahwa parameter ini wajib untuk tanda tangan V4.
region = "cn-hangzhou"
# Ganti yourBucketName dengan nama bucket Anda.
bucket = oss2.Bucket(auth, endpoint, "yourBucketName", region=region)
# Ganti yourObjectName dengan path lengkap objek. Path lengkap tidak boleh mengandung nama bucket.
bucket.put_object_acl('yourObjectName', oss2.OBJECT_ACL_PUBLIC_READ)Mendapatkan izin akses file
Kode berikut memberikan contoh cara menanyakan ACL suatu objek:
# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
# Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
# Tentukan Endpoint untuk wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur Endpoint ke https://oss-cn-hangzhou.aliyuncs.com.
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
# Tentukan wilayah tempat bucket berada, seperti cn-hangzhou. Perhatikan bahwa parameter ini wajib untuk tanda tangan V4.
region = "cn-hangzhou"
# Ganti yourBucketName dengan nama bucket Anda.
bucket = oss2.Bucket(auth, endpoint, "yourBucketName", region=region)
# Ganti yourObjectName dengan path lengkap objek. Path lengkap tidak boleh mengandung nama bucket.
print(bucket.get_object_acl('yourObjectName').acl)Referensi
Untuk informasi selengkapnya mengenai operasi API untuk menetapkan izin akses file, lihat PutObjectACL.
Untuk informasi selengkapnya mengenai operasi API untuk mengambil izin akses file, lihat GetObjectACL.