Tüm Ürünler
Search
Belge Merkezi

Key Management Service:Key management quickstart

Son Güncelleme:Oct 04, 2026

İş verilerini şifrelemek ve şifresini çözmek için Key Management Service (KMS) kullanarak anahtarlar oluşturabilirsiniz. Bu konuda, bu anahtarların nasıl oluşturulup kullanılacağı açıklanmaktadır.

Genel Bakış

KMS; farklı iş senaryolarını, güvenlik ve uyumluluk gereksinimlerini karşılamak üzere varsayılan anahtar, yazılım anahtarı ve donanım anahtarı olmak üzere üç anahtar yönetim türü sunar. Daha fazla bilgi için bkz. Key Management Service'a Genel Bakış ve anahtar yönetim türleri ve anahtar teknik özellikleri.

  • Varsayılan anahtar, KMS tarafından ücretsiz olarak sunulur. ECS ile entegrasyon gibi durumlarda cloud hizmetlerinde sunucu tarafı şifreleme için kullanabilirsiniz. Varsayılan anahtar yalnızca simetrik şifrelemeyi destekler ve istemci tarafı veri şifrelemeyi desteklemez.

  • Yazılım anahtarı, varsayılan anahtara benzer şekilde cloud hizmetleri için sunucu tarafı şifreleme sağlar. Ayrıca, istemci tarafı veri şifreleme, şifre çözme, dijital imza oluşturma ve doğrulama amacıyla API'leri kullanarak uygulama katmanı kriptografik çözümler oluşturmak için de yazılım anahtarını kullanabilirsiniz. Yazılım anahtarı simetrik veya asimetrik bir anahtar olabilir ve anahtar sızdırma riskini azaltmak için anahtar rotasyonunu (otomatik anahtar güncellemesi) destekler.

  • Donanım anahtarı, yazılım anahtarına benzer şekilde cloud hizmetleri için sunucu tarafı şifreleme sağlar ve uygulama katmanı kriptografik çözümler oluşturmanıza olanak tanır. İstemci tarafı veri şifreleme ve şifre çözme, dijital imza oluşturma ve doğrulama için API'ler sunar; hem simetrik hem de asimetrik anahtarları destekler. Yazılım anahtarına kıyasla donanım anahtarı daha fazla anahtar teknik özelliğini destekler ve anahtarları bir donanım güvenlik modülünde saklar; böylece Çin'in Kriptografi Yasası ve FIPS gibi uyumluluk gereksinimlerini karşılar. Ancak donanım anahtarı anahtar rotasyonunu desteklemez.

Cloud hizmetleri için verileri şifreleme

ECS gibi cloud hizmetlerinde sunucu tarafı şifreleme için anahtar yönetimini kullanarak verilerin düz metin olarak iletilmesinden kaynaklanan güvenlik risklerinden kaçınabilirsiniz. Bu özelliği aşağıdaki anahtar türleri destekler: varsayılan anahtar, yazılım anahtarı ve donanım anahtarı

Örnek

Bu örnekte, ECS'nin KMS varsayılan master anahtarıyla nasıl entegre edileceği gösterilmektedir. Cloud hizmetlerinin KMS ile entegrasyonu hakkında daha fazla bilgi için bkz. Cloud hizmetleriyle KMS entegrasyonuna genel bakış ve KMS ile entegre edilebilen cloud hizmetleri.

Adım 1: Varsayılan bir master anahtarı etkinleştirin

  1. Key Management Service konsolu üzerinde oturum açın. Üst gezinme çubuğunda bir bölge seçin. Sol gezinme bölmesinde Resources > Keys seçeneklerine gidin.

  2. Anahtar Yönetimi sayfasında Default Keys sekmesine tıklayın ve ardından master anahtar için İşlemler sütununda Enable seçeneğine tıklayın. Master anahtar takma adını alias/main olarak belirleyin.

Not

Varsayılan anahtar yalnızca cloud hizmetlerinde sunucu tarafı şifreleme için kullanılabilir; istemci tarafı veri şifreleme için kullanılamaz. İstemci tarafı veri şifrelemeye ihtiyacınız varsa bir örnek satın alarak müşteri master anahtarı (yazılım) veya müşteri master anahtarı (donanım) edinmeniz gerekir.

Adım 2: ECS'yi varsayılan KMS anahtarıyla entegre edin

Bir ECS örneği satın alırken satın alma sayfasında sunucu tarafı verileri şifrelemek için alias/main anahtar takma adını seçin.

Storage ayarlarının System Disk bölümünde Encrypt onay kutusunu işaretleyin ve ardından Encryption Key açılır listesinden istediğiniz anahtarı seçin.

Adım 3: ECS'deki verileri şifreleyin

Şifrelenmiş ECS diskinize veri yazıldığında veya diskten okunduğunda, ECS KMS API'lerini otomatik olarak çağırarak verileri şifreler ve şifresini çözer. Manuel müdahale gerekmez. Cloud hizmetleri genellikle verileri şifrelemek için zarf şifrelemeyi kullanır. Daha fazla bilgi için bkz. Zarf şifreleme için KMS anahtarı kullanma.

Uygulama katmanı kriptografik çözümler oluşturma

Uygulama katmanı kriptografik çözümler oluşturmak için KMS tarafından sunulan API'leri istemci tarafı veri şifreleme ve şifre çözme ile dijital imza oluşturma ve doğrulama amacıyla kullanabilirsiniz. Bu özelliği aşağıdaki anahtar türleri destekler: yazılım anahtarı ve donanım anahtarı.

Ön Koşullar

Yazılım anahtarlarını veya donanım anahtarlarını destekleyen bir KMS örneği satın almış ve etkinleştirmiş olmanız gerekir. Daha fazla bilgi için bkz. KMS örneği satın alma ve etkinleştirme.

