Kendi anahtar belirtiminizi getirin

Bu belgede, müşterilerin şirket içi HSM'lerinden Key Vault HSM korumalı anahtarları içeri aktarmaya yönelik belirtimler açıklanmaktadır.

Senaryo

Key Vault müşterisi, yerel HSM'sinden Azure Key Vault'u destekleyen Azure dışındaki HSM'e güvenli bir şekilde anahtar aktarmak istiyor. Bu işleme Bring Your Own Key (BYOK) adı verilir.

Aşağıdaki gereksinimler geçerlidir:

  • Aktarım anahtarı hiçbir zaman HSM'nin dışında düz metin biçiminde bulunmaz.
  • HSM dışında aktarım anahtarı her zaman Azure Key Vault HSM'de tutulan bir anahtarla korunur.

Terminoloji

Anahtar Adı Anahtar Türü Başlangıç Açıklama
Anahtar Değiştirme Anahtarı (KEK) RSA Azure Key Vault HSM Azure Key Vault'de oluşturulan bir HSM destekli RSA anahtar çifti
Sarmalama Anahtarı Ekim Satıcı HSM Şirket içi HSM tarafından oluşturulan [kısa ömürlü] sekizli anahtar
Hedef Anahtar RSA, EC, oct (yalnızca Yönetilen Donanım Güvenlik Modülü) Satıcı HSM Azure Key Vault HSM'ye aktarım anahtarı

Key Exchange Key: BYOK anahtarını içeri aktardığınız anahtar kasasında oluşturduğunuz, HSM destekli bir anahtar. Bu KEK aşağıdaki özelliklere sahip olmalıdır:

  • Bu bir RSA-HSM anahtarıdır (4096 bit, 3072 bit veya 2048 bit).
  • Yalnızca BYOK sırasında kullanabileceğiniz sabit bir key_ops (YALNIZCA import) bulunmaktadır.
  • Hedef Anahtarı içeri aktardığınız kasada bulunmalıdır.

Kullanıcı adımları

Bir anahtar aktarımı gerçekleştirmek için kullanıcı aşağıdaki adımları gerçekleştirir:

  1. KEK oluşturun.
  2. KEK'nin ortak anahtarını alın.
  3. HSM satıcı tarafından sağlanan BYOK aracını kullanarak KEK'yi hedef HSM'ye içeri aktarın ve KEK tarafından korunan hedef anahtarı dışarı aktarın.
  4. Korumalı hedef anahtarı Azure Key Vault içeri aktarın.

Müşteriler, 3. adımı tamamlamak için HSM satıcısı tarafından sağlanan BYOK aracını ve belgelerini kullanır. Anahtar aktarım blobu ( .byok dosya) oluşturur.

HSM kısıtlamaları

Mevcut HSM'ler, yönettikleri anahtarlara aşağıdakiler dahil olmak üzere kısıtlamalar uygulayabilir:

  • Anahtar sarmalama tabanlı dışarı aktarmaya izin vermek için HSM'yi yapılandırmanız gerekebilir.
  • Denetimli dışarı aktarmaya izin vermek için HSM için hedef anahtarı CKA_EXTRACTABLE olarak işaretlemeniz gerekebilir.
  • Bazı durumlarda KEK ve sarmalama anahtarını CKA_TRUSTED olarak işaretlemeniz gerekebilir ve bu da HSM'deki anahtarları sarmalamada kullanılmasını sağlar.

Kaynak HSM yapılandırması genellikle bu belirtim kapsamının dışındadır. Microsoft, HSM satıcısının bu tür yapılandırma adımlarını dahil etmek için BYOK aracına eşlik eden belgeler üretmesini bekler.

Uyarı

Azure PowerShell ve Azure portalı gibi diğer arabirimleri kullanarak bu adımlardan birkaçını gerçekleştirebilirsiniz. Bu adımları Key Vault SDK'daki eşdeğer işlevleri kullanarak program aracılığıyla da gerçekleştirebilirsiniz.

KEK Oluştur

anahtar işlemleri içeri aktaracak şekilde ayarlanmış bir KEK oluşturmak için az keyvault key create komutunu kullanın. Bu komuttan döndürülen anahtar tanımlayıcısını kid not edin.

az keyvault key create --kty RSA-HSM --size 4096 --name KEKforBYOK --ops import --vault-name <vault-name>

Uyarı

Hizmetler farklı Anahtar Şifreleme Anahtarı (KEK) uzunluklarını destekler. Örneğin Azure SQL yalnızca 2048 bit veya 3072 bit anahtar uzunluklarını destekler. Ayrıntılar için hizmetinizin belgelerine bakın.

KEK'nin ortak anahtarını alma

KEK'nin ortak anahtar bölümünü indirin ve bir PEM dosyasında depolayın.

az keyvault key download --name KEKforBYOK --vault-name <vault-name> --file KEKforBYOK.publickey.pem

HSM satıcısı tarafından sağlanan BYOK aracını kullanarak anahtar aktarım blobu oluşturma

Anahtar aktarım blobu (dosya olarak .byok depolanır) oluşturmak için HSM satıcısı tarafından sağlanan BYOK aracını kullanın. Araç, KEK ortak anahtarını girdilerinden biri olarak bir .pem dosyası şeklinde alır.

Anahtar aktarım blobu

