Tous les produits
Search
Centre de documentation

Key Management Service:Key management quickstart

Dernière mise à jour :Aug 09, 2026

Utilisez Key Management Service (KMS) pour créer des clés destinées au chiffrement et au déchiffrement des données métier. Cette rubrique explique comment créer et utiliser ces clés.

Vue d'ensemble

KMS propose trois types de gestion des clés : clé par défaut, clé logicielle et clé matérielle, afin de répondre à différents scénarios métier ainsi qu'aux exigences de sécurité et de conformité. Pour plus d'informations, consultez les rubriques Vue d'ensemble de Key Management Service et Types de gestion des clés et spécifications des clés.

  • La clé par défaut est fournie gratuitement par KMS. Vous pouvez l'utiliser pour le chiffrement côté serveur dans les services cloud, par exemple lors de l'intégration avec ECS. La clé par défaut prend uniquement en charge le chiffrement symétrique et ne permet pas le chiffrement des données côté client.

  • À l'instar de la clé par défaut, la clé logicielle assure le chiffrement côté serveur pour les services cloud. Vous pouvez également utiliser une clé logicielle pour concevoir des solutions cryptographiques au niveau applicatif en utilisant les API pour le chiffrement et le déchiffrement des données côté client, ainsi que pour la génération et la vérification de signatures numériques. Une clé logicielle peut être symétrique ou asymétrique et prend en charge la rotation des clés (mise à jour automatique des clés) afin de réduire le risque de fuite de clés.

  • Comme la clé logicielle, la clé matérielle offre un chiffrement côté serveur pour les services cloud et vous permet de concevoir des solutions cryptographiques au niveau applicatif. Elle fournit des API pour le chiffrement et le déchiffrement des données côté client, ainsi que pour la génération et la vérification de signatures numériques, et prend en charge les clés symétriques et asymétriques. Par rapport à une clé logicielle, une clé matérielle prend en charge davantage de spécifications de clés et stocke les clés dans un module de sécurité matériel (HSM) pour satisfaire aux exigences de conformité telles que la loi chinoise sur la cryptographie et la norme FIPS. Toutefois, une clé matérielle ne prend pas en charge la rotation des clés.

Chiffrer les données pour les services cloud

Utilisez la gestion des clés pour le chiffrement côté serveur dans des services cloud tels qu'ECS, afin d'éviter les risques de sécurité liés à la transmission de données en clair. Les types de clés suivants prennent en charge cette fonctionnalité : clé par défaut, clé logicielle et clé matérielle.

Exemple

Cet exemple illustre l'intégration d'ECS avec une clé maîtresse par défaut de KMS. Pour plus d'informations sur l'intégration des services cloud avec KMS, consultez les rubriques Vue d'ensemble de l'intégration de KMS avec les services cloud et Services cloud pouvant être intégrés à KMS.

Étape 1 : Activer une clé maîtresse par défaut

  1. 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 Resource > Keys.

  2. Sur la page Key Management, cliquez sur Default Keys, puis cliquez sur Enable dans la colonne Actions pour la clé maîtresse. Nommez l'alias de la clé maîtresse alias/main.

Remarque

Une clé par-default ne peut être utilisée que pour le chiffrement côté serveur dans les services cloud, et non pour le chiffrement des données côté client. Si vous avez besoin du chiffrement des données côté client, créez une instance et achetez une clé maîtresse cliente (logicielle) ou une clé maîtresse cliente (matérielle).

Étape 2 : Intégrer ECS à la clé KMS par défaut

Lors de l'achat d'une instance ECS, sélectionnez l'alias de clé alias/main sur la page d'achat pour chiffrer les données côté serveur.

Dans la section System Disk des paramètres Storage, cochez la case Encrypt, puis sélectionnez la clé souhaitée dans la liste déroulante Encryption Key.

Étape 3 : Chiffrer les données dans ECS

