全部产品
Search
文档中心

Object Storage Service:Akses OSS melalui jaringan pribadi menggunakan PrivateLink

更新时间:Mar 21, 2026

PrivateLink membangun koneksi aman dan pribadi antara virtual private cloud (VPC) Anda dan OSS, menjaga seluruh trafik tetap berada di backbone network Alibaba Cloud. Fitur ini menghilangkan risiko keamanan data, konflik alamat jaringan, dan kompleksitas operasional, sehingga menyediakan jalur aman dan terkendali menuju penyimpanan cloud.

Cara kerja

PrivateLink menyediakan private endpoint khusus di dalam VPC Anda, yang mengarahkan trafik langsung ke OSS. Trafik tetap berada di backbone network Alibaba Cloud, dan Anda mendapatkan kontrol akses berbasis IP sumber serta log aliran VPC untuk audit. Berbeda dengan titik akhir internal OSS standar, PrivateLink menawarkan isolasi keamanan pada lapisan jaringan dan kontrol trafik detail halus. PrivateLink cocok untuk skenario berikut:

Skenario

Titik akhir internal standar

PrivateLink

Persyaratan keamanan dan kepatuhan yang ketat

Menyediakan titik masuk bersama yang dapat diakses oleh semua VPC; keamanan bergantung pada kebijakan lapisan aplikasi.

Mengurangi permukaan serangan. Titik masuk berada di dalam VPC Anda — VPC lain tidak dapat menemukan atau mengaksesnya, dan trafik diisolasi pada lapisan jaringan.

Kontrol akses detail halus pada lapisan jaringan

Security group tidak dapat mengontrol akses ke OSS; bucket policy adalah satu-satunya opsi.

Mendukung pengikatan security group. Lampirkan aturan grup keamanan ke endpoint PrivateLink untuk mengontrol secara tepat IP sumber mana yang dapat mengakses OSS.

Audit semua upaya koneksi

Log akses OSS hanya mencatat permintaan yang berhasil; upaya penolakan pada lapisan jaringan tidak tertangkap.

Mendukung VPC flow logs. Menangkap dan mengaudit seluruh trafik yang ditujukan ke endpoint, terlepas dari apakah koneksi berhasil atau tidak.

Cloud Hibrida dengan potensi konflik IP

Layanan cloud menggunakan blok 100.64.0.0/10 secara default, yang mungkin bertentangan dengan paket jaringan on-premises Anda.

Menghindari konflik IP. Endpoint menggunakan IP dari ruang alamat VPC Anda, sepenuhnya menghormati paket IP kustom Anda dan menyederhanakan routing cloud hibrida.

Wilayah yang didukung

Wilayah berikut didukung setelah Anda mengajukan permohonan melalui technical support: China (Hangzhou), China (Shanghai), China (Qingdao), China (Beijing), China (Zhangjiakou), China (Ulanqab), China (Shenzhen), China (Heyuan), China (Guangzhou), China (Chengdu), Hong Kong (China), Jepang (Tokyo), Korea Selatan (Seoul), Singapura, Indonesia (Jakarta), Thailand (Bangkok), Jerman (Frankfurt), AS (Silicon Valley), AS (Virginia), dan Inggris (London).

Konfigurasi dan gunakan PrivateLink

Buat endpoint PrivateLink untuk membangun koneksi pribadi, lalu gunakan untuk mengakses OSS secara aman dari VPC atau pusat data lokal Anda.

Buat dan verifikasi endpoint

Buat endpoint untuk membangun koneksi pribadi yang aman antara VPC dan OSS Anda, lalu verifikasi konektivitas dan akses OSS dari instance ECS.

Sebelum memulai, pastikan Anda telah Membuat VPC dan vSwitch. Langkah verifikasi juga memerlukan instance ECS. Jika belum memiliki, lihat Beli instance ECS untuk membuat instans berbayar sesuai penggunaan.

