All Products
Search
Document Center

Object Storage Service:Akses OSS melalui PrivateLink

Last Updated:Sep 10, 2026

PrivateLink membangun koneksi aman dan pribadi antara VPC Anda dan Alibaba Cloud OSS, menyediakan isolasi trafik di lapisan jaringan untuk mengurangi risiko keamanan data, menyelesaikan konflik alamat jaringan, serta mengurangi kompleksitas operasional—membantu Anda membangun arsitektur akses penyimpanan cloud yang aman dan terkendali.

Cara kerja

PrivateLink bekerja dengan membuat private endpoint khusus di VPC Anda yang terhubung ke Alibaba Cloud OSS. Seluruh trafik akses tetap berada dalam backbone network Alibaba Cloud dan tidak melewati internet publik. Fitur ini juga menyediakan kontrol akses berbasis IP sumber yang presisi serta VPC flow logs untuk audit, sehingga membentuk kerangka keamanan data tingkat enterprise. Dibandingkan dengan nama domain internal bawaan yang disediakan OSS, PrivateLink menawarkan tingkat isolasi keamanan jaringan native dan kontrol detail halus yang lebih tinggi, sehingga cocok untuk skenario bisnis berikut:

Skenario bisnis

Nama domain internal

PrivateLink

Persyaratan keamanan dan kepatuhan yang ketat

Akses dilakukan melalui titik masuk layanan publik, sehingga memperluas permukaan serangan ke seluruh VPC. Keamanan bergantung terutama pada kebijakan lapisan aplikasi.

Mengurangi permukaan serangan. Titik masuk berada di dalam VPC Anda, sehingga VPC lain tidak dapat menemukan atau mengaksesnya. Trafik secara native diisolasi di lapisan jaringan.

Kebutuhan kontrol akses detail halus di lapisan jaringan

Anda tidak dapat menggunakan security group untuk mengontrol akses ke OSS. Anda hanya dapat mengandalkan bucket policy.

Mendukung pengikatan security group. Anda dapat mengonfigurasi aturan grup keamanan untuk titik akhir PrivateLink guna mengontrol secara presisi IP sumber mana saja yang dapat mengakses OSS.

Kebutuhan untuk mengaudit semua upaya koneksi jaringan

Log akses OSS hanya mencatat permintaan yang berhasil. Log tersebut tidak dapat mengaudit upaya koneksi di lapisan jaringan yang ditolak.

Mendukung VPC flow logs. Anda dapat menangkap dan mengaudit seluruh trafik yang mencoba mengakses titik akhir, terlepas dari keberhasilannya.

Arsitektur jaringan cloud hibrida kompleks dengan potensi konflik IP

Layanan cloud secara default menggunakan blok CIDR 100.64.0.0/10, yang mungkin bertentangan dengan paket jaringan pusat data lokal Anda.

Menghindari konflik IP. Titik akhir menggunakan alamat IP dari blok CIDR VPC Anda, sepenuhnya mengikuti rencana IP kustom Anda dan menyederhanakan routing cloud hibrida.

Wilayah yang didukung

Tiongkok (Hangzhou), Tiongkok (Shanghai), Tiongkok (Qingdao), Tiongkok (Beijing), Tiongkok (Zhangjiakou), Tiongkok (Ulanqab), Tiongkok (Shenzhen), Tiongkok (Heyuan), Tiongkok (Guangzhou), Tiongkok (Chengdu), Hong Kong (Tiongkok), Jepang (Tokyo), Korea Selatan (Seoul), Singapura, Indonesia (Jakarta), Thailand (Bangkok), Jerman (Frankfurt), AS (Silicon Valley), AS (Virginia), dan Inggris (London).

Konfigurasi dan penggunaan PrivateLink

Buat titik akhir untuk membangun koneksi pribadi melalui PrivateLink, sehingga memungkinkan akses aman ke sumber daya OSS dari VPC atau pusat data lokal Anda.

Buat dan verifikasi titik akhir

Pertama, buat titik akhir untuk membangun koneksi aman dan pribadi antara VPC dan OSS Anda. Setelah titik akhir dibuat, gunakan instance ECS untuk memverifikasi konektivitas jaringannya dan akses OSS untuk memastikan konfigurasi sudah benar.

