All Products
Search
Document Center

Object Storage Service:Gunakan pasangan AccessKey pengguna RAM untuk mengakses resource OSS

Last Updated:Mar 21, 2026

Menggunakan pasangan AccessKey pengguna RAM (Resource Access Management) untuk mengakses OSS lebih aman dibandingkan menggunakan kredensial akun root Alibaba Cloud Anda, karena Anda hanya memberikan izin yang benar-benar dibutuhkan oleh pengguna RAM tersebut.

Prasyarat

Sebelum memulai, pastikan Anda telah memiliki:

  • Akun Alibaba Cloud dengan akses administrator RAM

  • Bucket OSS untuk mengunggah objek

Langkah 1: Buat pengguna RAM

  1. Masuk ke Konsol RAM menggunakan Akun Alibaba Cloud Anda atau sebagai administrator RAM.

  2. Di panel navigasi sebelah kiri, pilih Identities > Users.

  3. Pada halaman Users, klik Create User.

  4. Pada bagian User Account Information, konfigurasikan bidang-bidang berikut:

    Catatan

    Untuk membuat beberapa pengguna RAM sekaligus, klik Add User.

    FieldDescription
    Logon NameMaksimal 64 karakter. Dapat berisi huruf, angka, titik (.), tanda hubung (-), dan garis bawah (_).
    Display NameMaksimal 128 karakter.
    TagKlik ikon edit dan masukkan kunci tag serta nilai tag. Tag membantu Anda mengkategorikan dan mengelola pengguna RAM.
  5. Pada bagian Access Mode, pilih Using permanent AccessKey to access, lalu klik OK.

  6. Klik Copy untuk menyimpan pasangan AccessKey.

    Penting

    Rahasia AccessKey hanya ditampilkan saat pasangan tersebut pertama kali dibuat. Rahasia tersebut tidak dapat diambil kembali di kemudian hari. Salin baik ID AccessKey maupun Rahasia AccessKey ke lokasi yang aman sekarang. Jika Anda kehilangan rahasia tersebut, Anda harus membuat pasangan AccessKey baru.

Langkah 2: Berikan izin kepada pengguna RAM untuk mengunggah objek

Buat kebijakan kustom

  1. Di panel navigasi sebelah kiri, pilih Permissions > Policies.

  2. Pada halaman Policies, klik Create Policy.

  3. Pada halaman Create Policy, klik tab JSON dan masukkan dokumen kebijakan berikut. Contoh ini memberikan izin oss:PutObject pada direktori exampledir di dalam examplebucket.

    Peringatan

    Contoh ini hanya sebagai referensi. Konfigurasikan kebijakan RAM detail halus sesuai kebutuhan aktual Anda untuk menghindari pemberian izin berlebihan. Untuk detailnya, lihat Contoh 9: Gunakan RAM atau STS untuk memberi otorisasi pengguna mengakses resource OSS.

       {
         "Version": "1",
         "Statement": [
           {
             "Effect": "Allow",
             "Action": "oss:PutObject",
             "Resource": "acs:oss:*:*:examplebucket/exampledir/*"
           }
         ]
       }
  4. Klik OK.

  5. Tetapkan Policy Name menjadi RamTestPolicy, lalu klik OK.

Sambungkan kebijakan ke pengguna RAM

  1. Di panel navigasi sebelah kiri, pilih Identities > Users.

  2. Pada halaman Users, temukan pengguna RAM tersebut dan klik Add Permissions di kolom Actions.

  3. Pada panel Grant Permission, klik tab Custom Policy, pilih RamTestPolicy, lalu klik OK.

Langkah 3: Unggah objek menggunakan pasangan AccessKey pengguna RAM

Contoh berikut mengunggah file lokal (examplefile.txt) ke exampledir/exampleobject.txt di dalam examplebucket, menggunakan Java SDK dengan Signature Version 4.

Atur variabel lingkungan

Atur pasangan AccessKey sebagai variabel lingkungan agar SDK memuat kredensial tanpa melakukan hardcoding di dalam kode Anda.

Linux/macOS:

setx OSS_ACCESS_KEY_ID "<your-accesskey-id>"
setx OSS_ACCESS_KEY_SECRET "<your-accesskey-secret>"

Windows (Command Prompt):

setx OSS_ACCESS_KEY_ID "<your-accesskey-id>"
setx OSS_ACCESS_KEY_SECRET "<your-accesskey-secret>"