Langkah 1: Buat endpoint

  1. Buka halaman VPC endpoint dan klik Create Endpoint. Jika ini pertama kali Anda menggunakannya, ikuti petunjuk di layar untuk mengaktifkan layanan PrivateLink.

  2. Konfigurasikan parameter berikut. Biarkan semua pengaturan lain pada nilai default-nya.

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

    • Endpoint Name: Masukkan nama deskriptif, misalnya 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).

      Catatan

      Jika tidak ada layanan titik akhir OSS yang muncul dalam daftar, hubungi technical supporttechnical support untuk meminta aktivasi.

    • VPC: Pilih VPC tempat Anda ingin membuat endpoint. Jika tidak tersedia VPC, klik Create VPC untuk membuatnya.

    • Security Groups: Pilih security group yang akan diikat ke endpoint. Jika tidak ada security group yang sesuai, klik Create Security Group untuk membuatnya.

    • Zone and vSwitch: Pilih zona dan vSwitch untuk endpoint. Jika tidak tersedia vSwitch, klik Create vSwitch untuk membuatnya.

  3. Klik OK. Sistem akan membuat endpoint secara otomatis. Di halaman detail endpoint, salin Domain Name of Endpoint Service — Anda akan menggunakan nama domain ini untuk mengakses OSS.

    image

Langkah 2: Verifikasi endpoint

Jalankan uji konektivitas dan unduh file untuk memastikan endpoint PrivateLink dikonfigurasi dengan benar dan berfungsi penuh.

  • Verifikasi konektivitas

    Gunakan ping untuk menguji nama domain endpoint dan pastikan resolusi DNS serta jalur jaringan berfungsi dengan baik.

    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 end-to-end.

    1. Instal dan konfigurasikan ossutil 2.0.

    2. Gunakan nama domain endpoint (misalnya, ep-bp1i****************.oss.cn-hangzhou.privatelink.aliyuncs.com) untuk mengakses 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

      Pengunduhan yang berhasil menghasilkan output seperti berikut. File disimpan ke 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 memverifikasi koneksi PrivateLink, konfigurasikan Bucket Policy sebagai kebijakan akses untuk menambahkan lapisan kontrol akses lainnya. Contoh berikut membatasi pengunduhan objek hanya untuk permintaan yang berasal dari VPC yang terikat ke endpoint PrivateLink Anda, menggabungkan kontrol akses lapisan jaringan dan lapisan aplikasi.

  1. Buka Daftar bucket dan klik bucket target Anda.

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

  3. Klik Authorize dan konfigurasikan pengaturan berikut. Biarkan semua parameter lain pada nilai default-nya.

    • 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 endpoint PrivateLink Anda dari dropdown.

  4. Klik OK untuk menyimpan kebijakan bucket.

Hubungkan perangkat lokal melalui SSL-VPN

SSL-VPN memungkinkan perangkat individual — seperti workstation developer atau perangkat seluler — terhubung ke VPC Anda melalui saluran data terenkripsi. Setelah terhubung, perangkat tersebut dapat mengakses OSS melalui endpoint PrivateLink yang telah dikonfigurasi di VPC. Pendekatan ini sangat cocok untuk skenario kerja jarak jauh, pengembangan dan pengujian, serta akses darurat.

Langkah 1: Siapkan gerbang SSL-VPN dan klien

Deploy gerbang SSL-VPN dan selesaikan konfigurasi klien untuk membangun koneksi terenkripsi antara perangkat lokal Anda dan VPC. Untuk langkah-langkah detail, lihat Hubungkan klien ke VPC.

Langkah 2: Verifikasi akses PrivateLink ke OSS

