Le Secrets Manager Client est un wrapper personnalisé construit au-dessus des API OpenAPI de KMS et des API d'instance KMS. Il intègre nativement la mise en cache et l'actualisation des secrets pour faciliter l'intégration dans vos applications. Cette approche améliore la stabilité de vos services et simplifie le travail des développeurs. Ce client permet de récupérer les valeurs des secrets pour tous les types pris en charge.
SDK du Secrets Manager Client
Le SDK du Secrets Manager Client encapsule les API KMS et intègre les bonnes pratiques ainsi que les modèles de conception liés à la mise en cache des secrets. Il facilite ainsi l'intégration de la gestion des secrets dans vos systèmes applicatifs. Ce SDK présente les avantages suivants :
Intégrez la gestion des secrets dans vos applications avec une seule ligne de code pour lire les valeurs des secrets.
Bénéficiez de fonctionnalités natives de mise en cache et d'actualisation des secrets directement dans votre application.
Profitez d'une logique de nouvelle tentative automatique en cas d'erreur d'API, avec une gestion intelligente des erreurs côté serveur.
Tirez parti d'une architecture basée sur des plugins qui vous permet de personnaliser la mise en cache, la logique de nouvelle tentative et d'autres modules.
Alibaba Cloud propose également le SDK d'instance KMS et le SDK Alibaba Cloud, qui permettent eux aussi de récupérer les valeurs des secrets. Pour plus d'informations, reportez-vous à Références des SDK.
Pour réaliser des opérations de gestion sur les secrets, utilisez impérativement le SDK Alibaba Cloud.
Versions du SDK
Le SDK 2.0 est désormais disponible et constitue la version recommandée. Le tableau suivant compare le SDK 1.0 et le SDK 2.0.
-
Prise en charge des identifiants
Type d'identifiant
SDK 1.0
SDK 2.0
AccessKey
OIDC Role Arn
ECS RAM Role
RAM Role Arn
RemarqueLe SDK 2.0 ne prend pas en charge la lecture des informations RAM Role ARN depuis les variables d'environnement et les fichiers de configuration par défaut. Vous devez utiliser l'approche codée en dur. Si cette fonctionnalité vous est nécessaire, contactez le support technique.
Client Key
-
Fonctionnalités de sécurité
Fonctionnalité
SDK 1.0
SDK 2.0
Certificat CA intégré
Flux d'authentification du SDK
Le Secrets Manager Client s'authentifie à l'aide d'identifiants d'accès. Le processus d'authentification varie légèrement selon le type de passerelle auquel vous vous connectez. Le SDK détecte automatiquement les paramètres configurés et sélectionne la passerelle appropriée. Grâce à ce mécanisme d'authentification flexible, aucune configuration manuelle du type de passerelle n'est requise. Voici les étapes d'authentification :
Définissez les variables d'environnement ou préparez le fichier de configuration, en veillant à inclure toutes les informations d'identification nécessaires. Les paramètres diffèrent entre les passerelles dédiées et les passerelles partagées.
Initialisez le client. Le SDK lit automatiquement la configuration et identifie le type de passerelle.
Une fois l'authentification terminée, poursuivez avec les opérations sur la passerelle.
Périmètre
Types de secrets pris en charge : secret générique, secret RAM, secret ECS, secret de base de données.
Langages de programmation pris en charge : Java (Java 8 ou version ultérieure), Python, Go, Node.js.
Installer le Secrets Manager Client
Les instructions suivantes expliquent comment installer le SDK 2.0. Pour l'installation du SDK 1.0, reportez-vous aux dépôts de code source respectifs du SDK.
Java
Installez le Secrets Manager Client dans votre projet à l'aide de Maven.
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>alibabacloud-secretsmanager-client-v2</artifactId>
<version>x.x.x</version>
</dependency>
Utilisez la dernière version du SDK 2.0 pour bénéficier des fonctionnalités et optimisations les plus récentes. Consultez alibabacloud-secretsmanager-client-java-v2 pour accéder au code d'exemple et au code source du SDK 2.0. Pour le SDK 1.0, rendez-vous sur alibabacloud-secretsmanager-client-java.
Python
Installez le Secrets Manager Client à l'aide de pip.
# If the following command fails, replace pip with pip3
pip install alibabacloud_secretsmanager_client_v2
L'installation du SDK Python V2 du Secrets Manager Client nécessite Python 3.7 ou version ultérieure. Exécutez
python3 --versionpour vérifier votre version actuelle. Si celle-ci est antérieure à la 3.7, mettez Python à niveau avant de lancer la commande d'installation.Privilégiez le SDK 2.0 pour profiter des dernières fonctionnalités et optimisations. Consultez aliyun-secretsmanager-client-python-v2 pour accéder au code d'exemple et au code source du SDK 2.0. Pour le SDK 1.0, rendez-vous sur aliyun-secretsmanager-client-python.
Go
Installez le Secrets Manager Client à l'aide de la commande go get.
go get -u github.com/aliyun/alibabacloud-secretsmanager-client-go-v2
Pour Go, la dépendance
alibaba-cloud-sdk-godoit être antérieure à la V1.63.0. Vérifiez votre fichiergo.modpour confirmer la version et éviter tout problème de compatibilité.Adoptez le SDK 2.0 afin de bénéficier des dernières fonctionnalités et optimisations. Consultez alibabacloud-secretsmanager-client-go-v2 pour accéder au code d'exemple et au code source du SDK 2.0. Pour le SDK 1.0, rendez-vous sur aliyun-secretsmanager-client-go.
Node.js
Installez le Secrets Manager Client à l'aide de npm ou yarn.
-
npm
npm install alibabacloud-secretsmanager-client-v2 -
yarn
yarn add alibabacloud-secretsmanager-client-v2
L'installation du SDK V2 du Secrets Manager Client requiert Node.js 16.0.0 ou version ultérieure.
Optez pour le SDK 2.0 afin de profiter des dernières fonctionnalités et optimisations. Consultez alibabacloud-secretsmanager-client-nodejs-v2 pour accéder au code d'exemple et au code source du SDK 2.0.
Configurer les identifiants d'accès
ECS RAM Role
Étape 1 : Créer un rôle RAM et configurer les permissions
Un rôle RAM d'instance ECS vous permet d'obtenir un identifiant d'accès temporaire (jeton STS) depuis une instance ECS pour appeler les opérations d'API KMS, sans avoir à configurer de paire d'AccessKey.
Pour plus d'informations, reportez-vous à Rôles RAM d'instance.
-
Connectez-vous à la console RAM et créez un rôle RAM pour un service Alibaba Cloud de confiance.
Trusted Entity Type : sélectionnez Elastic Compute Service.
Entité de confiance : sélectionnez Elastic Compute Service (ECS).
-
Accordez au rôle RAM les permissions d'accès à KMS.
-
Méthode 1 : configurer une politique basée sur l'identité
Dans la colonne Actions du rôle RAM, cliquez sur Grant Permission pour attacher au rôle RAM une politique de permissions système intégrée pour KMS. Pour plus d'informations sur les politiques de permissions système pour KMS, reportez-vous à Politiques système pour KMS.
RemarqueVous avez également la possibilité de créer des politiques de permissions personnalisées. Pour plus d'informations, reportez-vous à Créer une politique personnalisée.
-
Méthode 2 : configurer une politique basée sur les ressources
KMS prend en charge les politiques basées sur les ressources, qui accordent des permissions d'accès à des clés et des secrets individuels. Ces politiques vous permettent de contrôler quels comptes Alibaba Cloud, utilisateurs RAM et rôles RAM peuvent gérer ou utiliser les clés et secrets KMS. Pour plus d'informations, reportez-vous à Politiques de clé et Politiques de secret.
-
Connectez-vous à la console ECS et attachez le rôle RAM à une instance ECS.
Étape 2 : Définir les variables d'environnement ou le fichier de configuration
Le SDK propose deux méthodes pour obtenir les identifiants d'accès :
-
Variables d'environnement : les méthodes de configuration varient selon le système d'exploitation. Pour plus d'informations, consultez la section relative à la définition des identifiants d'accès dans les variables d'environnement.
AvertissementNe modifiez pas les noms des paramètres. Dans le cas contraire, le SDK ne pourra pas les reconnaître.
-
Fichier de configuration : le fichier de configuration par défaut est
secretsmanager.properties(son nom ne peut pas être modifié). Pour garantir le chargement correct du fichier de configuration par votre application, placez-le dans le répertoire de configuration approprié. Voici les répertoires de configuration courants selon les langages :Java : placez le fichier de configuration dans le répertoire
src/main/resourcesafin qu'il soit automatiquement inclus dans le classpath lors de la compilation.Go : placez le fichier de configuration à la racine du projet ou dans un répertoire
configdédié, puis chargez-le via le code.Python : placez le fichier de configuration dans le répertoire du projet ou dans un répertoire
configspécifique, puis utilisez une méthode adaptée (commeos.pathoupkg_resources) pour le charger.
Si vous utilisez un fichier de configuration personnalisé, spécifiez son chemin (
#customConfigFileName#) lors de l'initialisation du client.
Fichier de configuration
-
Passerelle dédiée
# Credential type credentials_type=ecs_ram_role # ECS RAM Role name credentials_role_name=#credentials_role_name# # Associated KMS region and instance endpoint cache_client_region_id=[{"regionId":"<regionId>","endpoint":"<your_kms_instance_id>.cryptoservice.kms.aliyuncs.com"}] -
Passerelle partagée
# Credential type credentials_type=ecs_ram_role # ECS RAM Role name credentials_role_name=#credentials_role_name# # Associated KMS region cache_client_region_id=[{"regionId":"#regionId#"}] -
Passerelle partagée (VPC)
# Credential type credentials_type=ecs_ram_role # ECS RAM Role name credentials_role_name=#credentials_role_name# # Associated KMS region and VPC Endpoint cache_client_region_id=[{"regionId":"#regionId#","endpoint":"kms-vpc.#regionId#.aliyuncs.com","vpc":"true"}]
Variables d'environnement
|
Paramètre |
Valeur |
|
|
Valeur fixe : |
|
|
Nom du rôle RAM. |
|
|
|
AccessKey
Instructions
Lisez le texte anglais pour comprendre CE qui doit être communiqué.
Rédigez le français À PARTIR DE ZÉRO — oubliez la structure des phrases anglaises.
Conservez exactement toute la mise en forme Markdown, les blocs de code, les liens et les images.
Balises xref (
<a data-tag="xref" ...>texte</a>) — conservez la balise ENTIÈRE avec tous ses attributs dans leur ordre et casse d'origine, traduisez UNIQUEMENT le texte visible entre > et .Appliquez strictement toutes les règles spécifiques à la langue.
Appliquez les règles relatives aux mots vides (stopwords) avec une tolérance zéro.
Utilisez le mode impératif dans les étapes numérotées et les listes à puces procédurales.
Assurez la cohérence terminologique — un même terme = une même traduction partout.
Variez les débuts de phrase dans les listes et tableaux — aucun début de phrase ne doit apparaître plus de 3 fois.
-
Retournez UNIQUEMENT le document Markdown en français, sans explication.
Étape 1 : Créer un AccessKey et configurer les permissions
AvertissementPar défaut, un compte Alibaba Cloud dispose de permissions d'administrateur sur toutes les ressources. Ces permissions ne peuvent pas être modifiées. Pour garantir la sécurité de vos ressources, nous vous recommandons d'utiliser un utilisateur RAM pour créer une paire d'AccessKey et de lui accorder uniquement les permissions nécessaires.
Connectez-vous à la console RAM. Dans la page Users, cliquez sur le nom de l'utilisateur RAM cible.
Dans l'onglet Secret Management, section AccessKey, cliquez sur Create AccessKey.
-
Accordez à l'utilisateur RAM les permissions d'accès à KMS.
-
Méthode 1 : Configurer une politique basée sur l'identité
Dans la colonne Actions correspondant à l'utilisateur RAM, cliquez sur Grant Permission afin d'attacher une politique de permissions système intégrée pour KMS. Pour plus d'informations sur ces politiques, consultez Politiques système pour KMS.
RemarqueVous avez également la possibilité de créer des politiques de permissions personnalisées. Pour plus d'informations, consultez Créer une politique personnalisée.
-
Méthode 2 : Configurer une politique basée sur les ressources
KMS prend en charge les politiques basées sur les ressources, qui accordent des permissions d'accès à des clés et des secrets individuels. Ces politiques permettent de contrôler quels comptes Alibaba Cloud, utilisateurs RAM et rôles RAM peuvent gérer ou utiliser les clés et secrets KMS. Pour plus d'informations, consultez Politiques de clé et Politiques de secret.
-
Étape 2 : Définir des variables d'environnement ou un fichier de configuration
Le SDK propose deux méthodes pour obtenir les identifiants d'accès :
-
Variables d'environnement : la méthode de configuration varie selon le système d'exploitation. Pour plus d'informations, consultez la documentation relative à la définition des identifiants d'accès dans les variables d'environnement.
AvertissementNe modifiez pas les noms des paramètres. Le cas échéant, le SDK ne pourra pas les reconnaître.
-
Fichier de configuration : le fichier par défaut est
secretsmanager.properties(son nom ne peut pas être modifié). Pour que votre application charge correctement ce fichier, placez-le dans le répertoire de configuration approprié. Voici les répertoires courants selon les langages :Java : placez le fichier de configuration dans le répertoire
src/main/resourcesafin qu'il soit automatiquement inclus dans le classpath lors de la compilation.Go : placez le fichier de configuration à la racine du projet ou dans un répertoire
configdédié, puis chargez-le via le code.Python : placez le fichier de configuration dans le répertoire du projet ou dans un répertoire
configspécifique, puis utilisez une méthode adaptée (commeos.pathoupkg_resources) pour le charger.
Si vous utilisez un fichier de configuration personnalisé, spécifiez son chemin (
#customConfigFileName#) lors de l'initialisation du client.
Fichier de configuration
-
Passerelle dédiée
# Credential type credentials_type=ak # AccessKey ID credentials_access_key_id=#access_key_id# # AccessKey Secret credentials_access_secret=#access_key_secret# # Use the following configuration for dedicated KMS instance gateway cache_client_region_id=[{"regionId":"<regionId>","endpoint":"<your_kms_instance_id>.cryptoservice.kms.aliyuncs.com"}] -
Passerelle partagée
# Credential type credentials_type=ak # AccessKey ID credentials_access_key_id=#access_key_id# # AccessKey Secret credentials_access_secret=#access_key_secret# # Associated KMS region cache_client_region_id=[{"regionId":"#regionId#"}] -
Passerelle partagée (VPC)
# Credential type credentials_type=ak # AccessKey ID credentials_access_key_id=#access_key_id# # AccessKey Secret credentials_access_secret=#access_key_secret# # Associated KMS region and VPC Endpoint cache_client_region_id=[{"regionId":"#regionId#","endpoint":"kms-vpc.#regionId#.aliyuncs.com","vpc":"true"}]
Variables d'environnement
Paramètre
Valeur
credentials_typeValeur fixe :
ak.credentials_access_key_idL'ID de l'AccessKey.
credentials_access_secretLe secret de l'AccessKey.
cache_client_region_id-
Passerelle dédiée :
[{"regionId":"<regionId>","endpoint":"<your_kms_instance_id>.cryptoservice.kms.aliyuncs.com"}]. -
Passerelle partagée :
[{"regionId":"<your_region_id>"}]. -
Passerelle partagée (VPC) :
[{"regionId":"<your_region_id>","endpoint":"kms-vpc.<your_region_id>.aliyuncs.com","vpc":"true"}].Important-
Remplacez
<regionId>par l'ID réel de la région et<your_kms_instance_id>par l'ID réel de l'instance. -
Sous Linux, lorsque vous définissez des variables d'environnement avec la commande
export, utilisez des caractères d'échappement. Par exemple :[{\"regionId\":\"<your_region_id>"}].
-
OIDC Role ARN
Seul le SDK 2.0 prend en charge les identifiants OIDC Role ARN. Ce n'est pas le cas du SDK 1.0.
Étape 1 : Créer un OIDC Role ARN et configurer les permissions
-
Créer un fournisseur OIDC
Connectez-vous à la console RAM en tant qu'administrateur RAM. Dans la page SSO, cliquez sur l'onglet Role-based SSO.
Dans l'onglet OIDC, cliquez sur Create IdP.
Sur la page Create IdP, configurez les informations du fournisseur. Pour plus d'informations, consultez Gérer les fournisseurs OIDC.
-
Obtenir et enregistrer les informations d'identité OIDC (ARN et Client ID)
Accédez à la page SSO, puis, dans l'onglet IdP, cliquez sur le nom du fournisseur OIDC cible.
Sur la page de détails IdP, consultez l'ARN et le Client ID.
-
Créer et autoriser un rôle RAM pour le fournisseur OIDC
Connectez-vous à la console RAM en tant qu'administrateur RAM, puis accédez à la page .
Cliquez sur Create Role. Dans l'angle supérieur droit de la page de création, cliquez sur Switch to Policy Editor.
-
Dans l'éditeur de politiques, spécifiez le fournisseur OIDC. Sélectionnez l'éditeur visuel et configurez les paramètres comme décrit ci-dessous.
RemarquePour plus d'informations sur les autres modes, consultez Créer un rôle RAM pour un fournisseur d'identité OIDC.
Dans la section Select Trusted Entity, sélectionnez IdP.
-
Dans la section Edit Trust Policy, configurez les paramètres suivants.
IdP Type : sélectionnez OIDC.
IdP : sélectionnez le fournisseur OIDC créé précédemment.
-
Accorder au rôle RAM OIDC les permissions d'accès à KMS
-
Méthode 1 : Configurer une politique basée sur l'identité
Revenez à la page de liste Identities > Roles, puis cliquez sur Grant Permission dans la colonne Actions du rôle OIDC cible. Cette action permet d'attacher directement une politique de permissions système intégrée KMS au rôle RAM. Pour plus d'informations sur ces politiques, consultez Référence des politiques de permissions système Key Management Service.
RemarqueLes politiques de permissions personnalisées sont également prises en charge. Pour plus d'informations, consultez Créer une politique personnalisée.
-
Méthode 2 : Configurer une politique basée sur les ressources
KMS prend en charge les politiques basées sur les ressources, qui accordent des permissions d'accès à des clés et des secrets individuels. Ces politiques permettent de contrôler quels comptes Alibaba Cloud, utilisateurs RAM et rôles RAM peuvent gérer ou utiliser les clés et secrets KMS. Pour plus d'informations, consultez Politiques de clé et Politiques de secret.
-
-
Obtenir l'OIDC Role ARN cible
Dans la page , cliquez sur le nom du rôle cible.
-
Sur la page de détails du rôle, recherchez l'OIDC Role ARN dans la section ARN.
RemarqueLe Role ARN correspond à l'ARN du rôle RAM à endosser. Son format est
acs:ram::$accountID:role/$roleName, où$accountIDreprésente l'ID du compte Alibaba Cloud et$roleNamele nom du rôle RAM.
-
Émettre et enregistrer le fichier de jeton OIDC
Alibaba Cloud ne prend pas en charge la connexion OIDC directe depuis la console. Vous pouvez toutefois réaliser le processus SSO OIDC par programmation. L'obtention d'un jeton OIDC implique un flux OAuth, généralement via un processus OAuth 2.0 standard auprès du fournisseur d'identité OIDC (IdP).
Par exemple, lorsqu'une application s'exécute dans un cluster ACK avec RRSA activé, le cluster crée et monte automatiquement le fichier de jeton OIDC du compte de service correspondant pour le pod de l'application.
Étape 2 : Définir des variables d'environnement ou un fichier de configuration
Le SDK propose deux méthodes pour obtenir les identifiants d'accès :
-
Variables d'environnement : la méthode de configuration varie selon le système d'exploitation. Pour plus d'informations, consultez la documentation relative à la définition des identifiants d'accès dans les variables d'environnement.
AvertissementNe modifiez pas les noms des paramètres. Le cas échéant, le SDK ne pourra pas les reconnaître.
-
Fichier de configuration : le fichier par défaut est
secretsmanager.properties(son nom ne peut pas être modifié). Pour que votre application charge correctement ce fichier, placez-le dans le répertoire de configuration approprié. Voici les répertoires courants selon les langages :Java : placez le fichier de configuration dans le répertoire
src/main/resourcesafin qu'il soit automatiquement inclus dans le classpath lors de la compilation.Go : placez le fichier de configuration à la racine du projet ou dans un répertoire
configdédié, puis chargez-le via le code.Python : placez le fichier de configuration dans le répertoire du projet ou dans un répertoire
configspécifique, puis utilisez une méthode adaptée (commeos.pathoupkg_resources) pour le charger.
Si vous utilisez un fichier de configuration personnalisé, spécifiez son chemin (
#customConfigFileName#) lors de l'initialisation du client.
Fichier de configuration
-
Passerelle dédiée
# Credential type credentials_type=oidc_role_arn # Role ARN (optional. If not specified, the Default credential provider chain is used) credentials_role_arn=<role_arn> # OIDC provider ARN (optional. If not specified, the Default credential provider chain is used) credentials_oidc_provider_arn=<oidc_provider_arn> # OIDC token file path (optional. If not specified, the Default credential provider chain is used) credentials_oidc_token_file_path=<oidc_token_file_path> # KMS region and instance endpoint cache_client_region_id=[{"regionId":"<regionId>","endpoint":"<your_kms_instance_id>.cryptoservice.kms.aliyuncs.com"}] -
Passerelle partagée
# Credential type credentials_type=oidc_role_arn # Role ARN (optional. If not specified, the Default credential provider chain is used) credentials_role_arn=<role_arn> # OIDC provider ARN (optional. If not specified, the Default credential provider chain is used) credentials_oidc_provider_arn=<oidc_provider_arn> # OIDC token file path (optional. If not specified, the Default credential provider chain is used) credentials_oidc_token_file_path=<oidc_token_file_path> # Associated KMS region cache_client_region_id=[{"regionId":"<regionId>"}] -
Passerelle partagée (VPC)
# Credential type credentials_type=oidc_role_arn # Role ARN (optional. If not specified, the Default credential provider chain is used) credentials_role_arn=<role_arn> # OIDC provider ARN (optional. If not specified, the Default credential provider chain is used) credentials_oidc_provider_arn=<oidc_provider_arn> # OIDC token file path (optional. If not specified, the Default credential provider chain is used) credentials_oidc_token_file_path=<oidc_token_file_path> # Associated KMS region and VPC Endpoint cache_client_region_id=[{"regionId":"#regionId#","endpoint":"kms-vpc.#regionId#.aliyuncs.com","vpc":"true"}]
Variables d'environnement
|
Paramètre |
Valeur |
|
|
Valeur fixe : |
|
|
L'ARN du rôle RAM associé au fournisseur d'identité OIDC. Facultatif. Si ce paramètre n'est pas spécifié, la chaîne de fournisseurs d'identifiants par défaut est utilisée. |
|
|
L'ARN du fournisseur d'identité OIDC. Facultatif. Si ce paramètre n'est pas spécifié, la chaîne de fournisseurs d'identifiants par défaut est utilisée. |
|
|
Le chemin relatif ou absolu vers le fichier contenant le jeton OIDC. Facultatif. Si ce paramètre n'est pas spécifié, la chaîne de fournisseurs d'identifiants par défaut est utilisée. |
|
|
|
AK+RamRoleArn
Seul le SDK 1.0 permet de lire les informations RAM Role ARN depuis les variables d'environnement et les fichiers de configuration par défaut. Le SDK 2.0 ne prend pas en charge cette fonctionnalité. Si vous en avez besoin avec le SDK 2.0, contactez le support technique.
Instructions
Read the English to understand WHAT needs to be communicated
Write the French FROM SCRATCH — forget the English sentence structure
Preserve all markdown formatting, code blocks, links, and images exactly
xref tags (
<a data-tag="xref" ...>text</a>) — preserve the ENTIRE tag with all attributes in original order and casing, ONLY translate the visible text between > andApply all language-specific rules strictly
Apply stopword rules with zero tolerance
Use imperative mood in numbered steps and procedural bullet lists
Enforce terminology consistency — same term = same translation everywhere
Vary sentence openers in lists/tables — no opener repeated 3+ times
-
Return ONLY the French markdown document, no explanation
Étape 1 : Créer un ARN de rôle RAM et configurer les permissions
Les utilisateurs RAM ou les services cloud peuvent endosser un rôle afin d'obtenir des permissions temporaires (jeton STS) plutôt que d'utiliser des clés à long terme. Cette approche réduit le risque de fuite de clés. Par exemple, lors d'une tâche de traitement de données temporaire, un utilisateur RAM ou un service cloud endosse temporairement un rôle associé à un RamRoleArn spécifique. Une fois la tâche terminée, les permissions du rôle sont révoquées, ce qui limite au maximum le risque d'exposition.
-
Créez une paire d'AccessKey pour l'utilisateur.
Connectez-vous à la console RAM. Dans le volet de navigation de gauche, choisissez . Sur la page Users, cliquez sur le nom de l'utilisateur RAM cible.
Attachez à l'utilisateur RAM la politique système
AliyunSTSAssumeRoleAccessou une politique personnalisée incluant l'actionsts:AssumeRole.Sur l'onglet Secret Management, dans la section AccessKey, cliquez sur Create AccessKey.
-
Créez et autorisez un rôle RAM :
Dans le volet de navigation de gauche, choisissez . Sur la page Roles, cliquez sur Create Role. Pour plus d'informations, consultez Créer un rôle RAM.
-
Accordez au rôle RAM les permissions nécessaires pour accéder à KMS.
-
Méthode 1 : Configurer une politique basée sur l'identité
Dans la colonne Actions correspondant au rôle RAM, cliquez sur Grant Permission pour attacher au rôle une politique de permissions système intégrée pour KMS. Pour en savoir plus sur les politiques de permissions système de KMS, consultez Politiques système pour KMS.
RemarqueVous pouvez également créer des politiques de permissions personnalisées. Pour plus d'informations, consultez Créer une politique personnalisée.
-
Méthode 2 : Configurer une politique basée sur les ressources
KMS prend en charge les politiques basées sur les ressources, qui accordent des permissions d'accès à des clés et des secrets individuels. Ces politiques permettent de contrôler quels comptes Alibaba Cloud, utilisateurs RAM et rôles RAM peuvent gérer ou utiliser les clés et secrets KMS. Pour plus d'informations, consultez Politiques de clé et Politiques de secret.
-
-
Récupérez le RamRoleArn du rôle RAM cible. Pour plus d'informations, consultez Consulter les informations d'un rôle RAM.
Dans le volet de navigation de gauche, choisissez . Sur la page Roles, cliquez sur le nom du rôle cible.
-
Sur la page de détails du rôle, repérez le RamRoleArn dans la section ARN.
RemarqueLe RamRoleArn correspond à l'Alibaba Cloud Resource Name (ARN) du rôle RAM à endosser. Son format est
acs:ram::$accountID:role/$roleName, où$accountIDreprésente l'ID du compte Alibaba Cloud et$roleNamele nom du rôle RAM.
Étape 2 : Définir des variables d'environnement ou un fichier de configuration
Le SDK propose deux méthodes pour obtenir les identifiants d'accès :
-
Variables d'environnement : les méthodes de configuration varient selon le système d'exploitation. Pour plus d'informations, consultez la rubrique relative à la définition des identifiants d'accès dans les variables d'environnement.
AvertissementNe modifiez pas les noms des paramètres. Le cas échéant, le SDK ne pourra pas les reconnaître.
-
Fichier de configuration : le fichier par défaut est
secretsmanager.properties(son nom ne peut pas être modifié). Pour garantir un chargement correct par votre application, placez-le dans le répertoire de configuration approprié. Voici les répertoires courants selon le langage :Java : placez le fichier de configuration dans le répertoire
src/main/resourcesafin qu'il soit automatiquement inclus dans le classpath lors de la compilation.Go : placez le fichier de configuration à la racine du projet ou dans un répertoire
configdédié, puis chargez-le via le code.Python : placez le fichier de configuration dans le répertoire du projet ou dans un répertoire
configspécifique, puis utilisez une méthode adaptée (commeos.pathoupkg_resources) pour le charger.
Si vous utilisez un fichier de configuration personnalisé, spécifiez son chemin (
#customConfigFileName#) lors de l'initialisation du client.
Fichier de configuration
-
Passerelle dédiée
# Credential type credentials_type=ram_role # Role session name credentials_role_session_name=#role_session_name# # Role ARN credentials_role_arn=#role_arn# # AccessKey ID credentials_access_key_id=#access_key_id# # AccessKey Secret credentials_access_secret=#access_key_secret# # Use the following configuration for dedicated KMS instance gateway cache_client_region_id=[{"regionId":"<regionId>","endpoint":"<your_kms_instance_id>.cryptoservice.kms.aliyuncs.com"}] -
Passerelle partagée
# Credential type credentials_type=ram_role # Role session name credentials_role_session_name=#role_session_name# # Role ARN credentials_role_arn=#role_arn# # AccessKey ID credentials_access_key_id=#access_key_id# # AccessKey Secret credentials_access_secret=#access_key_secret# # Associated KMS region cache_client_region_id=[{"regionId":"#regionId#"}] -
Passerelle partagée (VPC)
# Credential type credentials_type=ram_role # Role session name credentials_role_session_name=#role_session_name# # Role ARN credentials_role_arn=#role_arn# # AccessKey ID credentials_access_key_id=#access_key_id# # AccessKey Secret credentials_access_secret=#access_key_secret# # Associated KMS region and VPC Endpoint cache_client_region_id=[{"regionId":"#regionId#","endpoint":"kms-vpc.#regionId#.aliyuncs.com","vpc":"true"}]
Variables d'environnement
Paramètre
Valeur
credentials_typeram_roleoustscredentials_role_session_nameNom de la session du rôle RAM.
credentials_role_arnARN du rôle RAM.
credentials_access_key_idIdentifiant AccessKey.
credentials_access_secretSecret AccessKey.
cache_client_region_id-
Passerelle dédiée :
[{"regionId":"<regionId>","endpoint":"<your_kms_instance_id>.cryptoservice.kms.aliyuncs.com"}]. -
Passerelle partagée :
[{"regionId":"<your_region_id>"}]. -
Passerelle partagée (VPC) :
[{"regionId":"<your_region_id>","endpoint":"kms-vpc.<your_region_id>.aliyuncs.com","vpc":"true"}].Important-
Remplacez
<regionId>par l'ID réel de la région et<your_kms_instance_id>par l'ID réel de l'instance. -
Sous Linux, lorsque vous définissez des variables d'environnement avec la commande
export, utilisez des caractères d'échappement, par exemple :[{\"regionId\":\"<your_region_id>"}].
-
-
ClientKey (obsolète)
Seul le SDK 1.0 prend en charge le type d'identifiant ClientKey. Ce n'est pas le cas du SDK 2.0.
Passerelle partagée
Passerelle dédiée
Instructions
Lisez le texte anglais pour comprendre CE qui doit être communiqué.
Rédigez le français À PARTIR DE ZÉRO — oubliez la structure des phrases anglaises.
Conservez exactement toute la mise en forme Markdown, les blocs de code, les liens et les images.
Balises xref (
<a data-tag="xref" ...>texte</a>) : conservez LA BALISE ENTIÈRE avec tous ses attributs dans l'ordre et la casse d'origine, traduisez UNIQUEMENT le texte visible entre > et .Appliquez strictement toutes les règles spécifiques à la langue.
Appliquez les règles relatives aux mots vides (stopwords) sans aucune tolérance.
Utilisez le mode impératif dans les étapes numérotées et les listes à puces procédurales.
Garantissez la cohérence terminologique : un même terme = une même traduction partout.
Variez les débuts de phrase dans les listes et les tableaux : aucun début de phrase ne doit apparaître plus de trois fois.
-
Retournez UNIQUEMENT le document Markdown en français, sans explication.
Étape 1 : Créer une ClientKey
Vous pouvez créer une ClientKey en mode Quick Create ou Standard Create. Pour plus d'informations sur les ClientKeys, consultez Points d'accès aux applications et Créer un point d'accès à une application.
-
Méthode 1 : Quick Create
Pratique et rapide, cette méthode convient parfaitement aux phases de test et de développement. L'identifiant d'accès ainsi créé accorde un accès complet à toutes les ressources de l'instance KMS.
Connectez-vous à la console Key Management Service. Dans la barre de navigation supérieure, sélectionnez une région. Dans le volet de navigation de gauche, choisissez .
-
Dans l'onglet Application Access, cliquez sur Create AAP. Configurez ensuite les paramètres dans le panneau Create AAP.
Paramètre
Description
Mode
Sélectionnez Quick Creation.
Scope (KMS Instance)
Choisissez l'instance KMS à laquelle votre application doit accéder.
Application Access Point Name
Saisissez un nom pour le point d'accès à l'application.
Authentication Method
Cette valeur est définie sur ClientKey et ne peut pas être modifiée.
Encryption Algorithm
Indiquez l'algorithme de chiffrement utilisé pour chiffrer la ClientKey. Valeurs valides : TripleDES-CBC et RC2-CBC (par défaut).
RemarqueL'algorithme RC2-CBC fonctionne dans la plupart des environnements et reste recommandé. Si votre environnement impose des exigences algorithmiques plus strictes et ne prend pas en charge RC2-CBC, optez pour TripleDES-CBC.
Default Permission Policy
La valeur correspond à
key/secret/et ne peut pas être modifiée. Ainsi, l'application peut accéder à toutes les clés et à tous les secrets de l'instance KMS spécifiée. -
Cliquez sur OK. Le navigateur télécharge automatiquement la ClientKey. Celle-ci comprend les fichiers suivants :
<!--@uicontrol {"id":"bfc4b70efacgp","data-isbold="true","data-init-id":"5bf75a5e9b7ap"}-->Credential (ClientKeyContent) : le nom de fichier par défaut est
clientKey_****.json.Mot de passe de l'identifiant (ClientKeyPassword) : le nom de fichier par défaut est
clientKey_****_Password.txt.
-
Méthode 2 : Standard Create
Si vous devez configurer des permissions d'accès granulaires pour vos ressources, privilégiez la méthode Standard Create.
-
Suivez les instructions de création standard décrites dans Créer un point d'accès à une application afin de créer une ClientKey permettant d'accéder à la passerelle dédiée. Les principaux paramètres sont décrits ci-dessous :
Lors de la configuration des règles réseau, sélectionnez Private comme type de réseau.
Au moment de définir la portée de la règle de permission, sélectionnez l'ID d'instance KMS correspondant.
-
Une fois la création terminée, votre navigateur télécharge automatiquement la ClientKey, qui comprend :
Credential (ClientKeyContent) : le fichier porte par défaut le nom
clientKey_****.json.Mot de passe de l'identifiant (ClientKeyPassword) : le fichier porte par défaut le nom
clientKey_****_Password.txt.
-
Étape 2 : Configurer les variables d'environnement ou le fichier de configuration
-
Variables d'environnement : les méthodes de configuration varient selon le système d'exploitation. Pour plus d'informations, consultez la rubrique relative à la définition des identifiants d'accès dans les variables d'environnement.
AvertissementNe modifiez pas les noms des paramètres. Le cas échéant, le SDK ne pourra pas les reconnaître.
-
Fichier de configuration : le fichier de configuration par défaut est
secretsmanager.properties(son nom ne peut pas être modifié). Pour garantir que votre application charge correctement ce fichier, placez-le dans le répertoire de configuration approprié. Voici les répertoires couramment utilisés selon les langages :Java : placez le fichier de configuration dans le répertoire
src/main/resourcesafin qu'il soit automatiquement inclus dans le classpath lors de la compilation.Go : déposez le fichier dans le répertoire racine du projet ou dans un répertoire
configdédié, puis chargez-le via le code.Python : stockez le fichier dans le répertoire du projet ou dans un répertoire
configspécifique, et utilisez une méthode adaptée (commeos.pathoupkg_resources) pour le charger.
Si vous utilisez un fichier de configuration personnalisé, vous devez spécifier son chemin (
#customConfigFileName#) lors de l'initialisation du client.
Fichier de configuration
Approche 1 : Configurer le chemin du fichier
cache_client_dkms_config_info=[{"regionId":"<your_dkms_region_id>","endpoint":"<your_dkms_endpoint>","passwordFromFilePath":"<your_password_file_path>","clientKeyFile":"<your_client_key_file_path>","ignoreSslCerts":false,"caFilePath":"<your_ca_certificate_file_path>"}]Approche 2 : Configurer le mot de passe via une variable d'environnement
cache_client_dkms_config_info=[{"regionId":"<your_dkms_region_id>","endpoint":"<your_dkms_endpoint>","passwordFromEnvVariable":"<YOUR_PASSWORD_ENV_VARIABLE>","clientKeyFile":"<your_client_key_file_path>","ignoreSslCerts":false,"caFilePath":"<your_ca_certificate_file_path>"}]Variables d'environnement
Le SDK propose deux approches pour configurer le mot de passe de l'identifiant ClientKey :
-
Approche 1 : Configurer le chemin du fichier contenant le mot de passe de la ClientKey
Paramètre
Valeur
cache_client_dkms_config_infoFormat :
[{"regionId":"<your_dkms_region_id>","endpoint":"<your_dkms_endpoint>","passwordFromFilePath":"<your_password_file_path>","clientKeyFile":"<your_client_key_file_path>","ignoreSslCerts":false,"caFilePath":"<your_ca_certificate_file_path>"}]. -
Approche 2 : Définir le contenu du mot de passe de la ClientKey via une variable d'environnement
Paramètre
Valeur
cache_client_dkms_config_infoFormat :
[{"regionId":"<your_dkms_region_id>","endpoint":"<your_dkms_endpoint>","passwordFromEnvVariable":"<YOUR_PASSWORD_ENV_VARIABLE>","clientKeyFile":"<your_client_key_file_path>","ignoreSslCerts":false,"caFilePath":"<your_ca_certificate_file_path>"}].
-
Paramètres de cache_client_dkms_config_info
|
Paramètre |
Description |
|
|
Identifiant de la région où l'instance KMS est déployée. Pour consulter la liste des identifiants de région, reportez-vous à Régions et zones. |
|
|
Endpoint de l'instance KMS, au format |
|
|
Chemin absolu ou relatif vers le fichier Credential-ClientKeyContent ( |
|
|
Chemin absolu ou relatif vers le fichier ClientKeyPassword ( |
|
|
Nom de la variable d'environnement stockant le contenu de ClientKeyPassword, par exemple |
|
|
Détermine s'il faut ignorer la validation du certificat SSL de l'instance KMS. Cette dernière intègre un certificat SSL natif, exploité avec le protocole SSL/TLS pour vérifier l'identité et chiffrer les communications. Valeurs valides :
|
|
|
Chemin absolu ou relatif vers le fichier du certificat CA de l'instance KMS. Remarque
Le certificat CA sert à valider le certificat SSL de l'instance KMS. Pour savoir comment obtenir ce certificat CA, consultez Obtenir le certificat CA de l'instance KMS. |
Récupérer des secrets
Tous les exemples ci-dessous reposent sur le SDK 2.0. Pour consulter ceux relatifs au SDK 1.0, accédez au référentiel de code source du SDK 1.0.
Java
Utiliser la configuration par défaut
Le SDK lit automatiquement les informations d'identification depuis le fichier secretsmanager.properties ou depuis les variables d'environnement.
import com.aliyuncs.kms.secretsmanager.client.V2.0.SecretCacheClient;
import com.aliyuncs.kms.secretsmanager.client.V2.0.SecretCacheClientBuilder;
import com.aliyuncs.kms.secretsmanager.client.V2.0.exception.CacheSecretException;
import com.aliyuncs.kms.secretsmanager.client.V2.0.model.SecretInfo;
public class CacheClientEnvironmentSample {
public static void main(String[] args) {
try {
SecretCacheClient client = SecretCacheClientBuilder.newClient();
SecretInfo secretInfo = client.getSecretInfo("#secretName#");
System.out.println(secretInfo);
} catch (CacheSecretException e) {
e.printStackTrace();
}
}
}
Utiliser un fichier de configuration personnalisé
Adoptez cette approche lorsque le fichier de configuration ne porte pas le nom par défaut ou ne se trouve pas dans le chemin attendu. Spécifiez alors le chemin du fichier de configuration (#customConfigFileName#).
import com.aliyuncs.kms.secretsmanager.client.V2.0.SecretCacheClient;
import com.aliyuncs.kms.secretsmanager.client.V2.0.SecretCacheClientBuilder;
import com.aliyuncs.kms.secretsmanager.client.V2.0.exception.CacheSecretException;
import com.aliyuncs.kms.secretsmanager.client.V2.0.model.SecretInfo;
import com.aliyuncs.kms.secretsmanager.client.V2.0.service.BaseSecretManagerClientBuilder;
public class CacheClientCustomConfigFileSample {
public static void main(String[] args) {
try {
SecretCacheClient client = SecretCacheClientBuilder.newCacheClientBuilder(
BaseSecretManagerClientBuilder.standard()
.withCustomConfigFile("#customConfigFileName#")
.build())
.build();
SecretInfo secretInfo = client.getSecretInfo("#secretName#");
System.out.println(secretInfo);
} catch (CacheSecretException e) {
System.out.println("CacheSecretException: " + e.getMessage());
}
}
}
Utiliser des identifiants codés en dur
Cette méthode permet de transmettre directement l'AccessKey et les informations de région lors de l'initialisation du client, sans écrire l'AccessKey dans un fichier de configuration ni dans des variables d'environnement.
import com.aliyuncs.kms.secretsmanager.client.V2.0.SecretCacheClient;
import com.aliyuncs.kms.secretsmanager.client.V2.0.SecretCacheClientBuilder;
import com.aliyuncs.kms.secretsmanager.client.V2.0.exception.CacheSecretException;
import com.aliyuncs.kms.secretsmanager.client.V2.0.model.RegionInfo;
import com.aliyuncs.kms.secretsmanager.client.V2.0.service.BaseSecretManagerClientBuilder;
import com.aliyuncs.kms.secretsmanager.client.V2.0.utils.CredentialsProviderUtils;
public class CacheClientWithCaCertificateSample {
public static void main(String[] args) {
try {
// Create a RegionInfo with the CA certificate path
RegionInfo regionInfo = new RegionInfo();
regionInfo.setRegionId("#regionId#");
// Dedicated gateway endpoint. Omit if using shared gateway.
regionInfo.setEndpoint("<your_kms_instance_id>.cryptoservice.kms.aliyuncs.com");
SecretCacheClient client = SecretCacheClientBuilder.newCacheClientBuilder(
BaseSecretManagerClientBuilder.standard()
.withCredentialsProvider(CredentialsProviderUtils.withAccessKey(
System.getenv("#accessKeyId#"),
System.getenv("#accessKeySecret#")))
.addRegion(regionInfo)
.build())
.build();
SecretInfo secretInfo = client.getSecretInfo("#secretName#");
} catch (CacheSecretException e) {
e.printStackTrace();
}
}
}
Utiliser la chaîne de fournisseurs d'identifiants par défaut d'Alibaba Cloud
La chaîne de fournisseurs d'identifiants par défaut constitue une stratégie de repli. Elle recherche les identifiants selon un ordre prédéfini jusqu'à en trouver de valides. Si toutes les méthodes échouent, l'authentification échoue et aucun identifiant ne peut être obtenu.
import com.aliyuncs.kms.secretsmanager.client.V2.0.SecretCacheClient;
import com.aliyuncs.kms.secretsmanager.client.V2.0.SecretCacheClientBuilder;
import com.aliyuncs.kms.secretsmanager.client.V2.0.exception.CacheSecretException;
import com.aliyuncs.kms.secretsmanager.client.V2.0.model.SecretInfo;
import com.aliyuncs.kms.secretsmanager.client.V2.0.service.BaseSecretManagerClientBuilder;
public class CacheClientDefaultCredentialChainSample {
public static void main(String[] args) {
try {
SecretCacheClient client = SecretCacheClientBuilder.newCacheClientBuilder(
BaseSecretManagerClientBuilder.standard()
.withRegion("#regionId#")
.build())
.build();
SecretInfo secretInfo = client.getSecretInfo("#secretName#");
System.out.println(secretInfo);
} catch (CacheSecretException e) {
e.printStackTrace();
}
}
}
Pour découvrir d'autres exemples, consultez Exemples du SDK Secrets Manager Client.
Python
Utiliser la configuration par défaut
Le SDK lit automatiquement les informations d'identification depuis le fichier secretsmanager.properties ou depuis les variables d'environnement.
from alibabacloud_secretsmanager_client_V2.0.secret_manager_cache_client_builder import SecretManagerCacheClientBuilder
if __name__ == '__main__':
secret_cache_client = SecretManagerCacheClientBuilder.new_client()
secret_info = secret_cache_client.get_secret_info("#secretName#")
print(secret_info.__dict__)
Utiliser un fichier de configuration personnalisé
Retenez cette méthode si le fichier de configuration ne porte pas le nom par défaut ou ne se trouve pas dans le chemin attendu.
from alibabacloud_secretsmanager_client_V2.0.secret_manager_cache_client_builder import SecretManagerCacheClientBuilder
from alibabacloud_secretsmanager_client_V2.0.service.default_secret_manager_client_builder import DefaultSecretManagerClientBuilder
if __name__ == '__main__':
secret_cache_client = SecretManagerCacheClientBuilder.new_cache_client_builder(
DefaultSecretManagerClientBuilder.standard()
.with_custom_config_file("#customConfigFileName#")
.build()
).build()
secret_info = secret_cache_client.get_secret_info("#secretName#")
print(secret_info.__dict__)
Instructions
Lisez le texte anglais pour comprendre CE qui doit être communiqué.
Rédigez le français À PARTIR DE ZÉRO — oubliez la structure des phrases anglaises.
Conservez exactement toute la mise en forme Markdown, les blocs de code, les liens et les images.
Balises xref (
<a data-tag="xref" ...>texte</a>) : conservez la balise INTÉGRALE avec tous ses attributs dans l'ordre et la casse d'origine, traduisez UNIQUEMENT le texte visible entre > et .Appliquez strictement toutes les règles spécifiques à la langue.
Appliquez les règles relatives aux mots vides (stopwords) avec une tolérance zéro.
Utilisez l'impératif dans les étapes numérotées et les listes à puces procédurales.
Garantissez la cohérence terminologique — un même terme doit toujours avoir la même traduction.
Variez les débuts de phrase dans les listes et les tableaux — aucune formule introductive ne doit apparaître plus de trois fois.
-
Retournez UNIQUEMENT le document Markdown en français, sans aucune explication.
Utiliser des identifiants codés en dur
Cette méthode transmet directement l'AccessKey et les informations de région lors de l'initialisation du client.
import os from alibabacloud_secretsmanager_client_V2.0.secret_manager_cache_client_builder import SecretManagerCacheClientBuilder from alibabacloud_secretsmanager_client_V2.0.service.default_secret_manager_client_builder import \ DefaultSecretManagerClientBuilder from alibabacloud_secretsmanager_client_V2.0.model.region_info import RegionInfo if __name__ == '__main__': # Create a RegionInfo with the CA certificate path region_info = RegionInfo( region_id="#regionId#", endpoint="#kmsInstanceEndpoint#", # Dedicated gateway endpoint. Omit if using shared gateway. ) secret_cache_client = SecretManagerCacheClientBuilder.new_cache_client_builder( DefaultSecretManagerClientBuilder.standard() .with_access_key( os.getenv("#accessKeyId#"), os.getenv("#accessKeySecret#") ) .add_region_info(region_info) .build() ).build() # ... use the clientUtiliser la chaîne de fournisseurs d'identifiants par défaut d'Alibaba Cloud
from alibabacloud_secretsmanager_client_V2.0.secret_manager_cache_client_builder import SecretManagerCacheClientBuilder from alibabacloud_secretsmanager_client_V2.0.service.default_secret_manager_client_builder import DefaultSecretManagerClientBuilder if __name__ == '__main__': secret_cache_client = SecretManagerCacheClientBuilder.new_cache_client_builder( DefaultSecretManagerClientBuilder.standard() .with_region("#regionId#") .build() ).build() secret_info = secret_cache_client.get_secret_info("#secretName#") print(secret_info.__dict__)RemarquePour consulter d'autres exemples, reportez-vous aux exemples du SDK Secrets Manager Client.
Go
Utiliser la configuration par défaut
package main
import "github.com/aliyun/alibabacloud-secretsmanager-client-go-V2.0/sdk"
func main() {
client, err := sdk.NewClient()
if err != nil {
// Handle exceptions
panic(err)
}
secretInfo, err := client.GetSecretInfo("#secretName#")
if err != nil {
// Handle exceptions
panic(err)
}
}
Utiliser un fichier de configuration personnalisé
package main
import (
"github.com/aliyun/alibabacloud-secretsmanager-client-go-V2.0/sdk"
"github.com/aliyun/alibabacloud-secretsmanager-client-go-V2.0/sdk/service"
)
func main() {
client, err := sdk.NewSecretCacheClientBuilder(
service.NewDefaultSecretManagerClientBuilder().Standard().
WithCustomConfigFile("#customConfigFileName#").Build()).Build()
if err != nil {
// Handle exceptions
panic(err)
}
secretInfo, err := client.GetSecretInfo("#secretName#")
if err != nil {
// Handle exceptions
panic(err)
}
}
Utiliser des identifiants codés en dur
package main
import (
"github.com/aliyun/alibabacloud-secretsmanager-client-go-V2.0/sdk"
"github.com/aliyun/alibabacloud-secretsmanager-client-go-V2.0/sdk/models"
"github.com/aliyun/alibabacloud-secretsmanager-client-go-V2.0/sdk/service"
"os"
)
func main() {
regionInfo := &models.RegionInfo{
RegionId: "#regionId#",
// Dedicated gateway endpoint. Omit if using shared gateway.
Endpoint: "<kmsInstanceId>.cryptoservice.kms.aliyuncs.com",
}
client, err := sdk.NewSecretCacheClientBuilder(
service.NewDefaultSecretManagerClientBuilder().
Standard().
WithAccessKey(os.Getenv("#accessKeyId#"), os.Getenv("#accessKeySecret#")).
AddRegionInfo(regionInfo).
Build()).Build()
if err != nil {
// Handle exceptions
panic(err)
}
secretInfo, err := client.GetSecretInfo("#secretName#")
if err != nil {
// Handle exceptions
panic(err)
}
}
Utiliser la chaîne de fournisseurs d'identifiants par défaut d'Alibaba Cloud
package main
import (
"github.com/aliyun/alibabacloud-secretsmanager-client-go-V2.0/sdk"
"github.com/aliyun/alibabacloud-secretsmanager-client-go-V2.0/sdk/service"
)
func main() {
client, err := sdk.NewSecretCacheClientBuilder(
service.NewDefaultSecretManagerClientBuilder().Standard().
WithRegion("#regionId#").Build()).Build()
if err != nil {
// Handle exceptions
panic(err)
}
secretInfo, err := client.GetSecretInfo("#secretName#")
if err != nil {
// Handle exceptions
panic(err)
}
}
Pour consulter d'autres exemples, reportez-vous aux exemples du SDK Secrets Manager Client.
Node.js
Utiliser la configuration par défaut
Le SDK lit automatiquement les informations d'identification depuis le fichier secretsmanager.properties ou depuis les variables d'environnement.
import { SecretCacheClientBuilder } from 'alibabacloud-secretsmanager-client-v2';
async function example() {
try {
// Build client via environment variables or default configuration
const client = await SecretCacheClientBuilder.newClient();
const secretInfo = await client.getSecretInfo('#secretName#');
console.log(secretInfo);
} catch (error) {
console.error('Error:', error);
}
}
example();
Utiliser un fichier de configuration personnalisé
Privilégiez cette approche lorsque le fichier de configuration n'utilise ni le nom ni le chemin par défaut. Spécifiez alors le chemin du fichier de configuration.
import {
SecretCacheClientBuilder,
BaseSecretManagerClientBuilder,
CredentialsProviderUtils
} from 'alibabacloud-secretsmanager-client-v2';
async function example() {
try {
const client = await SecretCacheClientBuilder.newCacheClientBuilder(
BaseSecretManagerClientBuilder.standard().withCustomConfigFile('#customConfigFileName#').build()
).build();
const secretInfo = await client.getSecretInfo('#secretName#');
console.log(secretInfo);
} catch (error) {
console.error('Error:', error);
}
}
example();
Utiliser des identifiants codés en dur
Cette méthode transmet directement l'AccessKey et les informations de région lors de l'initialisation du client.
import {
SecretCacheClientBuilder,
BaseSecretManagerClientBuilder,
CredentialsProviderUtils,
RegionInfo
} from 'alibabacloud-secretsmanager-client-v2';
async function example() {
try {
// Create RegionInfo with CA certificate path
const regionInfo = new RegionInfo();
regionInfo.setRegionId('#regionId#');
regionInfo.setEndpoint('#kmsInstanceEndpoint#'); // Specify KMS instance address
const client = await SecretCacheClientBuilder.newCacheClientBuilder(
BaseSecretManagerClientBuilder.standard()
.withCredentialsProvider(
CredentialsProviderUtils.withAccessKey(
process.env['#accessKeyId#'],
process.env['#accessKeySecret#']
)
)
.addRegionInfo(regionInfo) // Use RegionInfo with CA certificate path
.build()
).build();
const secretInfo = await client.getSecretInfo('#secretName#');
console.log(secretInfo);
} catch (error) {
console.error('Error:', error);
}
}
example();
Utiliser la chaîne de fournisseurs d'identifiants par défaut d'Alibaba Cloud
import {
SecretCacheClientBuilder,
BaseSecretManagerClientBuilder,
CredentialsProviderUtils
} from 'alibabacloud-secretsmanager-client-v2';
async function example() {
try {
const client = await SecretCacheClientBuilder.newCacheClientBuilder(
BaseSecretManagerClientBuilder.standard()
.withCredentialsProvider(CredentialsProviderUtils.withDefaultCredential())
.withRegion('#regionId#')
.build()
).build();
const secretInfo = await client.getSecretInfo('#secretName#');
console.log(secretInfo);
} catch (error) {
console.error('Error:', error);
}
}
example();
Pour consulter d'autres exemples, reportez-vous aux exemples du SDK Secrets Manager Client.
FAQ
-
Que faire si l'erreur « cannot find the built-in CA certificate for region[$regionId], please provide the caFilePath parameter. » s'affiche ?
Cause : le certificat CA intégré à la région spécifiée est absent du SDK.
-
Solution :
Mettez à jour le SDK vers la dernière version V2.0.
-
Si l'erreur persiste après la mise à jour, téléchargez le dernier certificat CA (disponible dans la console KMS sous Instance Management > Instance Details), puis transmettez son chemin. Plusieurs méthodes sont possibles :
Transmission via une variable d'environnement
Ajoutez le paramètre
caFilePathà la configurationcache_client_region_id:# Associated KMS region, including the CA certificate path and instance endpoint cache_client_region_id=[{"regionId":"<regionId>","endpoint":"<kmsInstanceId>.cryptoservice.kms.aliyuncs.com","caFilePath":"<ca_certificate_file_path>"}]Transmission via un fichier de configuration
Ajoutez le paramètre
caFilePathau fichiersecretsmanager.propertiesou à un fichier de configuration personnalisé :# Associated KMS region, including the CA certificate path and instance endpoint cache_client_region_id=[{"regionId":"<regionId>","endpoint":"<kmsInstanceId>.cryptoservice.kms.aliyuncs.com","caFilePath":"<ca_certificate_file_path>"}]Transmission via des identifiants codés en dur
import com.aliyuncs.kms.secretsmanager.client.V2.0.SecretCacheClient; import com.aliyuncs.kms.secretsmanager.client.V2.0.SecretCacheClientBuilder; import com.aliyuncs.kms.secretsmanager.client.V2.0.exception.CacheSecretException; import com.aliyuncs.kms.secretsmanager.client.V2.0.model.RegionInfo; import com.aliyuncs.kms.secretsmanager.client.V2.0.service.BaseSecretManagerClientBuilder; import com.aliyuncs.kms.secretsmanager.client.V2.0.utils.CredentialsProviderUtils; public class CacheClientWithCaCertificateSample { public static void main(String[] args) { try { // Create a RegionInfo with the CA certificate path RegionInfo regionInfo = new RegionInfo(); regionInfo.setRegionId("#regionId#"); regionInfo.setEndpoint("#kmsInstanceEndpoint#"); // Specify KMS instance endpoint regionInfo.setCaFilePath("#caFilePath#"); // Specify CA certificate file path SecretCacheClient client = SecretCacheClientBuilder.newCacheClientBuilder( BaseSecretManagerClientBuilder.standard() .withCredentialsProvider(CredentialsProviderUtils.withAccessKey( System.getenv("#accessKeyId#"), System.getenv("#accessKeySecret#"))) .addRegion(regionInfo) // Use RegionInfo with CA certificate path .build()) .build(); // ... use the client } catch (CacheSecretException e) { e.printStackTrace(); } } }import os from alibabacloud_secretsmanager_client_V2.0.secret_manager_cache_client_builder import SecretManagerCacheClientBuilder from alibabacloud_secretsmanager_client_V2.0.service.default_secret_manager_client_builder import \ DefaultSecretManagerClientBuilder from alibabacloud_secretsmanager_client_V2.0.model.region_info import RegionInfo if __name__ == '__main__': # Create a RegionInfo with the CA certificate path region_info = RegionInfo( region_id="#regionId#", endpoint="#kmsInstanceEndpoint#", # Specify KMS instance endpoint ca_file_path="#caFilePath#" # Specify CA certificate file path ) secret_cache_client = SecretManagerCacheClientBuilder.new_cache_client_builder( DefaultSecretManagerClientBuilder.standard() .with_access_key( os.getenv("#accessKeyId#"), os.getenv("#accessKeySecret#") ) .add_region_info(region_info) # Use RegionInfo with CA certificate path .build() ).build() # ... use the clientpackage main import ( "github.com/aliyun/alibabacloud-secretsmanager-client-go-V2.0/sdk" "github.com/aliyun/alibabacloud-secretsmanager-client-go-V2.0/sdk/models" "github.com/aliyun/alibabacloud-secretsmanager-client-go-V2.0/sdk/service" "os" ) func main() { // Create a RegionInfo with the CA certificate path regionInfo := &models.RegionInfo{ RegionId: "#regionId#", Endpoint: "#kmsInstanceEndpoint#", // Specify KMS instance endpoint CaFilePath: "#caFilePath#", // Specify CA certificate file path } client, err := sdk.NewSecretCacheClientBuilder( service.NewDefaultSecretManagerClientBuilder(). Standard(). WithAccessKey(os.Getenv("#accessKeyId#"), os.Getenv("#accessKeySecret#")). AddRegionInfo(regionInfo). // Use RegionInfo with CA certificate path Build()).Build() if err != nil { // Handle exceptions panic(err) } secretInfo, err := client.GetSecretInfo("#secretName#") if err != nil { // Handle exceptions panic(err) } }import { SecretCacheClientBuilder, BaseSecretManagerClientBuilder, CredentialsProviderUtils, RegionInfo } from 'alibabacloud-secretsmanager-client-v2'; async function example() { try { // Create RegionInfo with CA certificate path const regionInfo = new RegionInfo(); regionInfo.setRegionId('#regionId#'); regionInfo.setEndpoint('#kmsInstanceEndpoint#'); // Specify KMS instance address regionInfo.setCaFilePath('#caFilePath#'); // Specify CA certificate file path const client = await SecretCacheClientBuilder.newCacheClientBuilder( BaseSecretManagerClientBuilder.standard() .withCredentialsProvider( CredentialsProviderUtils.withAccessKey( process.env['#accessKeyId#'], process.env['#accessKeySecret#'] ) ) .addRegionInfo(regionInfo) // Use RegionInfo with CA certificate path .build() ).build(); const secretInfo = await client.getSecretInfo('#secretName#'); console.log(secretInfo); } catch (error) { console.error('Error:', error); } } example();
-
Que faire si l'erreur « env/config credentials type[client_key] is illegal » s'affiche ?
Cause : le SDK Alibaba Cloud Secrets Manager Client 2.0 ne prend pas en charge le type d'identifiant ClientKey.
-
Solution :
Adoptez un type d'identifiant pris en charge, tel qu'un AccessKey, un rôle RAM ECS ou un ARN de rôle OIDC. Pour plus d'informations, consultez la rubrique Configurer les identifiants d'accès.
Revenez au SDK 1.0 (déconseillé).
-
**Comment résoudre l'erreur
NoSuchMethodError: setFetchExtendedConfigrencontrée avec Secrets Manager Client V1.x ?**Cause : lorsque vous utilisez
alibabacloud-secretsmanager-clientV1.x et que la version dealiyun-java-sdk-kmsprésente dans le classpath d'exécution est antérieure à 2.14.0, tout appel àgetSecretValuedéclenche l'exceptionNoSuchMethodError: void com.aliyuncs.kms.model.v20160120.GetSecretValueRequest.setFetchExtendedConfig(java.lang.Boolean). En effet, la méthodesetFetchExtendedConfiga été introduite dansaliyun-java-sdk-kms2.14.0 ; elle n'existe donc pas dans la classeGetSecretValueRequestdes versions précédentes.-
Solution : déclarez explicitement
aliyun-java-sdk-kms2.14.0 ou une version ultérieure dans votre fichier pom.xml, puis mettez à jouraliyun-java-sdk-corevers la version 4.5.17 :<dependency> <groupId>com.aliyun</groupId> <artifactId>aliyun-java-sdk-kms</artifactId> <version>2.14.0</version> </dependency> <dependency> <groupId>com.aliyun</groupId> <artifactId>aliyun-java-sdk-core</artifactId> <version>4.5.17</version> </dependency>