Lorsque des données sont écrites sur le disque chiffré de l'instance ECS ou lues depuis celui-ci, ECS appelle automatiquement les API KMS pour chiffrer et déchiffrer les données. Aucune intervention manuelle n'est requise. Les services cloud utilisent généralement le chiffrement sous enveloppe pour chiffrer les données. Pour plus d'informations, consultez la rubrique Utiliser une clé KMS pour le chiffrement sous enveloppe.

Concevoir des solutions cryptographiques au niveau applicatif

Pour concevoir des solutions cryptographiques au niveau applicatif, utilisez les API fournies par KMS pour le chiffrement et le déchiffrement des données côté client, ainsi que pour la génération et la vérification de signatures numériques. Les types de clés suivants prennent en charge cette fonctionnalité : clé logicielle et clé matérielle.

Prérequis

Vous devez avoir acheté et activé une instance KMS qui prend en charge les clés logicielles ou les clés matérielles. Pour plus d'informations, consultez la rubrique Acheter et activer une instance KMS.

Exemple

Cet exemple montre comment utiliser une clé logicielle pour chiffrer et déchiffrer les données au niveau applicatif. Pour plus d'informations sur les autres opérations, consultez la rubrique Utiliser une clé KMS pour chiffrer et déchiffrer des données en ligne.

Étape 1 : Créer une clé logicielle

  1. 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 Resource > Keys.

  2. Accédez à l'onglet Customer Master Keys, cliquez sur Create Key et suivez les instructions pour terminer la configuration.

    • Pour KMS Instance, sélectionnez l'instance de gestion de clés logicielles KMS que vous avez achetée.

    • Pour Key Type, sélectionnez Symmetric Encryption.

    • Pour Key specification, sélectionnez Aliyun_AES_256. Définissez Key usage sur ENCRYPT/DECRYPT. Saisissez un alias de clé avec le préfixe alias/. Ajoutez des paires clé-valeur de tag si nécessaire. Activez la rotation automatique des clés et définissez une période de rotation, par exemple 7 jours. Chaque rotation consomme une clé de votre quota.

Étape 2 : Mettre à jour l'image de l'instance KMS

Cet exemple utilise une passerelle KMS dédiée pour appeler OpenAPI afin d'effectuer des opérations cryptographiques. Cela nécessite une version d'image 3.0.0 ou ultérieure.

Remarque

Si la version de l'image de votre instance KMS est 3.0.0 ou ultérieure, ignorez cette étape.

Consultez la version de l'image dans les détails de l'instance sur la page Upgrade. Si la version de l'image est antérieure à 3.0.0, cliquez sur Upgrade pour mettre à jour la version de l'image de l'instance KMS. Pour plus d'informations, consultez la rubrique Mettre à jour la version de l'image d'une instance KMS.

Étape 3 : Installer les dépendances

  1. Préparer l'environnement

    Prérequis

    Java 8 ou version ultérieure doit être installé.

    Vérifier la version

    Ouvrez un terminal et exécutez la commande java -version pour vérifier la version du kit de développement Java (JDK).

  2. Installer le SDK

    Ajoutez une dépendance Maven à votre projet pour télécharger automatiquement le SDK depuis le référentiel Maven. Utilisez Alibaba Cloud SDK for Java V2.0.

    <dependency>
      <groupId>com.aliyun</groupId>
      <artifactId>kms20160120</artifactId>
      <version>1.3.1</version>
    </dependency>
    <dependency>
        <groupId>com.aliyun</groupId>
        <artifactId>tea</artifactId>
        <version>1.3.2</version>
    </dependency>
    <dependency>
        <groupId>com.aliyun</groupId>
        <artifactId>tea-openapi</artifactId>
        <version>0.3.6</version>
    </dependency>

Étape 4 : Créer des identifiants API