Jalankan uji konektivitas dan unduh file untuk memastikan koneksi PrivateLink berfungsi dengan benar dari perangkat lokal.

  • Verifikasi konektivitas

    Gunakan ping untuk menguji nama domain endpoint dan pastikan resolusi DNS serta jalur jaringan berfungsi dengan baik.

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

    ossutil

    Gunakan ossutil untuk melakukan operasi file aktual dan verifikasi bahwa transfer data melalui PrivateLink berfungsi penuh.

    1. Instal dan konfigurasikan ossutil 2.0.

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

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

      Pengunduhan yang berhasil menghasilkan output seperti berikut. File disimpan ke 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

    Akses berbasis SDK lebih merepresentasikan lingkungan produksi nyata dan mendukung logika bisnis kompleks serta penanganan exception. SDK berikut mendukung akses ke OSS melalui PrivateLink.

    Java

    Saat mengakses OSS melalui PrivateLink, panggil setSLDEnabled(true) untuk mengaktifkan akses gaya path. Untuk akses internet standar, 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 melalui PrivateLink dan mengunduh file
         */
        public class Test {
    
            public static void main(String[] args) throws Exception {
                // Nama domain endpoint PrivateLink
                String endpoint = "https://ep-bp1i****************.oss.cn-hangzhou.privatelink.aliyuncs.com";
    
                // Wilayah yang sesuai dengan endpoint, misalnya cn-hangzhou
                String region = "cn-hangzhou";
    
                // Dapatkan kredensial dari variabel lingkungan
                // Pastikan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah diatur sebelum menjalankan contoh ini
                EnvironmentVariableCredentialsProvider credentialsProvider =
                        CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
    
                // Nama bucket, misalnya example-bucket
                String bucketName = "example-bucket";
    
                // Jalur lengkap objek, tidak termasuk nama bucket
                String objectName = "dest.jpg";
    
                // Jalur file lokal untuk menyimpan file yang diunduh
                String pathName = "dest.jpg";
    
                // Konfigurasikan parameter klien
                ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
    
                // Aktifkan akses gaya path untuk PrivateLink (atur ke false untuk akses internet melalui domain bucket)
                clientBuilderConfiguration.setSLDEnabled(true);
    
                // Gunakan Signature Version 4
                clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);
    
                // Buat klien OSS
                OSS ossClient = OSSClientBuilder.create()
                        .endpoint(endpoint)
                        .credentialsProvider(credentialsProvider)
                        .clientConfiguration(clientBuilderConfiguration)
                        .region(region)
                        .build();
    
                try {
                    // Unduh objek ke file lokal
                    // Menimpa file jika sudah ada; membuat file baru jika belum ada
                    // Jika tidak ada jalur yang ditentukan, file disimpan di direktori proyek
                    ossClient.getObject(new GetObjectRequest(bucketName, objectName), new File(pathName));
    
                } catch (OSSException oe) {
                    // Permintaan mencapai OSS tetapi ditolak
                    System.out.println("Terjadi OSSException: permintaan mencapai OSS tetapi ditolak.");
                    System.out.println("Pesan kesalahan: " + 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) {
                    // Klien tidak dapat berkomunikasi dengan OSS
                    System.out.println("Terjadi ClientException: klien mengalami masalah internal serius, " +
                            "seperti kegagalan jaringan.");
                    System.out.println("Pesan kesalahan: " + ce.getMessage());
    
                } finally {
                    // Lepaskan sumber daya
                    if (ossClient != null) {
                        ossClient.shutdown();
                    }
                }
            }
        }

    Python

    Saat mengakses OSS melalui PrivateLink, atur is_path_style=True untuk mengaktifkan akses gaya path.

    # -*- coding: utf-8 -*-
        """
        Contoh akses OSS PrivateLink
        Mengunduh file dari OSS melalui koneksi jaringan pribadi PrivateLink
        """
    
        import oss2
        from oss2.credentials import EnvironmentVariableCredentialsProvider
    
        def main():
            """Unduh file dari OSS melalui PrivateLink."""
    
            # Konfigurasikan kredensial
            # Catatan: AccessKey Akun Alibaba Cloud memiliki akses API penuh dan membawa risiko tinggi.
            # Gunakan Pengguna RAM untuk akses API dan operasi rutin. Buat Pengguna RAM di Konsol RAM.
            auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider())
    
            # Nama domain endpoint 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 akses gaya path, diperlukan untuk PrivateLink dan skenario serupa
            bucket = oss2.Bucket(auth, endpoint, bucket_name, is_path_style=True)
    
            # Jalur objek di OSS (tidak termasuk nama bucket)
            object_name = 'dest.jpg'
    
            # Jalur file lokal untuk menyimpan file yang diunduh
            local_file_path = 'dest.jpg'
    
            # Unduh objek ke file lokal
            # Menimpa file jika sudah ada; membuat file baru jika belum ada
            bucket.get_object_to_file(object_name, local_file_path)
    
            print(f"File berhasil diunduh: {object_name} -> {local_file_path}")
    
        if __name__ == '__main__':
            main()

    Go

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

    package main
    
        import (
        	"fmt"
        	"os"
    
        	"github.com/aliyun/aliyun-oss-go-sdk/oss"
        )
    
        const (
        	// Nama domain endpoint PrivateLink
        	endpoint = "https://ep-bp1i****************.oss.cn-hangzhou.privatelink.aliyuncs.com"
    
        	// Nama bucket
        	bucketName = "example-bucket"
    
        	// Jalur objek di OSS (tidak termasuk nama bucket)
        	objectName = "dest.jpg"
    
        	// Jalur file lokal untuk menyimpan file yang diunduh
        	localFilePath = "dest.jpg"
        )
    
        func main() {
        	// Inisialisasi penyedia kredensial
        	// Membaca kredensial dari variabel lingkungan
        	// Pastikan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah diatur sebelum menjalankan contoh ini
        	provider, err := oss.NewEnvironmentVariableCredentialsProvider()
        	if err != nil {
        		fmt.Printf("Gagal menginisialisasi penyedia kredensial: %v\n", err)
        		os.Exit(-1)
        	}
    
        	// Buat klien OSS
        	// oss.ForcePathStyle(true) mengaktifkan akses gaya path, diperlukan untuk PrivateLink dan skenario serupa
        	client, err := oss.New(
        		endpoint,
        		"", // AccessKeyId disediakan oleh penyedia kredensial
        		"", // AccessKeySecret disediakan oleh penyedia kredensial
        		oss.SetCredentialsProvider(&provider),
        		oss.ForcePathStyle(true),
        	)
        	if err != nil {
        		fmt.Printf("Gagal membuat klien OSS: %v\n", err)
        		os.Exit(-1)
        	}
    
        	// Dapatkan bucket
        	bucket, err := client.Bucket(bucketName)
        	if err != nil {
        		fmt.Printf("Gagal mendapatkan bucket: %v\n", err)
        		os.Exit(-1)
        	}
    
        	// Unduh objek ke file lokal
        	// Menimpa file jika sudah ada; membuat file baru jika belum ada
        	// Jika tidak ada jalur yang ditentukan, file disimpan di direktori proyek
        	err = bucket.GetObjectToFile(objectName, localFilePath)
        	if err != nil {
        		fmt.Printf("Gagal mengunduh file: %v\n", err)
        		os.Exit(-1)
        	}
    
        	fmt.Printf("File berhasil diunduh: %s -> %s\n", objectName, localFilePath)
        }
        

    C++

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

    #include <alibabacloud/oss/OssClient.h>
        #include <memory>
        #include <fstream>
        #include <iostream>
    
        using namespace AlibabaCloud::OSS;
    
        int main(void)
        {
            // Nama domain endpoint PrivateLink
            std::string Endpoint = "https://ep-bp1i****************.oss.cn-hangzhou.privatelink.aliyuncs.com";
    
            // Nama bucket
            std::string BucketName = "example-bucket";
    
            // Jalur objek di OSS (tidak termasuk nama bucket)
            std::string ObjectName = "dest.jpg";
    
            // Jalur file lokal untuk menyimpan file yang diunduh
            // Menimpa file jika sudah ada; membuat file baru jika belum ada
            // Jika tidak ada jalur yang ditentukan, file disimpan di direktori proyek
            std::string FileNametoSave = "dest.jpg";
    
            // Inisialisasi sumber daya SDK OSS
            InitializeSdk();
    
            // Konfigurasikan parameter klien
            ClientConfiguration conf;
    
            // Dapatkan kredensial dari variabel lingkungan
            // Pastikan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah diatur sebelum menjalankan contoh ini
            auto credentialsProvider = std::make_shared<EnvironmentVariableCredentialsProvider>();
    
            // Aktifkan akses gaya path untuk PrivateLink dan skenario serupa
            conf.isPathStyle = true;
    
            // Buat klien OSS
            OssClient client(Endpoint, credentialsProvider, conf);
    
            // Bangun permintaan pengunduhan
            GetObjectRequest request(BucketName, ObjectName);
    
            // Atur factory stream respons untuk menulis ke 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
                );
            });
    
            // Eksekusi pengunduhan
            auto outcome = client.GetObject(request);
    
            // Tangani hasil
            if (outcome.isSuccess()) {
                std::cout << "File berhasil diunduh. Ukuran: "
                          << outcome.result().Metadata().ContentLength()
                          << " byte" << std::endl;
                std::cout << "Disimpan ke: " << FileNametoSave << std::endl;
            }
            else {
                // Penanganan kesalahan
                std::cout << "Pengunduhan gagal" << std::endl
                          << "Kode kesalahan: " << outcome.error().Code() << std::endl
                          << "Pesan kesalahan: " << outcome.error().Message() << std::endl
                          << "ID Permintaan: " << outcome.error().RequestId() << std::endl;
    
                // Lepaskan sumber daya dan kembalikan kode kesalahan
                ShutdownSdk();
                return -1;
            }
    
            // Lepaskan sumber daya SDK OSS
            ShutdownSdk();
            return 0;
        }