Ganti <your-accesskey-id> dan <your-accesskey-secret> dengan nilai yang Anda salin pada Langkah 1.

Unggah objek

import com.aliyun.oss.*;
import com.aliyun.oss.common.auth.*;
import com.aliyun.oss.common.comm.SignVersion;
import com.aliyun.oss.model.PutObjectRequest;
import com.aliyun.oss.model.PutObjectResult;
import java.io.File;

public class Demo {

    public static void main(String[] args) throws Exception {
        // Titik akhir untuk wilayah China (Hangzhou). Ganti dengan titik akhir aktual Anda.
        String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
        // Muat kredensial dari variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET.
        EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
        // Nama bucket.
        String bucketName = "examplebucket";
        // Jalur lengkap objek di dalam bucket. Jangan sertakan nama bucket.
        String objectName = "exampledir/exampleobject.txt";
        // Jalur lengkap ke file lokal yang akan diunggah.
        String filePath = "D:\\localpath\\examplefile.txt";
        // Wilayah tempat bucket berada.
        String region = "cn-hangzhou";

        // Buat instans OSSClient dengan Signature Version 4.
        ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
        clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);
        OSS ossClient = OSSClientBuilder.create()
            .endpoint(endpoint)
            .credentialsProvider(credentialsProvider)
            .clientConfiguration(clientBuilderConfiguration)
            .region(region)
            .build();

        try {
            PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, objectName, new File(filePath));
            PutObjectResult result = ossClient.putObject(putObjectRequest);
        } catch (OSSException oe) {
            System.out.println("OSS menolak permintaan: " + oe.getErrorMessage());
            System.out.println("Kode Kesalahan:" + oe.getErrorCode());
            System.out.println("ID Permintaan:" + oe.getRequestId());
            System.out.println("Host ID:" + oe.getHostId());
        } catch (ClientException ce) {
            System.out.println("Kesalahan client (misalnya, masalah jaringan): " + ce.getMessage());
        } finally {
            if (ossClient != null) {
                ossClient.shutdown();
            }
        }
    }
}

Untuk contoh dalam bahasa lain, lihat:

FAQ

Di mana saya bisa melihat ID AccessKey saya? Apakah saya bisa mengambil kembali Rahasia AccessKey nanti?

Untuk melihat ID AccessKey pengguna RAM, lihat Lihat informasi pasangan AccessKey pengguna RAM.

Rahasia AccessKey hanya ditampilkan sekali, yaitu saat pasangan tersebut pertama kali dibuat. Jika Anda kehilangannya, buka Konsol RAM dan buat pasangan AccessKey baru. Lihat Buat pasangan AccessKey.

Saya mendapatkan kesalahan AccessDenied saat mengunggah. Apa yang harus saya periksa?

AccessDenied biasanya berarti pasangan AccessKey salah atau pengguna RAM tidak memiliki izin unggah.

  1. Verifikasi pasangan AccessKey. Lihat Lihat informasi pasangan AccessKey pengguna RAM. Jika rahasia tersebut hilang, buat pasangan AccessKey baru di Konsol RAM.

  2. Di Konsol RAM, pastikan pengguna RAM memiliki izin oss:PutObject untuk bucket target. Jika belum, sambungkan kebijakan yang sesuai.

Bagaimana cara mengidentifikasi jenis kesalahan tertentu?

OSS menyediakan referensi kode kesalahan untuk membantu Anda mengidentifikasi kesalahan. Untuk kesalahan terkait otentikasi, lihat 02-AUTH.

Saya mendapatkan kesalahan NoSuchBucket. Apa yang salah?

Nama bucket dalam kode Anda tidak sesuai dengan bucket yang ada di wilayah yang ditentukan. Periksa nama bucket dan pastikan bucket tersebut benar-benar ada.

Saya mendapatkan pesan "The bucket you are attempting to access must be addressed using the specified endpoint." Apa yang salah?

Titik akhir dalam kode Anda tidak sesuai dengan wilayah tempat bucket berada. Cari tahu titik akhir yang benar untuk wilayah bucket Anda di Wilayah dan titik akhir dan perbarui kode Anda.

Langkah selanjutnya

Untuk berbagi objek yang telah diunggah dengan pihak ketiga tanpa mengekspos kredensial Anda, hasilkan URL yang ditandatangani (presigned URLs) yang memungkinkan akses sementara. Lihat Unduh objek menggunakan URL yang ditandatangani.