Les SDK Alibaba Cloud prennent en charge plusieurs méthodes d'authentification basées sur RAM. Cette rubrique utilise la paire AccessKey d'un utilisateur RAM à titre d'exemple. Pour plus d'informations sur les méthodes d'authentification, consultez la rubrique Gérer les identifiants d'accès.

  1. Créez une paire AccessKey pour un utilisateur RAM dans la console RAM. Pour plus d'informations, consultez la rubrique Créer une paire AccessKey.

    Si vous disposez déjà d'une paire AccessKey, ignorez cette étape.

  2. Accordez les autorisations appropriées à l'utilisateur RAM.

    Par exemple, si vous souhaitez que l'utilisateur RAM effectue uniquement des opérations cryptographiques, accordez-lui la stratégie système AliyunKMSCryptoUserAccess. Pour plus d'informations, consultez la rubrique Gérer les autorisations des utilisateurs RAM. Dans le volet de navigation de gauche de la console RAM, choisissez Identities > Users. Sur la page qui s'affiche, localisez l'utilisateur RAM souhaité et cliquez sur Add Permissions dans la colonne Actions.

    Remarque

    KMS propose deux façons d'accorder des autorisations :

    • Comme illustré dans l'exemple précédent, cette méthode contrôle l'accès en associant des autorisations à une identité. Pour plus d'informations, consultez la rubrique Contrôler l'accès à l'aide de RAM.

    • Stratégies basées sur les ressources : ce type de stratégie inclut les stratégies de clé et les stratégies d'identifiants. Ces stratégies sont directement associées aux ressources et définissent les règles d'accès pour ces ressources. Pour plus d'informations, consultez les rubriques Stratégies de clé et Stratégies d'identifiants.

Étape 5 : Obtenir le certificat CA de l'instance KMS

Sur la page des détails de l'instance, obtenez le certificat CA de l'instance.

Dans la section Basic Information, cliquez sur Download à droite de Instance CA certificate.

Étape 6 : Obtenir l'adresse VPC de l'instance

Sur la page des détails de l'instance, obtenez l'adresse VPC de l'instance.

Dans la section Basic Information, recherchez et copiez l'adresse VPC de l'instance.

