PrivateLink établit une connexion sécurisée et privée entre un Virtual Private Cloud (VPC) et le service Object Storage Service (OSS) d'Alibaba Cloud. Cette connexion offre une isolation native du trafic au niveau réseau pour atténuer les risques de sécurité lors du transfert de données, résoudre les conflits d'adresses réseau et réduire la complexité opérationnelle. PrivateLink vous aide à mettre en place une architecture sécurisée et maîtrisée pour l'accès au stockage cloud.
Fonctionnement
PrivateLink crée un endpoint privé dédié dans votre VPC qui se connecte au service Alibaba Cloud OSS. Cela garantit que tout le trafic d'accès circule exclusivement sur le réseau dorsal d'Alibaba Cloud et jamais sur l'internet public. Il offre également un contrôle d'accès précis basé sur l'adresse IP source et des capacités d'audit via les journaux de flux VPC pour construire un cadre de sécurité des données de niveau entreprise. Par rapport à l'endpoint interne fourni par OSS, PrivateLink offre un niveau supérieur d'isolation de sécurité réseau native et un contrôle granulaire, ce qui le rend adapté aux cas d'utilisation suivants :
|
Cas d'utilisation |
Endpoint interne standard |
PrivateLink |
|
Exigences strictes en matière de sécurité et de conformité |
Les endpoints standard utilisent un point d'entrée de service public, ce qui expose la surface d'attaque à tous les VPC de la région. Le contrôle de la sécurité repose principalement sur des politiques au niveau applicatif. |
Réduit la surface d'attaque. L'endpoint se trouve dans votre VPC, empêchant les autres VPC de le découvrir ou d'y accéder. Le trafic est isolé nativement au niveau réseau. |
|
Besoin d'un contrôle granulaire au niveau réseau sur les sources d'accès |
Vous ne pouvez pas utiliser un groupe de sécurité pour contrôler l'accès à OSS. Vous devez vous fier uniquement à une politique de bucket. |
Prend en charge la liaison de groupes de sécurité. Vous pouvez associer des règles de groupe de sécurité à l'endpoint PrivateLink pour contrôler précisément quelles adresses IP sources peuvent accéder à OSS. |
|
Besoin d'auditer toutes les tentatives de connexion réseau |
Les journaux d'accès OSS n'enregistrent que les requêtes réussies et ne permettent pas d'auditer les tentatives de connexion rejetées au niveau réseau. |
Prend en charge les journaux de flux VPC. Vous pouvez capturer et auditer tout le trafic qui tente d'accéder à l'endpoint, indépendamment du succès de la connexion. |
|
Architecture réseau cloud hybride complexe avec des conflits d'adresses IP potentiels |
Les services cloud utilisent par défaut le bloc CIDR 100.64.0.0/10, ce qui peut entrer en conflit avec le plan réseau de votre centre de données sur site. |
Évite les conflits d'IP. L'endpoint utilise une adresse IP issue de l'espace d'adressage de votre VPC, respectant pleinement votre plan IP personnalisé et simplifiant les configurations de routage cloud hybride. |
Régions prises en charge
Chine (Hangzhou), Chine (Shanghai), Chine (Qingdao), Chine (Pékin), Chine (Zhangjiakou), Chine (Ulanqab), Chine (Shenzhen), Chine (Heyuan), Chine (Guangzhou), Chine (Chengdu), Hong Kong (Chine), Japon (Tokyo), Corée du Sud (Séoul), Singapour, Indonésie (Jakarta), Thaïlande (Bangkok), Allemagne (Francfort), États-Unis (Silicon Valley), États-Unis (Virginie) et Royaume-Uni (Londres).
Configurer et utiliser PrivateLink
Créez un endpoint pour établir une connexion PrivateLink afin d'accéder de manière sécurisée aux ressources OSS depuis votre VPC ou votre centre de données sur site.
Créer et vérifier un endpoint
Commencez par créer un endpoint pour établir une connexion sécurisée et privée entre votre VPC et OSS. Après la création de l'endpoint, vérifiez sa connectivité réseau et l'accès à OSS depuis une instance ECS pour confirmer que la configuration est fonctionnelle.
Avant de commencer, assurez-vous d'avoir créé un VPC et un vSwitch . Les étapes de vérification nécessitent une instance ECS. Si vous ne disposez pas d'une instance existante, consultez Acheter une instance ECS pour créer une instance à la demande.
Étape 1 : Créer un endpoint
Accédez à la page Endpoint VPC et cliquez sur Create Endpoint. S'il s'agit de votre première utilisation, suivez les instructions à l'écran pour activer le service PrivateLink.
-
Configurez les paramètres suivants. Vous pouvez laisser les autres paramètres à leurs valeurs par défaut.
Region : sélectionnez la région où se trouve le bucket OSS cible, par exemple Chine (Hangzhou).
Endpoint Name : saisissez un nom descriptif pour l'endpoint, par exemple
privatelink-oss.Endpoint Type : sélectionnez Interface Endpoint.
-
Endpoint Service : sélectionnez Alibaba Cloud Service, puis sélectionnez le service d'endpoint OSS dans la liste des services. Le nom du service se termine par
oss.RemarqueSi le service d'endpoint OSS n'apparaît pas dans la liste des services, contactez le support technique pour demander l'activation.
VPC : sélectionnez le VPC cible dans lequel vous souhaitez créer l'endpoint. Si aucun VPC n'est disponible, cliquez sur Create VPC pour en créer un.
Security Groups : sélectionnez le groupe de sécurité à associer à l'endpoint pour le contrôle d'accès. Si aucun groupe de sécurité approprié n'existe, cliquez sur Create Security Group pour en créer un.
Zone and vSwitch : sélectionnez la zone de disponibilité et le vSwitch correspondant où vous souhaitez déployer l'endpoint. Si aucun vSwitch n'est disponible, cliquez sur Create vSwitch pour en créer un.
-
Cliquez sur OK. Le système crée automatiquement l'endpoint. Une fois l'endpoint créé, accédez à la page des détails de l'endpoint pour afficher et copier le Domain Name of Endpoint Service, que vous utiliserez pour accéder à OSS.