Sebelum memulai, pastikan Anda telah membuat VPC dan vSwitch. Langkah verifikasi memerlukan instance ECS. Jika Anda belum memiliki instance, lihat Purchase an ECS instance untuk membuat instans pay-as-you-go.

Langkah 1: Buat titik akhir

  1. Buka halaman VPC endpoint dan klik Create Endpoint. Jika ini pertama kali Anda menggunakan layanan ini, ikuti petunjuk di layar untuk activate the PrivateLink service.

  2. Konfigurasikan parameter berikut dan biarkan nilai default untuk opsi yang tidak tercantum.

    • Region: Pilih wilayah tempat bucket OSS target berada, misalnya Tiongkok (Hangzhou).

    • Endpoint Name: Masukkan nama deskriptif untuk titik akhir, seperti privatelink-oss.

    • Endpoint Type: Pilih Interface Endpoint.

    • Endpoint Service: Pilih Alibaba Cloud Service, lalu pilih layanan titik akhir OSS dari daftar (entri yang namanya diakhiri dengan oss).

    • VPC: Pilih VPC target tempat Anda ingin membuat titik akhir. Jika tidak tersedia VPC, klik Create VPC untuk membuat yang baru.

    • Security Groups: Pilih grup keamanan yang akan diikat ke titik akhir untuk mengontrol izin akses. Jika tidak tersedia grup keamanan yang sesuai, klik Create Security Group untuk membuat satu.

    • Zone and vSwitch: Pilih zona ketersediaan dan vSwitch yang sesuai untuk penempatan titik akhir. Jika tidak tersedia vSwitch, klik Create vSwitch untuk membuat yang baru.

  3. Klik OK. Sistem secara otomatis membuat titik akhir. Setelah pembuatan selesai, Anda dapat melihat dan menyalin Domain Name of Endpoint Service di halaman detail titik akhir. Gunakan nama domain ini untuk akses OSS selanjutnya.

    Nama domain layanan titik akhir memiliki format ep-<InstanceID>.oss.cn-hangzhou.privatelink.aliyuncs.com. Di bagian Domain name of endpoint service, klik Copy untuk mendapatkannya.

Langkah 2: Verifikasi titik akhir

Jalankan uji konektivitas dan unduh file untuk memastikan titik akhir PrivateLink telah dikonfigurasi dengan benar.

  • Verifikasi konektivitas jaringan

    Gunakan perintah ping untuk menguji konektivitas jaringan ke nama domain titik akhir dan pastikan resolusi DNS serta jalur jaringan sudah benar.

    ping -c 4 ep-bp1i****************.oss.cn-hangzhou.privatelink.aliyuncs.com
  • Verifikasi pengunduhan file

    Dari instance ECS di wilayah yang sama, gunakan ossutil untuk mengunduh file melalui koneksi PrivateLink dan pastikan transfer data berjalan lancar dari ujung ke ujung.

    1. Install and configure ossutil 2.0.

    2. Gunakan nama domain titik akhir (misalnya, ep-bp1i****************.oss.cn-hangzhou.privatelink.aliyuncs.com) untuk mengakses sumber daya OSS. Contoh berikut mengunduh file bernama dest.jpg dari bucket bernama example-bucket:

      ossutil cp oss://example-bucket/dest.jpg /tmp/ -e ep-bp1i****************.oss.cn-hangzhou.privatelink.aliyuncs.com --addressing-style path

      Perintah yang berhasil akan menampilkan output berikut, menandakan file telah diunduh. Anda dapat melihat file yang diunduh di direktori /tmp.

      Success: Total 1 object, size 134102 B, Download done:(1 files, 134102 B), avg 680.112 KiB/s
      0.193189(s) elapsed

Perkuat keamanan akses VPC