Hubungkan pusat data lokal melalui Express Connect atau gerbang VPN

Pusat data enterprise dapat terhubung ke VPC Alibaba Cloud melalui sirkuit Express Connect atau gerbang VPN, lalu menggunakan PrivateLink untuk mengakses OSS melalui jaringan pribadi. Express Connect menyediakan bandwidth stabil dan terjamin; gerbang VPN menyediakan koneksi terenkripsi yang fleksibel. Keduanya cocok untuk transfer data produksi skala besar. Untuk detail konfigurasi, lihat Hubungkan VPC ke pusat data atau cloud lain.

Terapkan di lingkungan produksi

Praktik terbaik

  • Optimalkan aturan security group

    Konfigurasikan Aturan security group mengikuti prinsip hak istimewa minimal: buka port akses endpoint hanya untuk rentang IP spesifik yang memerlukan akses, dan tinjau aturan keamanan secara berkala. Kontrol IP sumber dan port yang presisi menjaga kebijakan akses selaras dengan kebutuhan bisnis serta mencegah penyebaran izin berlebihan dan akses tidak sah.

  • Pantau konektivitas jaringan

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

  • Deploy di beberapa zona

    Di lingkungan produksi, deploy endpoint di beberapa availability zone untuk ketersediaan tinggi dan toleransi kesalahan. Dengan load balancing atau DNS round robin, trafik secara otomatis dialihkan ke endpoint sehat di zona lain saat salah satu gagal, sehingga layanan Anda tetap tersedia terus-menerus.

Penagihan

PrivateLink ditagih per jam berdasarkan penggunaan aktual. Biaya mencakup biaya instans dan biaya pemrosesan data. Konsumen layanan dan penyedia layanan dapat merupakan Akun Alibaba Cloud yang berbeda, dan biaya dapat ditagihkan ke akun yang ditentukan. Untuk detailnya, lihat Ikhtisar penagihan.