Étape 2 : Vérifier l'endpoint
Exécutez un test de connectivité et téléchargez un fichier pour confirmer que l'endpoint PrivateLink est fonctionnel.
-
Vérifier la connectivité réseau
Utilisez la commande
pingpour tester le nom de domaine de l'endpoint et confirmer que la résolution DNS et le chemin réseau fonctionnent.ping -c 4 ep-bp1i****************.oss.cn-hangzhou.privatelink.aliyuncs.com -
Vérifier le téléchargement de fichier
Depuis une instance ECS située dans la même région, utilisez ossutil pour télécharger un fichier depuis OSS. Cela permet de vérifier la fonctionnalité de bout en bout de la connexion PrivateLink.
-
Utilisez le nom de domaine de l'endpoint (par exemple,
ep-bp1i****************.oss.cn-hangzhou.privatelink.aliyuncs.com) pour accéder aux ressources OSS. L'exemple suivant télécharge un fichier nommédest.jpgdepuis un bucket nomméexample-bucket:ossutil cp oss://example-bucket/dest.jpg /tmp/ -e ep-bp1i****************.oss.cn-hangzhou.privatelink.aliyuncs.com --addressing-style pathUne exécution réussie de la commande renvoie la sortie suivante, indiquant que le fichier est téléchargé. Vous pouvez consulter le fichier téléchargé dans le répertoire
/tmp.Success: Total 1 object, size 134102 B, Download done:(1 files, 134102 B), avg 680.112 KiB/s 0.193189(s) elapsed
Renforcer la sécurité pour l'accès VPC
Après avoir vérifié la fonctionnalité de PrivateLink, configurez une politique de bucket pour renforcer davantage la sécurité. L'exemple suivant montre comment restreindre l'accès aux fichiers uniquement au VPC associé à PrivateLink, mettant ainsi en œuvre un contrôle d'accès aux niveaux réseau et applicatif.
Accédez à la liste des buckets et cliquez sur le bucket cible.
Dans le volet de navigation de gauche, cliquez sur .
-
Cliquez sur Authorize et configurez les paramètres suivants. Vous pouvez laisser les autres paramètres à leurs valeurs par défaut.
Authorized User : sélectionnez All Accounts (*).
Authorized Operation : sélectionnez Advanced Settings.
Effect : sélectionnez Reject.
Actions : sélectionnez oss:GetObject.
Condition : sélectionnez VPC ≠ et choisissez le VPC associé à PrivateLink dans la liste déroulante.
Cliquez sur OK pour enregistrer la politique de bucket.
Connecter des appareils locaux via SSL-VPN
Une passerelle SSL-VPN déployée dans un VPC permet aux appareils locaux individuels, tels que les postes de travail des développeurs ou les appareils mobiles, de se connecter rapidement et de manière flexible à votre VPC. Une fois qu'un appareil a établi un tunnel chiffré à l'aide de SSL-VPN, il peut accéder de manière sécurisée à OSS via l'endpoint PrivateLink configuré. Cette approche convient aux scénarios de travail à distance, de développement et de test, ainsi qu'aux accès d'urgence.
Étape 1 : Créer une passerelle SSL-VPN et configurer le client
Déployez une passerelle SSL-VPN et configurez le client pour établir une connexion chiffrée entre votre appareil local et le VPC. Pour les étapes détaillées, consultez Connecter un PC ou un client Android à un VPC à l'aide d'une connexion SSL-VPN.
Étape 2 : Vérifier l'accès privé à OSS
Exécutez un test de connectivité et téléchargez un fichier pour confirmer que la connexion PrivateLink depuis l'appareil local est fonctionnelle.
-
Vérifier la connectivité
Utilisez la commande
pingpour tester le nom de domaine de l'endpoint et confirmer que la résolution DNS et le chemin réseau fonctionnent.ping -c 4 ep-bp1i****************.oss.cn-hangzhou.privatelink.aliyuncs.com -
Vérifier le téléchargement de fichier
ossutil
Utilisez ossutil pour effectuer une opération sur un fichier afin de vérifier la fonctionnalité de la connexion PrivateLink.
-
Utilisez le nom de domaine de l'endpoint (par exemple,
ep-bp1i****************.oss.cn-hangzhou.privatelink.aliyuncs.com) pour accéder aux ressources OSS. L'exemple suivant télécharge un fichier nommédest.jpgdepuis un bucket nomméexample-bucket:ossutil cp oss://example-bucket/dest.jpg /tmp/ -e ep-bp1i****************.oss.cn-hangzhou.privatelink.aliyuncs.com --addressing-style pathUne exécution réussie de la commande renvoie la sortie suivante, indiquant que le fichier est téléchargé. Vous pouvez consulter le fichier téléchargé dans le répertoire
/tmp.Success: Total 1 object, size 134102 B, Download done:(1 files, 134102 B), avg 680.112 KiB/s 0.193189(s) elapsed
SDK
L'utilisation d'un SDK est plus représentative des environnements de production car elle permet une logique métier complexe et une gestion des exceptions.
Java
Lorsque vous accédez à OSS via PrivateLink, appelez
setSLDEnabled(true)pour activer l'accès de type path-style. Pour l'accès via l'internet public, définissez ce paramètre sursetSLDEnabled(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; /** * 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 { // The PrivateLink endpoint domain. 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 you run this sample code, make sure that the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are set. EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider(); // Specify the bucket name. For example, example-bucket. String bucketName = "example-bucket"; // Specify the full path of the object. Do not include the bucket name in the full path. String objectName = "dest.jpg"; // Specify the local path to save the downloaded file. String pathName = "dest.jpg"; // Configure client parameters. ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration(); // Enable path-style access for PrivateLink. Set this parameter to false for public internet access through the bucket's public domain name. clientBuilderConfiguration.setSLDEnabled(true); // Explicitly use Signature Version 4. 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 is overwritten. If it does not exist, it is created. // If you do not specify a local path, the file is downloaded 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
Lorsque vous accédez à OSS via PrivateLink, définissez
is_path_style=Truepour activer l'accès de type path-style.# -*- coding: utf-8 -*- """ OSS PrivateLink access example This sample shows how to access OSS and download a file to a local path over a PrivateLink connection. """ import oss2 from oss2.credentials import EnvironmentVariableCredentialsProvider def main(): """Main function: Demonstrates how to access OSS and download a file by using PrivateLink.""" # Configure credentials. # An Alibaba Cloud account AccessKey pair has full permissions on all API operations. Using these credentials poses a high security risk. # We strongly recommend that you create and use a RAM user to call API operations or perform routine O&M. auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider()) # The PrivateLink endpoint domain. endpoint = 'https://ep-bp1i****************.oss.cn-hangzhou.privatelink.aliyuncs.com' # The bucket name. bucket_name = 'example-bucket' # Create a Bucket object. # Set is_path_style=True to enable path-style access, which is required for scenarios like PrivateLink. bucket = oss2.Bucket(auth, endpoint, bucket_name, is_path_style=True) # The path of the OSS object. Do not include the bucket name in the path. object_name = 'dest.jpg' # The local path to save the downloaded file. local_file_path = 'dest.jpg' # Download the object to a local file. # If the specified local file exists, it is overwritten. If it does not exist, it is 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
Lorsque vous accédez à OSS via PrivateLink, utilisez
ForcePathStyle(true)pour activer l'accès de type path-style.package main import ( "fmt" "os" "github.com/aliyun/aliyun-oss-go-sdk/oss" ) const ( // The PrivateLink endpoint domain. endpoint = "https://ep-bp1i****************.oss.cn-hangzhou.privatelink.aliyuncs.com" // The bucket name. bucketName = "example-bucket" // The path of the OSS object. Do not include the bucket name in the path. objectName = "dest.jpg" // The local path to save the downloaded file. localFilePath = "dest.jpg" ) func main() { // Initialize the credentials provider. // Obtain credentials from environment variables. // Before you run this sample code, make sure that 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 the credentials provider: %v\n", err) os.Exit(-1) } // Create an OSS client instance. // Use oss.ForcePathStyle(true) to enable path-style access, which is required for scenarios like PrivateLink. client, err := oss.New( endpoint, "", // The AccessKey ID is obtained from the provider and can be left empty here. "", // The AccessKey secret is obtained from the provider and can be left empty here. oss.SetCredentialsProvider(&provider), oss.ForcePathStyle(true), ) if err != nil { fmt.Printf("Failed to create the OSS client: %v\n", err) os.Exit(-1) } // Obtain the bucket object. bucket, err := client.Bucket(bucketName) if err != nil { fmt.Printf("Failed to obtain the bucket object: %v\n", err) os.Exit(-1) } // Download the object to a local file. // If the specified local file exists, it is overwritten. If it does not exist, it is created. // If you do not specify a local path, the file is downloaded to the project's root directory. err = bucket.GetObjectToFile(objectName, localFilePath) if err != nil { fmt.Printf("Failed to download the file: %v\n", err) os.Exit(-1) } fmt.Printf("File downloaded successfully: %s -> %s\n", objectName, localFilePath) }C++
Lorsque vous accédez à OSS via PrivateLink, définissez
conf.isPathStyle = truepour activer l'accès de type path-style.#include <alibabacloud/oss/OssClient.h> #include <memory> #include <fstream> #include <iostream> using namespace AlibabaCloud::OSS; int main(void) { // The PrivateLink endpoint domain. std::string Endpoint = "https://ep-bp1i****************.oss.cn-hangzhou.privatelink.aliyuncs.com"; // The bucket name. std::string BucketName = "example-bucket"; // The path of the OSS object. Do not include the bucket name in the path. std::string ObjectName = "dest.jpg"; // The local path to save the downloaded file. // If the specified local file exists, it is overwritten. If it does not exist, it is created. // If you do not specify a local path, the file is downloaded 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 you run this sample code, make sure that the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are set. auto credentialsProvider = std::make_shared<EnvironmentVariableCredentialsProvider>(); // Enable path-style access, which is required for scenarios like PrivateLink. conf.isPathStyle = true; // Create an OSS client instance. OssClient client(Endpoint, credentialsProvider, conf); // Build a request to download the object. GetObjectRequest request(BucketName, ObjectName); // Set a 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); // Handle the download result. if (outcome.isSuccess()) { std::cout << "File downloaded successfully. Size: " << outcome.result().Metadata().ContentLength() << " bytes" << std::endl; std::cout << "Saved to: " << FileNametoSave << std::endl; } else { // Handle errors. std::cout << "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; }
Connecter des centres de données via Express Connect ou VPN
Les centres de données d'entreprise peuvent se connecter à un VPC Alibaba Cloud via un circuit Express Connect ou une passerelle VPN, puis utiliser PrivateLink pour accéder à OSS via un réseau privé. Express Connect offre des performances réseau stables et une bande passante garantie, tandis qu'une passerelle VPN fournit une connexion chiffrée flexible. Ces deux solutions conviennent au transfert de données à grande échelle dans les environnements de production. Pour plus d'informations, consultez Connecter un VPC à un centre de données sur site ou à un autre cloud.
Environnements de production
Bonnes pratiques
-
Optimiser les configurations de groupe de sécurité
Configurez les règles de groupe de sécurité selon le principe du moindre privilège. Accordez l'accès aux ports uniquement aux plages d'adresses IP nécessaires et examinez régulièrement les règles de sécurité. Un contrôle précis des adresses IP sources et des ports empêche les accès non autorisés et la prolifération des autorisations, garantissant que les politiques sont alignées sur les exigences métier.
-
Surveiller la connectivité réseau
Activez les journaux de flux VPC et utilisez les modèles de trafic pour détecter les anomalies et surveiller en temps réel le comportement d'accès PrivateLink et le transfert de données.
-
Déployer sur plusieurs zones de disponibilité
Dans un environnement de production, déployez les endpoints sur plusieurs zones de disponibilité pour assurer une haute disponibilité et une reprise après sinistre. Utilisez l'équilibrage de charge ou le round-robin DNS pour distribuer intelligemment le trafic. En cas de défaillance d'une seule zone de disponibilité, le trafic de service bascule automatiquement vers des endpoints sains dans d'autres zones de disponibilité, assurant la continuité du service et des opérations stables.
Facturation
PrivateLink est facturé à l'heure en fonction de l'utilisation réelle. Les frais incluent les frais d'instance et les frais de transfert de données. L'utilisateur du service et le fournisseur de service peuvent être des comptes Alibaba Cloud différents, et les frais peuvent être facturés à un compte désigné. Pour plus d'informations, consultez Présentation de la facturation.