Setelah Anda memverifikasi fungsionalitas PrivateLink, Anda dapat lebih meningkatkan keamanan dengan mengonfigurasi bucket policy. Contoh berikut menunjukkan cara membatasi akses agar hanya mengizinkan permintaan dari VPC yang terikat ke titik akhir PrivateLink. Hal ini menerapkan kontrol akses di kedua lapisan jaringan dan aplikasi.

  1. Buka Bucket list dan klik bucket target.

  2. Di panel navigasi kiri, klik Permission Control > Bucket Policy.

  3. Klik Authorize dan konfigurasikan pengaturan berikut. Anda dapat mempertahankan opsi default untuk parameter lainnya.

    • Authorized User: Pilih All Accounts (*).

    • Authorized Operation: Pilih Advanced Settings.

    • Effect: Pilih Reject.

    • Actions: Pilih oss:GetObject.

    • Condition: Pilih VPC ≠ dan pilih VPC yang terikat ke titik akhir PrivateLink Anda dari daftar drop-down.

  4. Klik OK untuk menyelesaikan konfigurasi bucket policy.

Hubungkan perangkat lokal menggunakan SSL-VPN

Solusi SSL-VPN memungkinkan perangkat lokal individual, seperti workstation developer atau perangkat seluler, terhubung ke VPC Anda melalui saluran data terenkripsi. Setelah perangkat membangun saluran data, perangkat tersebut dapat mengakses OSS secara aman menggunakan titik akhir PrivateLink yang telah dikonfigurasi. Pendekatan ini cocok untuk skenario kerja jarak jauh, pengembangan dan pengujian, serta akses darurat.

Langkah 1: Buat gateway SSL-VPN dan konfigurasi klien

Terapkan gateway SSL-VPN dan selesaikan konfigurasi klien untuk membangun koneksi terenkripsi antara perangkat lokal dan VPC. Untuk langkah konfigurasi lengkap, lihat Connect a PC or an Android device to a VPC by using an SSL-VPN connection.

Langkah 2: Verifikasi akses PrivateLink ke OSS

