PrivateLink, VPC'niz ile Alibaba Cloud OSS arasında güvenli ve özel bir bağlantı kurar. Bu çözüm, veri güvenliği risklerini azaltmak, ağ adresi çakışmalarını çözmek ve operasyonel karmaşıklığı düşürmek amacıyla ağ düzeyinde trafik izolasyonu sağlar. Böylece güvenli ve kontrol edilebilir bir cloud depolama erişim mimarisi oluşturmanıza yardımcı olur.
Çalışma mantığı
PrivateLink, VPC'nizde Alibaba Cloud OSS'e bağlanan ayrılmış bir özel uç nokta oluşturarak çalışır. Bu sayede tüm erişim trafiği Alibaba Cloud omurga ağı içinde kalır ve genel internet üzerinden geçmez. Ayrıca kaynak IP tabanlı hassas erişim kontrolü ve denetim için VPC akış günlükleri sunarak kurumsal düzeyde bir veri güvenliği çerçevesi sağlar. OSS'in varsayılan olarak sunduğu dahili alan adlarına kıyasla PrivateLink, daha yüksek düzeyde yerel ağ güvenliği izolasyonu ve ince taneli kontrol sunar; bu da aşağıdaki iş senaryoları için uygundur:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Desteklenen bölgeler
China (Hangzhou), China (Shanghai), China (Qingdao), China (Beijing), China (Zhangjiakou), China (Ulanqab), China (Shenzhen), China (Heyuan), China (Guangzhou), China (Chengdu), Hong Kong (China), Japan (Tokyo), South Korea (Seoul), Singapore, Indonesia (Jakarta), Thailand (Bangkok), Germany (Frankfurt), US (Silicon Valley), US (Virginia) ve UK (London).
PrivateLink'i yapılandırın ve kullanın
VPC'nizden veya şirket içi veri merkezinden OSS kaynaklarına güvenli erişim sağlamak için PrivateLink aracılığıyla özel bir bağlantı kuran bir uç nokta oluşturun.
Uç nokta oluşturun ve doğrulayın
Öncelikle VPC'niz ile OSS arasında güvenli, özel bir bağlantı kurmak için bir uç nokta oluşturun. Uç nokta oluşturulduktan sonra ağ bağlantısını doğrulamak için bir ECS örneği kullanın ve yapılandırmanın doğru olduğunu teyit etmek için OSS'e erişin.
Başlamadan önce bir VPC ve vSwitch oluşturduğunuzu doğrulayın. Doğrulama adımları bir ECS örneği gerektirir. Mevcut bir örneğiniz yoksa kullandıkça öde modeliyle bir örnek oluşturmak için ECS örneği satın alın bölümüne bakın.
Adım 1: Uç nokta oluşturun
VPC endpoint sayfasına gidin ve Create Endpoint seçeneğine tıklayın. Hizmeti ilk kez kullanıyorsanız ekrandaki talimatları izleyerek PrivateLink hizmetini etkinleştirin.
-
Aşağıdaki parametreleri yapılandırın ve listelenmeyen seçenekler için varsayılan değerleri koruyun.
Region: Hedef OSS paketinin bulunduğu bölgeyi seçin (örneğin, China (Hangzhou)).
Endpoint Name: Uç nokta için açıklayıcı bir ad girin (örneğin,
privatelink-oss).Endpoint Type: Interface Endpoint seçeneğini belirleyin.
Endpoint Service: Alibaba Cloud Service seçeneğini belirleyin ve ardından listeden OSS uç nokta hizmetini (adı
ossile biten girdi) seçin.VPC: Uç noktayı oluşturmak istediğiniz hedef VPC'yi seçin. Kullanılabilir bir VPC yoksa yeni bir tane oluşturmak için Create VPC seçeneğine tıklayın.
Security Groups: Erişim izinlerini kontrol etmek üzere uç noktaya bağlanacak güvenlik grubunu seçin. Uygun bir güvenlik grubu yoksa bir tane oluşturmak için Create Security Group seçeneğine tıklayın.
Zone and vSwitch: Uç nokta dağıtımı için kullanılabilirlik alanını ve ilgili vSwitch'i seçin. Kullanılabilir bir vSwitch yoksa yeni bir tane oluşturmak için Create vSwitch seçeneğine tıklayın.
-
OK seçeneğine tıklayın. Sistem uç noktayı otomatik olarak oluşturur. Oluşturma işleminden sonra uç nokta ayrıntıları sayfasında Domain Name of Endpoint Service değerini görüntüleyebilir ve kopyalayabilirsiniz. Sonraki OSS erişimi için bu alan adını kullanın.
Uç nokta hizmetinin alan adı
ep-<InstanceID>.oss.cn-hangzhou.privatelink.aliyuncs.combiçimindedir. Domain name of endpoint service bölümünde Copy seçeneğine tıklayarak alan adını alın.
Adım 2: Uç noktayı doğrulayın
PrivateLink uç noktasının doğru yapılandırıldığını onaylamak için bir bağlantı testi çalıştırın ve bir dosya indirin.
-
Ağ bağlantısını doğrulayın
DNS çözümlemesinin ve ağ yolunun doğru olduğunu onaylamak için uç nokta alan adına yönelik ağ bağlantısını test etmek amacıyla
pingkomutunu kullanın.ping -c 4 ep-bp1i****************.oss.cn-hangzhou.privatelink.aliyuncs.com -
Dosya indirmeyi doğrulayın
Aynı bölgedeki bir ECS örneğinden ossutil kullanarak PrivateLink bağlantısı üzerinden bir dosya indirin ve veri aktarımının uçtan uca çalıştığını onaylayın.
-
OSS kaynaklarına erişmek için uç nokta alan adını (örneğin,
ep-bp1i****************.oss.cn-hangzhou.privatelink.aliyuncs.com) kullanın. Aşağıdaki örnek,example-bucketadlı bir pakettendest.jpgadlı bir dosyayı indirir:ossutil cp oss://example-bucket/dest.jpg /tmp/ -e ep-bp1i****************.oss.cn-hangzhou.privatelink.aliyuncs.com --addressing-style pathKomut başarılı olduğunda aşağıdaki çıktı görüntülenir; bu, dosyanın indirildiğini gösterir. İndirilen dosyayı
/tmpdizininde görüntüleyebilirsiniz.Success: Total 1 object, size 134102 B, Download done:(1 files, 134102 B), avg 680.112 KiB/s 0.193189(s) elapsed
VPC erişim güvenliğini güçlendirin
PrivateLink işlevselliğini doğruladıktan sonra bir paket ilkesi yapılandırarak güvenliği daha da artırabilirsiniz. Aşağıdaki örnek, istekleri yalnızca PrivateLink uç noktasına bağlı VPC'den gelecek şekilde kısıtlamayı gösterir. Bu yaklaşım, hem ağ hem de uygulama katmanlarında erişim kontrolü uygulamanızı sağlar.
Bucket list sayfasına gidin ve hedef pakete tıklayın.
Sol gezinme bölmesinde seçeneğine tıklayın.
-
Authorize seçeneğine tıklayın ve aşağıdaki ayarları yapılandırın. Diğer parametreler için varsayılan seçenekleri koruyabilirsiniz.
Authorized User: All Accounts (*) seçeneğini belirleyin.
Authorized Operation: Advanced Settings seçeneğini belirleyin.
Effect: Reject seçeneğini belirleyin.
Actions: oss:GetObject seçeneğini belirleyin.
Condition: VPC ≠ seçeneğini belirleyin ve açılan listeden PrivateLink uç noktanıza bağlı VPC'yi seçin.
Paket ilkesi yapılandırmasını tamamlamak için OK seçeneğine tıklayın.
Yerel cihazları SSL-VPN kullanarak bağlayın
SSL-VPN çözümü, geliştirici iş istasyonları veya mobil cihazlar gibi bireysel yerel cihazların şifrelenmiş bir tünel aracılığıyla VPC'nize bağlanmasını sağlar. Bir cihaz tünel kurduktan sonra yapılandırılmış PrivateLink uç noktasını kullanarak OSS'e güvenli şekilde erişebilir. Bu yaklaşım uzaktan çalışma, geliştirme ve test ile acil durum erişimi senaryoları için uygundur.
Adım 1: SSL-VPN ağ geçidi oluşturun ve istemciyi yapılandırın
Yerel cihazınız ile VPC arasında şifrelenmiş bir bağlantı kurmak için bir SSL-VPN ağ geçidi dağıtın ve istemci yapılandırmasını tamamlayın. Ayrıntılı yapılandırma adımları için SSL-VPN bağlantısı kullanarak bir PC'yi veya Android cihazı VPC'ye bağlama bölümüne bakın.
Adım 2: OSS'e PrivateLink erişimini doğrulayın
Özel erişim bağlantısının işlevsel olduğunu sağlamak için bir bağlantı testi çalıştırın ve bir dosya indirerek PrivateLink bağlantısını doğrulayın.
-
Bağlantıyı doğrulayın
DNS çözümlemesinin ve ağ yolunun doğru olduğunu onaylamak için uç nokta alan adına yönelik ağ bağlantısını test etmek amacıyla
pingkomutunu kullanın.ping -c 4 ep-bp1i****************.oss.cn-hangzhou.privatelink.aliyuncs.com -
Dosya indirmeyi doğrulayın
ossutil
Bir dosya işlemi gerçekleştirerek bağlantıyı doğrulamak için ossutil kullanın.
-
OSS kaynaklarına erişmek için uç nokta alan adını (örneğin,
ep-bp1i****************.oss.cn-hangzhou.privatelink.aliyuncs.com) kullanın. Aşağıdaki örnek,example-bucketadlı bir pakettendest.jpgadlı bir dosyayı indirir:ossutil cp oss://example-bucket/dest.jpg /tmp/ -e ep-bp1i****************.oss.cn-hangzhou.privatelink.aliyuncs.com --addressing-style pathKomut başarılı olduğunda aşağıdaki çıktı görüntülenir; bu, dosyanın indirildiğini gösterir. İndirilen dosyayı
/tmpdizininde görüntüleyebilirsiniz.Success: Total 1 object, size 134102 B, Download done:(1 files, 134102 B), avg 680.112 KiB/s 0.193189(s) elapsed
SDK
SDK kullanımı üretim ortamına daha yakındır; karmaşık iş mantığı entegrasyonunu ve özel durum işlemeyi destekler. Aşağıdaki SDK'lar PrivateLink aracılığıyla OSS'e erişimi destekler.
Java
PrivateLink aracılığıyla OSS'e erişirken yol stili erişim modunu etkinleştirmek için
setSLDEnabled(true)yöntemini çağırın. Genel ağ erişimi içinsetSLDEnabled(false)olarak ayarlayın.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; /** * OSS PrivateLink access example * Demonstrates how to access OSS and download a file by using PrivateLink */ public class Test { public static void main(String[] args) throws Exception { // PrivateLink endpoint domain name. String endpoint = "https://ep-bp1i****************.oss.cn-hangzhou.privatelink.aliyuncs.com"; // Specify the region that corresponds to the endpoint, for example, cn-hangzhou. String region = "cn-hangzhou"; // Obtain credentials from environment variables. // Before running, set the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables. EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider(); // Specify the bucket name, for example, example-bucket. String bucketName = "example-bucket"; // Specify the full path of the object, excluding the bucket name. String objectName = "dest.jpg"; // Specify the local file name. String pathName = "dest.jpg"; // Configure client parameters. ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration(); // Enable path-style access for PrivateLink access. Set to false for public access via the bucket's internet domain name. clientBuilderConfiguration.setSLDEnabled(true); // Explicitly declare the use of the Signature Version 4 algorithm. clientBuilderConfiguration.setSignatureVersion(SignVersion.V4); // Create an OSS client instance. OSS ossClient = OSSClientBuilder.create() .endpoint(endpoint) .credentialsProvider(credentialsProvider) .clientConfiguration(clientBuilderConfiguration) .region(region) .build(); try { // Download the object to a local file. // If the specified local file exists, it will be overwritten. If not, it will be created. // If no local path is specified, the downloaded file is saved by default to the project's root directory. ossClient.getObject(new GetObjectRequest(bucketName, objectName), new File(pathName)); } catch (OSSException oe) { // Handle OSS server-side exceptions. 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) { // Handle client-side exceptions. 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 { // Release resources. if (ossClient != null) { ossClient.shutdown(); } } } }Python
PrivateLink aracılığıyla OSS'e erişirken yol stili erişim modunu etkinleştirmek için
is_path_style=Trueparametresini ayarlayın.# -*- coding: utf-8 -*- """ OSS PrivateLink access example Accesses OSS via PrivateLink and downloads a file locally. """ import oss2 from oss2.credentials import EnvironmentVariableCredentialsProvider def main(): """Main function: Demonstrates accessing OSS and downloading a file via PrivateLink.""" # Configure access credentials. # Note: An Alibaba Cloud account's AccessKey has all API permissions and carries high risk. # We strongly recommend creating and using a RAM user for API access or daily O&M. Log in to the RAM console to create a RAM user. auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider()) # PrivateLink endpoint domain name. endpoint = 'https://ep-bp1i****************.oss.cn-hangzhou.privatelink.aliyuncs.com' # Bucket name. bucket_name = 'example-bucket' # Create a Bucket object. # is_path_style=True enables path-style access mode, which is suitable for scenarios like PrivateLink. bucket = oss2.Bucket(auth, endpoint, bucket_name, is_path_style=True) # OSS object path (full path excluding the bucket name). object_name = 'dest.jpg' # Local path to save the file. local_file_path = 'dest.jpg' # Download the object to a local file. # If the specified local file exists, it will be overwritten. If not, a new file will be created. 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
PrivateLink aracılığıyla OSS'e erişirken yol stili erişim modunu etkinleştirmek için
ForcePathStyle(true)yöntemini kullanın.package main import ( "fmt" "os" "github.com/aliyun/aliyun-oss-go-sdk/oss" ) const ( // PrivateLink endpoint domain name. endpoint = "https://ep-bp1i****************.oss.cn-hangzhou.privatelink.aliyuncs.com" // Bucket name. bucketName = "example-bucket" // OSS object path (full path excluding the bucket name). objectName = "dest.jpg" // Local path to save the file. localFilePath = "dest.jpg" ) func main() { // Initialize the access credentials provider. // Obtain credentials from environment variables. // Before running this code example, make sure the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are set. provider, err := oss.NewEnvironmentVariableCredentialsProvider() if err != nil { fmt.Printf("Failed to initialize credentials provider: %v\n", err) os.Exit(-1) } // Create an OSS client instance. // oss.ForcePathStyle(true) enables path-style access mode, which is suitable for scenarios like PrivateLink. client, err := oss.New( endpoint, "", // AccessKeyId is obtained through the credentials provider. "", // AccessKeySecret is obtained through the credentials provider. oss.SetCredentialsProvider(&provider), oss.ForcePathStyle(true), ) if err != nil { fmt.Printf("Failed to create OSS client: %v\n", err) os.Exit(-1) } // Get the Bucket object. bucket, err := client.Bucket(bucketName) if err != nil { fmt.Printf("Failed to get Bucket object: %v\n", err) os.Exit(-1) } // Download the object to a local file. // If the specified local file exists, it will be overwritten. If not, a new file will be created. // If no local path is specified, the downloaded file is saved by default to the project's root directory. 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++
PrivateLink aracılığıyla OSS'e erişirken yol stili erişim modunu etkinleştirmek için
conf.isPathStyle = trueparametresini ayarlayın.#include <alibabacloud/oss/OssClient.h> #include <memory> #include <fstream> #include <iostream> using namespace AlibabaCloud::OSS; int main(void) { // PrivateLink endpoint domain name. std::string Endpoint = "https://ep-bp1i****************.oss.cn-hangzhou.privatelink.aliyuncs.com"; // Bucket name. std::string BucketName = "example-bucket"; // OSS object path (must not include the bucket name). std::string ObjectName = "dest.jpg"; // Local path to save the file. // If the specified local file exists, it will be overwritten. If not, a new file will be created. // If no local path is specified, the downloaded file is saved by default to the project's root directory. std::string FileNametoSave = "dest.jpg"; // Initialize OSS SDK resources. InitializeSdk(); // Configure client parameters. ClientConfiguration conf; // Obtain credentials from environment variables. // Before running this code example, make sure the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are set. auto credentialsProvider = std::make_shared<EnvironmentVariableCredentialsProvider>(); // Enable path-style access mode, which is suitable for scenarios like PrivateLink. conf.isPathStyle = true; // Create an OSS client instance. OssClient client(Endpoint, credentialsProvider, conf); // Build the GetObject request. GetObjectRequest request(BucketName, ObjectName); // Set the response stream factory to create a local file stream. 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 ); }); // Execute the download operation. auto outcome = client.GetObject(request); // Process the download result. 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 { // Handle errors. 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; // Release resources and return an error code. ShutdownSdk(); return -1; } // Release OSS SDK resources. ShutdownSdk(); return 0; }
Veri merkezlerini Express Connect veya VPN ile bağlayın
Şirket içi bir veri merkezi, bir Express Connect devresi veya VPN ağ geçidi aracılığıyla bir Alibaba Cloud VPC'ye bağlanabilir ve ardından özel ağ üzerinden OSS'e erişmek için PrivateLink'i kullanabilir. Express Connect kararlı ağ performansı ve garantili bant genişliği sağlarken VPN ağ geçidi esnek, şifrelenmiş bir bağlantı sunar. Her iki çözüm de üretim ortamlarındaki büyük ölçekli veri aktarımı için uygundur. Ayrıntılı yapılandırma yöntemleri için VPC'yi şirket içi veri merkezine veya başka bir cloud'a bağlama bölümüne bakın.
Üretim ortamı
En iyi uygulamalar
-
Güvenlik grubu yapılandırmalarını optimize edin
En az ayrıcalık ilkesine göre güvenlik grubu kuralları yapılandırın. Uç nokta erişim bağlantı noktalarını yalnızca gerekli IP adresi aralıklarına açın ve düzenli bir güvenlik kuralı inceleme mekanizması oluşturun. Hassas kaynak IP ve bağlantı noktası kontrolleri, erişim ilkelerinin iş gereksinimleriyle uyumlu olmasını sağlayarak izin yayılımını ve yetkisiz erişimi önler.
-
Ağ bağlantısını izleyin
VPC akış günlükleri özelliğini etkinleştirin ve trafik desenlerine dayalı bir anormallik algılama mekanizması kurarak PrivateLink erişim davranışını ve veri aktarım durumunu gerçek zamanlı olarak izleyin.
-
Çok alanlı bir dağıtım kullanın
Üretim ortamında yüksek kullanılabilirliğe ve hata toleransına sahip bir mimari oluşturmak için uç noktaları birden fazla kullanılabilirlik alanına dağıtın. Trafiği dağıtmak için yük dengeleme veya DNS yuvarlak robin kullanımını göz önünde bulundurun. Bir kullanılabilirlik alanı başarısız olursa trafik otomatik olarak diğer alanlardaki sağlıklı uç noktalara yönlendirilir; bu da hizmet sürekliliğini ve iş sürekliliğini garanti eder.
Faturalama
PrivateLink, gerçek kullanıma göre saatlik olarak faturalandırılır. Ücretler bir örnek ücreti ve veri işleme ücreti içerir. Hizmet kullanıcısı ve hizmet sağlayıcı farklı Alibaba Cloud hesapları olabilir ve ücretler belirtilen bir hesaba faturalandırılabilir. Daha fazla faturalama bilgisi için Faturalandırmaya genel bakış bölümüne bakın.