Topik ini menjelaskan cara menggunakan kredensial akses temporary yang disediakan oleh Security Token Service (STS) atau URL yang ditandatangani (pre-signed URL) untuk mengakses sementara sumber daya Object Storage Service (OSS).
Periode validitas harus ditentukan untuk kredensial akses temporary dan pre-signed URL. Saat Anda menggunakan kredensial akses temporary untuk menghasilkan pre-signed URL guna melakukan operasi seperti upload dan download objek, periode validitas minimum akan diutamakan. Misalnya, jika periode validitas kredensial akses temporary diatur menjadi 1.200 detik dan periode validitas pre-signed URL yang dihasilkan menggunakan kredensial tersebut diatur menjadi 3.600 detik, maka pre-signed URL tidak dapat digunakan untuk mengupload objek setelah kredensial akses temporary kedaluwarsa, meskipun pre-signed URL tersebut masih dalam periode validitasnya.
Catatan penggunaan
Pada topik ini, titik akhir publik wilayah China (Hangzhou) digunakan. 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 tentang wilayah dan titik akhir OSS, lihat Wilayah dan titik akhir.
Pada topik ini, instans OSSClient dibuat menggunakan titik akhir OSS. Jika Anda ingin membuat OSSClient menggunakan nama domain kustom atau Security Token Service (STS), lihat Buat instans OssClient.
Gunakan STS untuk mengotorisasi akses sementara
Anda dapat menggunakan Alibaba Cloud STS untuk mengotorisasi akses sementara ke OSS. STS adalah layanan web yang menyediakan token akses temporary bagi pengguna komputasi awan. Dengan STS, Anda dapat memberikan aplikasi pihak ketiga atau sub-pengguna kredensial akses temporary dengan periode validitas dan izin yang dapat dikustomisasi. Untuk informasi selengkapnya tentang STS, lihat Apa itu STS?.
STS memberikan manfaat berikut:
Anda hanya perlu menghasilkan token keamanan dan mengirim token akses tersebut ke aplikasi pihak ketiga, tanpa perlu memberikan pasangan AccessKey Anda. Anda dapat menentukan izin akses dan periode validitas token keamanan ini.
Token keamanan secara otomatis kedaluwarsa setelah periode validitas berakhir, sehingga Anda tidak perlu mencabut izin aksesnya secara manual.
Untuk mengakses OSS menggunakan kredensial akses temporary dari STS, lakukan langkah-langkah berikut:
Dapatkan kredensial akses temporary.
Kredensial akses temporary berisi token keamanan dan pasangan AccessKey temporary, yang terdiri dari ID AccessKey dan Rahasia AccessKey. Periode validitas kredensial akses temporary dinyatakan dalam satuan detik, dengan durasi minimum 900 detik dan maksimum sesuai dengan durasi sesi maksimum yang ditentukan untuk role saat ini. Untuk informasi selengkapnya, lihat Tentukan durasi sesi maksimum untuk RAM role.
Anda dapat menggunakan salah satu metode berikut untuk mendapatkan kredensial akses temporary:
Metode 1
Panggil operasi AssumeRole.
Metode 2
Gunakan SDK STS untuk mendapatkan kredensial akses temporary. Untuk informasi selengkapnya, lihat Ikhtisar SDK STS.
Gunakan kredensial akses temporary yang diperoleh dari STS untuk membuat permintaan yang ditandatangani.
#include <alibabacloud/oss/OssClient.h> using namespace AlibabaCloud::OSS; int main(void) { /* Inisialisasi informasi akun yang digunakan untuk mengakses OSS. */ /* Tentukan titik akhir wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur titik akhir ke https://oss-cn-hangzhou.aliyuncs.com. */ std::string Endpoint = "yourEndpoint"; /* Tentukan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur wilayah ke cn-hangzhou. */ std::string Region = "yourRegion"; /* Inisialisasi sumber daya, seperti sumber daya jaringan. */ InitializeSdk(); ClientConfiguration conf; conf.signatureVersion = SignatureVersionType::V4; /* Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh, pastikan variabel lingkungan OSS_ACCESS_KEY_ID, OSS_ACCESS_KEY_SECRET, dan OSS_SESSION_TOKEN telah dikonfigurasi. */ auto credentialsProvider = std::make_shared<EnvironmentVariableCredentialsProvider>(); OssClient client(Endpoint, credentialsProvider, conf); client.SetRegion(Region); /* Lepaskan sumber daya, seperti sumber daya jaringan. */ ShutdownSdk(); return 0; }
Gunakan pre-signed URL untuk mengotorisasi akses sementara
Catatan penggunaan
Saat Anda menggunakan SDK OSS untuk menghasilkan pre-signed URL, SDK OSS menggunakan algoritma tertentu berdasarkan informasi kunci yang disimpan di komputer lokal untuk menghitung signature dan menambahkannya ke URL guna memastikan validitas dan keamanan URL tersebut. Proses perhitungan dan penyusunan URL ini sepenuhnya dilakukan di sisi client, sehingga Anda tidak perlu mengirim permintaan ke server melalui jaringan. Oleh karena itu, Anda tidak perlu memberikan izin khusus kepada pemanggil saat menghasilkan pre-signed URL. Namun, agar pengguna pihak ketiga dapat melakukan operasi terkait pada sumber daya yang diotorisasi oleh pre-signed URL, principal yang memanggil operasi API untuk menghasilkan pre-signed URL tersebut harus memiliki izin yang sesuai.
Misalnya, jika principal ingin mengupload objek menggunakan pre-signed URL, Anda harus memberikan izin oss:PutObject kepada principal tersebut. Jika principal ingin mengunduh atau melihat pratinjau objek menggunakan pre-signed URL, Anda harus memberikan izin oss:GetObject kepada principal tersebut.
Anda dapat menghasilkan pre-signed URL dan memberikannya kepada pengunjung untuk akses sementara. Saat menghasilkan pre-signed URL, Anda dapat menentukan periode validitasnya untuk membatasi rentang waktu pengunjung dapat mengakses data tertentu.
Untuk menghasilkan pre-signed URL yang digunakan untuk mengakses sumber daya melalui HTTPS, atur protokol pada titik akhir ke HTTPS.
Pre-signed URL yang dihasilkan menggunakan kode contoh berikut mungkin berisi tanda plus (
+). Dalam hal ini, ganti tanda plus (+) dalam URL tersebut dengan%2B. Jika tidak, pre-signed URL tersebut mungkin tidak dapat digunakan untuk mengakses objek sebagaimana mestinya.