Verifikasi koneksi PrivateLink dengan menjalankan uji konektivitas dan mengunduh file untuk memastikan tautan akses pribadi berfungsi.

  • Verifikasi konektivitas

    Gunakan perintah ping untuk menguji konektivitas jaringan ke nama domain titik akhir dan pastikan resolusi DNS serta jalur jaringan sudah benar.

    ping -c 4 ep-bp1i****************.oss.cn-hangzhou.privatelink.aliyuncs.com
  • Verifikasi pengunduhan file

    ossutil

    Gunakan ossutil untuk memverifikasi koneksi dengan melakukan operasi file.

    1. Install and configure ossutil 2.0.

    2. Gunakan nama domain titik akhir (misalnya, ep-bp1i****************.oss.cn-hangzhou.privatelink.aliyuncs.com) untuk mengakses sumber daya OSS. Contoh berikut mengunduh file bernama dest.jpg dari bucket bernama example-bucket:

      ossutil cp oss://example-bucket/dest.jpg /tmp/ -e ep-bp1i****************.oss.cn-hangzhou.privatelink.aliyuncs.com --addressing-style path

      Perintah yang berhasil akan menampilkan output berikut, menandakan file telah diunduh. Anda dapat melihat file yang diunduh di direktori /tmp.

      Success: Total 1 object, size 134102 B, Download done:(1 files, 134102 B), avg 680.112 KiB/s
      0.193189(s) elapsed

    SDK

    Penggunaan SDK lebih menyerupai lingkungan produksi, mendukung integrasi logika bisnis kompleks dan penanganan exception. SDK berikut mendukung akses OSS melalui PrivateLink.

    Java

    Saat mengakses OSS melalui PrivateLink, panggil setSLDEnabled(true) untuk mengaktifkan mode akses path-style. Untuk akses jaringan publik, atur menjadi setSLDEnabled(false).

    import com.aliyun.oss.*;
    import com.aliyun.oss.common.auth.*;
    import com.aliyun.oss.common.comm.SignVersion;
    import com.aliyun.oss.model.GetObjectRequest;
    import java.io.File;
    /**
     * Contoh akses OSS PrivateLink
     * Menunjukkan cara mengakses OSS dan mengunduh file menggunakan PrivateLink
     */
    public class Test {
        public static void main(String[] args) throws Exception {
            // Nama domain titik akhir PrivateLink.
            String endpoint = "https://ep-bp1i****************.oss.cn-hangzhou.privatelink.aliyuncs.com";
            // Tentukan wilayah yang sesuai dengan titik akhir, misalnya cn-hangzhou.
            String region = "cn-hangzhou";
            // Dapatkan kredensial dari variabel lingkungan.
            // Sebelum menjalankan, atur variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET.
            EnvironmentVariableCredentialsProvider credentialsProvider =
                    CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
            // Tentukan nama bucket, misalnya example-bucket.
            String bucketName = "example-bucket";
            // Tentukan path lengkap objek, tidak termasuk nama bucket.
            String objectName = "dest.jpg";
            // Tentukan nama file lokal.
            String pathName = "dest.jpg";
            // Konfigurasi parameter klien.
            ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
            // Aktifkan akses path-style untuk akses PrivateLink. Atur ke false untuk akses publik melalui nama domain internet bucket.
            clientBuilderConfiguration.setSLDEnabled(true);
            // Secara eksplisit deklarasikan penggunaan algoritma Signature Version 4.
            clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);
            // Buat instance klien OSS.
            OSS ossClient = OSSClientBuilder.create()
                    .endpoint(endpoint)
                    .credentialsProvider(credentialsProvider)
                    .clientConfiguration(clientBuilderConfiguration)
                    .region(region)
                    .build();
            try {
                // Unduh objek ke file lokal.
                // Jika file lokal yang ditentukan sudah ada, file tersebut akan ditimpa. Jika tidak, file baru akan dibuat.
                // Jika path lokal tidak ditentukan, file yang diunduh disimpan secara default ke direktori root proyek.
                ossClient.getObject(new GetObjectRequest(bucketName, objectName), new File(pathName));
            } catch (OSSException oe) {
                // Tangani exception sisi server OSS.
                System.out.println("Caught an OSSException, which means your request made it to the OSS server, but was rejected with an error response.");
                System.out.println("Error Message: " + oe.getErrorMessage());
                System.out.println("Error Code: " + oe.getErrorCode());
                System.out.println("Request ID: " + oe.getRequestId());
                System.out.println("Host ID: " + oe.getHostId());
            } catch (ClientException ce) {
                // Tangani exception sisi klien.
                System.out.println("Caught a ClientException, which means the client encountered a serious internal problem while trying to communicate with OSS, " +
                        "such as not being able to access the network.");
                System.out.println("Error Message: " + ce.getMessage());
            } finally {
                // Lepaskan sumber daya.
                if (ossClient != null) {
                    ossClient.shutdown();
                }
            }
        }
    }

    Python

    Saat mengakses OSS melalui PrivateLink, atur is_path_style=True untuk mengaktifkan mode akses path-style.

    # -*- coding: utf-8 -*-
    """
    Contoh akses OSS PrivateLink
    Mengakses OSS melalui PrivateLink dan mengunduh file secara lokal.
    """
    import oss2
    from oss2.credentials import EnvironmentVariableCredentialsProvider
    def main():
        """Fungsi utama: Menunjukkan cara mengakses OSS dan mengunduh file melalui PrivateLink."""
        # Konfigurasi kredensial akses.
        # Catatan: AccessKey Akun Alibaba Cloud memiliki semua izin API dan membawa risiko tinggi.
        # Kami sangat menyarankan membuat dan menggunakan RAM user untuk akses API atau O&M harian. Login ke konsol RAM untuk membuat RAM user.
        auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider())
        # Nama domain titik akhir PrivateLink.
        endpoint = 'https://ep-bp1i****************.oss.cn-hangzhou.privatelink.aliyuncs.com'
        # Nama bucket.
        bucket_name = 'example-bucket'
        # Buat objek Bucket.
        # is_path_style=True mengaktifkan mode akses path-style, yang cocok untuk skenario seperti PrivateLink.
        bucket = oss2.Bucket(auth, endpoint, bucket_name, is_path_style=True)
        # Path objek OSS (path lengkap tanpa nama bucket).
        object_name = 'dest.jpg'
        # Path lokal untuk menyimpan file.
        local_file_path = 'dest.jpg'
        # Unduh objek ke file lokal.
        # Jika file lokal yang ditentukan sudah ada, file tersebut akan ditimpa. Jika tidak, file baru akan dibuat.
        bucket.get_object_to_file(object_name, local_file_path)
        print(f"File downloaded successfully: {object_name} -> {local_file_path}")
    if __name__ == '__main__':
        main()      

    Go

    Saat mengakses OSS melalui PrivateLink, gunakan ForcePathStyle(true) untuk mengaktifkan mode akses path-style.

    package main
    import (
    	"fmt"
    	"os"
    	"github.com/aliyun/aliyun-oss-go-sdk/oss"
    )
    const (
    	// Nama domain titik akhir PrivateLink.
    	endpoint = "https://ep-bp1i****************.oss.cn-hangzhou.privatelink.aliyuncs.com"
    	// Nama bucket.
    	bucketName = "example-bucket"
    	// Path objek OSS (path lengkap tanpa nama bucket).
    	objectName = "dest.jpg"
    	// Path lokal untuk menyimpan file.
    	localFilePath = "dest.jpg"
    )
    func main() {
    	// Inisialisasi penyedia kredensial akses.
    	// Dapatkan kredensial dari variabel lingkungan.
    	// Sebelum menjalankan contoh kode ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah diatur.
    	provider, err := oss.NewEnvironmentVariableCredentialsProvider()
    	if err != nil {
    		fmt.Printf("Failed to initialize credentials provider: %v\n", err)
    		os.Exit(-1)
    	}
    	// Buat instance klien OSS.
    	// oss.ForcePathStyle(true) mengaktifkan mode akses path-style, yang cocok untuk skenario seperti PrivateLink.
    	client, err := oss.New(
    		endpoint,
    		"", // AccessKeyId diperoleh melalui penyedia kredensial.
    		"", // AccessKeySecret diperoleh melalui penyedia kredensial.
    		oss.SetCredentialsProvider(&provider),
    		oss.ForcePathStyle(true),
    	)
    	if err != nil {
    		fmt.Printf("Failed to create OSS client: %v\n", err)
    		os.Exit(-1)
    	}
    	// Dapatkan objek Bucket.
    	bucket, err := client.Bucket(bucketName)
    	if err != nil {
    		fmt.Printf("Failed to get Bucket object: %v\n", err)
    		os.Exit(-1)
    	}
    	// Unduh objek ke file lokal.
    	// Jika file lokal yang ditentukan sudah ada, file tersebut akan ditimpa. Jika tidak, file baru akan dibuat.
    	// Jika path lokal tidak ditentukan, file yang diunduh disimpan secara default ke direktori root proyek.
    	err = bucket.GetObjectToFile(objectName, localFilePath)
    	if err != nil {
    		fmt.Printf("Failed to download file: %v\n", err)
    		os.Exit(-1)
    	}
    	fmt.Printf("File downloaded successfully: %s -> %s\n", objectName, localFilePath)
    }
    

    C++

    Saat mengakses OSS melalui PrivateLink, atur conf.isPathStyle = true untuk mengaktifkan mode akses path-style.

    #include <alibabacloud/oss/OssClient.h>
    #include <memory>
    #include <fstream>
    #include <iostream>
    using namespace AlibabaCloud::OSS;
    int main(void)
    {
        // Nama domain titik akhir PrivateLink.
        std::string Endpoint = "https://ep-bp1i****************.oss.cn-hangzhou.privatelink.aliyuncs.com";
        // Nama bucket.
        std::string BucketName = "example-bucket";
        // Path objek OSS (tidak boleh mencakup nama bucket).
        std::string ObjectName = "dest.jpg";
        // Path lokal untuk menyimpan file.
        // Jika file lokal yang ditentukan sudah ada, file tersebut akan ditimpa. Jika tidak, file baru akan dibuat.
        // Jika path lokal tidak ditentukan, file yang diunduh disimpan secara default ke direktori root proyek.
        std::string FileNametoSave = "dest.jpg";
        // Inisialisasi sumber daya SDK OSS.
        InitializeSdk();
        // Konfigurasi parameter klien.
        ClientConfiguration conf;
        // Dapatkan kredensial dari variabel lingkungan.
        // Sebelum menjalankan contoh kode ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah diatur.
        auto credentialsProvider = std::make_shared<EnvironmentVariableCredentialsProvider>();
        // Aktifkan mode akses path-style, yang cocok untuk skenario seperti PrivateLink.
        conf.isPathStyle = true;
        // Buat instance klien OSS.
        OssClient client(Endpoint, credentialsProvider, conf);
        // Bangun permintaan GetObject.
        GetObjectRequest request(BucketName, ObjectName);
        // Atur factory stream respons untuk membuat stream file lokal.
        request.setResponseStreamFactory([=]() {
            return std::make_shared<std::fstream>(
                FileNametoSave, 
                std::ios_base::out | std::ios_base::in | std::ios_base::trunc | std::ios_base::binary
            );
        });
        // Jalankan operasi pengunduhan.
        auto outcome = client.GetObject(request);
        // Proses hasil pengunduhan.
        if (outcome.isSuccess()) {
            std::cout << "File downloaded successfully. Size: " 
                      << outcome.result().Metadata().ContentLength() 
                      << " bytes" << std::endl;
            std::cout << "File saved to: " << FileNametoSave << std::endl;
        }
        else {
            // Tangani error.
            std::cout << "File download failed" << std::endl
                      << "Error code: " << outcome.error().Code() << std::endl
                      << "Error message: " << outcome.error().Message() << std::endl
                      << "Request ID: " << outcome.error().RequestId() << std::endl;
            // Lepaskan sumber daya dan kembalikan kode error.
            ShutdownSdk();
            return -1;
        }
        // Lepaskan sumber daya SDK OSS.
        ShutdownSdk();
        return 0;
    }