Étape 7 : Effectuer des appels clients

  1. Initialisez le SDK Alibaba Cloud.

    Important

    Utilisez Alibaba Cloud SDK for Java V2.0. Définissez le paramètre Endpoint sur l'adresse VPC de l'instance et configurez le certificat CA de l'instance.

        public static com.aliyun.kms20160120.Client createClient() throws Exception {
            // Leaking the source code of your project may cause the leak of your AccessKey pair and threaten the security of all resources in your account. The following code is for reference only.
            // We recommend that you use a more secure method, such as by using STS, for authentication. For more information, see https://www.alibabacloud.com/help/document_detail/378657.html.
            com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config()
                    // Required. Make sure that the ALIBABA_CLOUD_ACCESS_KEY_ID environment variable is configured in your runtime environment.
                    .setAccessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"))
                    // Required. Make sure that the ALIBABA_CLOUD_ACCESS_KEY_SECRET environment variable is configured in your runtime environment.
                    .setAccessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
            // Set Endpoint to the VPC address of the instance. Example: kst-hzz65f176a0ogplgq****.cryptoservice.kms.aliyuncs.com.
            config.endpoint = "<your-instance-vpc-address>";
            // Specify the content of the CA certificate of the instance.
            config.ca = "<your-instance-ca-certificate>";
            return new com.aliyun.kms20160120.Client(config);
        }
  2. Appelez l'opération Encrypt pour chiffrer les données.

    package com.aliyun.sample;
    import com.aliyun.tea.*;
    public class Sample {
      public static com.aliyun.kms20160120.Client createClient() throws Exception {
            // Leaking the source code of your project may cause the leak of your AccessKey pair and threaten the security of all resources in your account. The following code is for reference only.
            // We recommend that you use a more secure method, such as by using STS, for authentication. For more information, see https://www.alibabacloud.com/help/document_detail/378657.html.
            com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config()
                    // Required. Make sure that the ALIBABA_CLOUD_ACCESS_KEY_ID environment variable is configured in your runtime environment.
                    .setAccessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"))
                    // Required. Make sure that the ALIBABA_CLOUD_ACCESS_KEY_SECRET environment variable is configured in your runtime environment.
                    .setAccessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
            // Set Endpoint to the VPC address of the instance. Example: kst-hzz65f176a0ogplgq****.cryptoservice.kms.aliyuncs.com.
            config.endpoint = "<your-instance-vpc-address>";
            // Specify the content of the CA certificate of the instance.
            config.ca = "<your-instance-ca-certificate>";
            return new com.aliyun.kms20160120.Client(config);
        }
         public static void main(String[] args_) throws Exception {
            java.util.List<String> args = java.util.Arrays.asList(args_);
            com.aliyun.kms20160120.Client client = Sample.createClient();
            com.aliyun.kms20160120.models.EncryptRequest encryptRequest = new com.aliyun.kms20160120.models.EncryptRequest()
                    .setKeyId("<your-key-id>")
                    .setPlaintext("<your-plaintext>");
            com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions();
            try {
                // If you copy and run this code, you must add your own code to print the API response.
                client.encryptWithOptions(encryptRequest, runtime);
            } catch (TeaException error) {
                // The following code is for demonstration only. Handle exceptions with care. Do not ignore exceptions in your project.
                // error message
                System.out.println(error.getMessage());
                // Troubleshooting recommendation.
                System.out.println(error.getData().get("Recommend"));
                com.aliyun.teautil.Common.assertAsString(error.message);
            } catch (Exception _error) {
                TeaException error = new TeaException(_error.getMessage(), _error);
                // The following code is for demonstration only. Handle exceptions with care. Do not ignore exceptions in your project.
                // error message
                System.out.println(error.getMessage());
                // Troubleshooting recommendation.
                System.out.println(error.getData().get("Recommend"));
                com.aliyun.teautil.Common.assertAsString(error.message);
            }        
        }
    }
  3. Appelez l'opération Decrypt pour déchiffrer les données.

    package com.aliyun.sample;
    import com.aliyun.tea.*;
    public class Sample {
        public static com.aliyun.kms20160120.Client createClient() throws Exception {
            // Leaking the source code of your project may cause the leak of your AccessKey pair and threaten the security of all resources in your account. The following code is for reference only.
            // We recommend that you use a more secure method, such as by using STS, for authentication. For more information, see https://www.alibabacloud.com/help/document_detail/378657.html.
            com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config()
                    // Required. Make sure that the ALIBABA_CLOUD_ACCESS_KEY_ID environment variable is configured in your runtime environment.
                    .setAccessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"))
                    // Required. Make sure that the ALIBABA_CLOUD_ACCESS_KEY_SECRET environment variable is configured in your runtime environment.
                    .setAccessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
            // Set Endpoint to the VPC address of the instance. Example: kst-hzz65f176a0ogplgq****.cryptoservice.kms.aliyuncs.com.
            config.endpoint = "<your-instance-vpc-address>";
            // Specify the content of the CA certificate of the instance.
            config.ca = "<your-instance-ca-certificate>";
            return new com.aliyun.kms20160120.Client(config);
        }
        public static void main(String[] args_) throws Exception {
            java.util.List<String> args = java.util.Arrays.asList(args_);
            com.aliyun.kms20160120.Client client = Sample.createClient();
            com.aliyun.kms20160120.models.DecryptRequest decryptRequest = new com.aliyun.kms20160120.models.DecryptRequest()
                    .setCiphertextBlob("<your-ciphertext-blob>");
            com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions();
            try {
                // If you copy and run this code, you must add your own code to print the API response.
                client.decryptWithOptions(decryptRequest, runtime);
            } catch (TeaException error) {
                // The following code is for demonstration only. Handle exceptions with care. Do not ignore exceptions in your project.
                // error message
                System.out.println(error.getMessage());
                // Troubleshooting recommendation.
                System.out.println(error.getData().get("Recommend"));
                com.aliyun.teautil.Common.assertAsString(error.message);
            } catch (Exception _error) {
                TeaException error = new TeaException(_error.getMessage(), _error);
                // The following code is for demonstration only. Handle exceptions with care. Do not ignore exceptions in your project.
                // error message
                System.out.println(error.getMessage());
                // Troubleshooting recommendation.
                System.out.println(error.getData().get("Recommend"));
                com.aliyun.teautil.Common.assertAsString(error.message);
            }        
        }
    }

Rubriques connexes