Microsoft hedef anahtarı Azure Key Vault aktarmak için PKCS#11 CKM_RSA_AES_KEY_WRAP mekanizmasını kullanmayı planlıyor. Bu mekanizma tek bir blob oluşturur ve daha da önemlisi, iki HSM ara AES anahtarını işler ve kısa ömürlü olduğunu garanti eder. Bu mekanizma şu anda bazı HSM'lerde kullanılamaz, ancak AES anahtarıyla CKM_AES_KEY_WRAP_PAD kullanarak hedef anahtarı korumanın ve CKM_RSA_PKCS_OAEP kullanarak AES anahtarını korumanın bileşimi eşdeğer bir blob oluşturur.

Hedef anahtar düz metin anahtar türüne bağlıdır.

  • RSA anahtarı için, özel anahtar ASN.1 DER kodlaması [RFC3447] kullanır ve PKCS#8 [RFC5208] içerisinde sarmalanmıştır.
  • ASN.1 DER kodlaması [RFC5915] kullanan bir EC anahtarının özel anahtarı, PKCS#8 [RFC5208] içine sarılır.
  • Sekizli anahtar için anahtar ham baytları kullanır.

İşlem, CKM_RSA_AES_KEY_WRAP mekanizmasını kullanarak düz metin anahtarının baytlarını dönüştürür:

  • İşlem, kısa ömürlü bir oktet anahtar oluşturur ve sarmalama RSA anahtarını ve RSA-OAEP ile SHA1 kullanarak şifreler.
  • İşlem, oct anahtarı ve Doldurma ile AES Anahtar Sarma kullanılarak kodlanmış düz metin anahtarını şifreler.
  • İşlem, son şifreli metin blob'unu oluşturmak için şifrelenmiş OCT anahtarı ve şifrelenmiş düz metin anahtarını birleştirir.

Aktarım blobu biçimi, doğru şifre çözme için gerekli meta verileri hizmete teslim etmek için öncelikle bir araç olarak JSON Web Şifrelemesi sıkıştırma serileştirmesini (RFC7516) kullanır.

CKM_RSA_AES_KEY_WRAP_PAD kullanırsanız aktarım blobunun JSON serileştirmesi şöyle olur:

{
  "schema_version": "1.0.0",
  "header":
  {
    "kid": "<kek-key-id>",
    "alg": "dir",
    "enc": "CKM_RSA_AES_KEY_WRAP"
  },
  "ciphertext":"BASE64URL(<ciphertext>)",
  "generator": "BYOK tool name and version; source HSM name and firmware version"
}

  • kid = KEK'nin anahtar tanımlayıcısı. Key Vault anahtarları için bu şekilde görünür: https://<vault-name>.vault.azure.net/keys/mykek/<key-version>
  • alg = algoritma.
  • dir = Doğrudan mod. Başvurulan kid, CKM_RSA_AES_KEY_WRAP'in doğru bir temsilini olan şifreli metni doğrudan olarak korur.
  • generator = BYOK aracının ve kaynak HSM üreticisinin ve modelinin adını ve sürümünü belirten bilgilendirme alanı. Sorun giderme ve destek için bu bilgileri kullanın.

.byok (PowerShell) veya Add-AzKeyVaultKey (CLI) komutlarını kullandığınızda Azure PowerShell veya CLI istemcisinin doğru şekilde davranması için JSON blobunu az keyvault key import uzantısına sahip bir dosyada depolayın.

HSM anahtarını içeri aktarmak için anahtar aktarım blobunu yükleyin

Anahtarı içeri aktarmak için Anahtar Aktarım Blobunu (".byok" dosyasını) çevrimiçi bir iş istasyonuna aktarın ve ardından az keyvault key import komutunu çalıştırın. Bu komut blobu yeni bir HSM destekli anahtar olarak Key Vault içeri aktarır.

RSA anahtarını içeri aktarmak için aşağıdaki komutu kullanın:

az keyvault key import --vault-name <vault-name> --name <key-name> --byok-file KeyTransferPackage-<key-name>.byok --ops encrypt decrypt

EC anahtarını içeri aktarmak için anahtar türünü ve eğri adını belirtin.

az keyvault key import --vault-name <vault-name> --name <key-name> --kty EC-HSM --curve-name "P-256" --byok-file KeyTransferPackage-<key-name>.byok --ops sign verify

Bu komutu çalıştırdığınızda, aşağıdaki gibi bir REST API isteği gönderir:

PUT https://<vault-name>.vault.azure.net/keys/<key-name>?api-version=7.6

RSA anahtarı içeri aktarılırken istek gövdesi şöyledir:

{
  "key": {
    "kty": "RSA-HSM",
    "key_ops": [
      "decrypt",
      "encrypt"
    ],
    "key_hsm": "<base64-encoded-byok-blob>"
  },
  "attributes": {
    "enabled": true
  }
}

EC anahtarını içe aktarırken istek içeriği:

{
  "key": {
    "kty": "EC-HSM",
    "crv": "P-256",
    "key_ops": [
      "sign",
      "verify"
    ],
    "key_hsm": "<base64-encoded-byok-blob>"
  },
  "attributes": {
    "enabled": true
  }
}

key_hsm Değer, KeyTransferPackage-<key-name>.byok dosyasının Base64 biçiminde kodlanmış tüm içeriğidir.

Kaynaklar

Sonraki Adımlar

  • Adım adım BYOK yönergeleri: HSM korumalı anahtarları Key Vault (BYOK)