Hubungkan pusat data dengan Express Connect atau VPN

Pusat data lokal dapat terhubung ke VPC Alibaba Cloud melalui sirkuit Express Connect atau gateway VPN, lalu menggunakan PrivateLink untuk mengakses OSS melalui jaringan pribadi. Express Connect menyediakan kinerja jaringan stabil dan bandwidth terjamin, sedangkan gateway VPN menawarkan koneksi fleksibel yang terenkripsi. Kedua solusi ini cocok untuk transfer data skala besar di lingkungan produksi. Untuk metode konfigurasi lengkap, lihat Connect a VPC to an on-premises data center or another cloud.

Lingkungan produksi

Praktik terbaik

  • Optimalkan konfigurasi security group

    Konfigurasikan aturan grup keamanan berdasarkan prinsip hak istimewa minimal. Buka port akses titik akhir hanya untuk rentang alamat IP yang diperlukan dan bangun mekanisme tinjauan aturan keamanan berkala. Kontrol IP sumber dan port yang presisi memastikan kebijakan akses selaras dengan kebutuhan bisnis, mencegah penyebaran izin berlebihan dan akses tidak sah.

  • Monitor konektivitas jaringan

    Aktifkan fitur VPC flow logs dan bangun mekanisme deteksi anomali berdasarkan pola lalu lintas untuk memantau perilaku akses PrivateLink dan status transfer data secara real-time.

  • Gunakan penerapan multi-AZ

    Di lingkungan produksi, terapkan titik akhir di beberapa zona ketersediaan untuk membangun arsitektur yang sangat tersedia dan toleran terhadap kegagalan. Gunakan load balancing atau DNS round-robin untuk mendistribusikan trafik. Jika suatu zona ketersediaan gagal, trafik secara otomatis dialihkan ke titik akhir sehat di zona lain, memastikan kelangsungan layanan dan stabilitas bisnis.

Penagihan

PrivateLink ditagih per jam berdasarkan penggunaan aktual. Biaya mencakup biaya instans dan biaya pemrosesan data. Pengguna layanan dan penyedia layanan dapat merupakan akun Alibaba Cloud yang berbeda, dan tagihan dapat dibebankan ke akun tertentu. Untuk informasi penagihan lebih lanjut, lihat Billing overview.