Örnek

Bu örnekte, uygulama katmanı verilerini Şifrelemek ve Şifresini Çözmek için yazılım anahtarının nasıl kullanılacağı gösterilmektedir. Diğer işlemler hakkında daha fazla bilgi için bkz. Verileri çevrimiçi olarak şifrelemek ve şifresini çözmek için KMS anahtarı kullanma.

Adım 1: Yazılım anahtarı oluşturun

  1. Key Management Service konsolu üzerinde oturum açın. Üst gezinme çubuğunda bir bölge seçin. Sol gezinme bölmesinde Resources > Keys seçeneklerine gidin.

  2. Customer Master Keys sekmesine gidin, Create Key seçeneğine tıklayın ve yapılandırmayı tamamlamak için ekrandaki talimatları izleyin.

    • KMS Instance alanında satın aldığınız KMS software key management instance öğesini seçin.

    • Key Type alanında Symmetric Encryption seçeneğini belirleyin.

    • Key specification alanında Aliyun_AES_256 seçeneğini belirleyin. Key usage değerini ENCRYPT/DECRYPT olarak ayarlayın. alias/ ön ekiyle bir key alias girin. Gerektiğinde tag anahtar-değer çiftleri ekleyin. automatic key rotation özelliğini etkinleştirin ve 7 gün gibi bir rotasyon periyodu belirleyin. Her rotasyon kotanızdan bir anahtar tüketir.

Adım 2: KMS örneği görüntüsünü yükseltin

Bu örnekte kriptografik işlemler için OpenAPI'yi çağıran özel bir KMS ağ geçidi kullanılmaktadır. Bu işlem, 3.0.0 veya üzeri bir görüntü sürümü gerektirir.

Not

KMS örneğinizin görüntü sürümü 3.0.0 veya üzeriyse bu adımı atlayın.

Görüntü sürümünü Upgrade sayfasındaki örnek ayrıntılarında görüntüleyebilirsiniz. Görüntü sürümü 3.0.0'dan önceyse KMS örneğinin görüntü sürümünü yükseltmek için Upgrade seçeneğine tıklayın. Daha fazla bilgi için bkz. KMS örneğinin görüntü sürümünü yükseltme.

Adım 3: Bağımlılıkları yükleyin

  1. Ortamı hazırlayın

    Gereksinimler

    Java 8 veya sonraki bir sürüm indirilmiş ve yüklenmiştir.

    Sürümü doğrulayın

    Bir terminal açın ve Java Development Kit (JDK) sürümünü kontrol etmek için java -version komutunu çalıştırın.

  2. SDK'yı yükleyin

    Projenize bir Maven bağımlılığı ekleyerek SDK'yı Maven deposundan otomatik olarak indirin. Alibaba Cloud SDK for Java V2.0 kullanın.

    <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>

Adım 4: API kimlik bilgilerini oluşturun

Alibaba Cloud SDK'ları, RAM tabanlı birden fazla kimlik doğrulama yöntemini destekler. Bu konuda örnek olarak bir RAM kullanıcısının AccessKey çifti kullanılmıştır. Kimlik doğrulama yöntemleri hakkında daha fazla bilgi için bkz. Erişim kimlik bilgilerini yönetme.

  1. RAM konsolu içinde bir RAM kullanıcısı için bir AccessKey çifti oluşturun. Daha fazla bilgi için bkz. AccessKey çifti oluşturma.

    Zaten bir AccessKey çiftiniz varsa bu adımı atlayın.

  2. RAM kullanıcısına uygun izinler verin.

    Örneğin, RAM kullanıcısının yalnızca kriptografik işlemler yapmasını istiyorsanız kullanıcıya AliyunKMSCryptoUserAccess sistem ilkesini verebilirsiniz. Daha fazla bilgi için bkz. RAM kullanıcı izinlerini yönetme. RAM konsolunun sol gezinme bölmesinde Identities > Users seçeneklerine gidin. Açılan sayfada ilgili RAM kullanıcısını bulun ve Actions sütununda Add Permissions seçeneğine tıklayın.

    Not

    KMS izin vermek için iki yöntem sunar:

    • Önceki örnekte gösterildiği gibi bu yöntem, izinleri bir kimlikle ilişkilendirerek erişimi kontrol eder. Daha fazla bilgi için bkz. RAM kullanarak erişimi kontrol etme.

    • Kaynak tabanlı ilkeler: Bu ilke türü, anahtar ilkelerini ve kimlik bilgisi ilkelerini içerir. Bu ilkeler doğrudan kaynaklarla ilişkilendirilir ve kaynaklar için erişim kurallarını tanımlar. Daha fazla bilgi için bkz. Anahtar ilkeleri ve Kimlik bilgisi ilkeleri.

Adım 5: KMS örneği CA sertifikasını alın

Örnek ayrıntıları sayfasından örneğin CA sertifikasını alın.

Basic Information bölümünde Instance CA certificate öğesinin yanındaki Download seçeneğine tıklayın.

Adım 6: Örnek VPC adresini alın

Örnek ayrıntıları sayfasından örneğin VPC adresini alın.

Basic Information bölümünde instance VPC address değerini bulun ve kopyalayın.

Adım 7: İstemci çağrıları yapın

  1. Alibaba Cloud SDK'sını başlatın.

    Önemli

    Alibaba Cloud SDK for Java V2.0 kullanın. Endpoint parametresini örnek VPC adresine ayarlayın ve örnek CA sertifikasını yapılandırın.

        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. Verileri şifrelemek için Encrypt işlemini çağırın.

    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. Verilerin şifresini çözmek için Decrypt işlemini çağırın.

    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);
            }        
        }
    }

İlgili konular