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 |
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
Buka halaman VPC endpoint dan klik Create Endpoint. Jika ini pertama kali Anda menggunakannya, ikuti petunjuk di layar untuk mengaktifkan layanan PrivateLink.
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).CatatanJika 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.
-
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.

Langkah 2: Verifikasi endpoint
Jalankan uji konektivitas dan unduh file untuk memastikan endpoint PrivateLink dikonfigurasi dengan benar dan berfungsi penuh.
-
Verifikasi konektivitas
Gunakan
pinguntuk 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.
-
Gunakan nama domain endpoint (misalnya,
ep-bp1i****************.oss.cn-hangzhou.privatelink.aliyuncs.com) untuk mengakses OSS. Contoh berikut mengunduh file bernamadest.jpgdari bucket bernamaexample-bucket:ossutil cp oss://example-bucket/dest.jpg /tmp/ -e ep-bp1i****************.oss.cn-hangzhou.privatelink.aliyuncs.com --addressing-style pathPengunduhan 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.
Buka Daftar bucket dan klik bucket target Anda.
Di panel navigasi kiri, klik .
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.
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
pinguntuk 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.
-
Gunakan nama domain endpoint (misalnya,
ep-bp1i****************.oss.cn-hangzhou.privatelink.aliyuncs.com) untuk mengakses OSS. Contoh berikut mengunduhdest.jpgdariexample-bucket:ossutil cp oss://example-bucket/dest.jpg /tmp/ -e ep-bp1i****************.oss.cn-hangzhou.privatelink.aliyuncs.com --addressing-style pathPengunduhan 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 menjadisetSLDEnabled(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=Trueuntuk 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 = trueuntuk 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.