Gizli anahtar şifrelemesini etkinleştirme

Bu belgede, Cassandra veritabanında depolanan geliştirici uygulaması tüketici gizli anahtarlarının (istemci kimlik bilgileri) şifrelenmesinin nasıl etkinleştirileceği açıklanmaktadır.

Genel Bakış

Geleneksel olarak, Private Cloud için Apigee Edge, anahtar değer eşlemesi (KVM) verileri ve OAuth erişim jetonları için isteğe bağlı şifreleme sağlar.

Aşağıdaki tabloda, Apigee for Private Cloud'da bekleyen veriler için şifreleme seçenekleri açıklanmaktadır:

Varlık Şifreleme varsayılan olarak etkindir Şifreleme isteğe bağlı olarak kullanılabilir İlgili belgeler
KVM'ler Hayır Evet Şifrelenmiş KVM'ler hakkında başlıklı makaleyi inceleyin.
OAuth erişim jetonları Hayır Evet Ek güvenlik için jetonları karma oluşturma bölümüne bakın.
Geliştirici uygulaması tüketici gizli anahtarları Hayır Evet Etkinleştirmek için bu dokümandaki yapılandırma adımlarını uygulayın.

İstemci kimlik bilgilerinin şifrelenmesini etkinleştirmek için tüm Mesaj İşleyici ve yönetim sunucusu düğümlerinde aşağıdaki görevleri gerçekleştirmeniz gerekir:

  • Anahtar şifreleme anahtarını (KEK) depolamak için bir anahtar deposu oluşturun. Apigee, verilerinizi şifrelemek için gereken gizli anahtarları şifrelemek üzere bu şifrelenmiş anahtarı kullanır.
  • Tüm yönetim sunucusu ve mesaj işlemci düğümlerindeki yapılandırma özelliklerini düzenleyin.
  • Anahtar oluşturmayı tetiklemek için bir geliştirici uygulaması oluşturun.
  • Düğümleri yeniden başlatın.

Bu görevler bu dokümanda açıklanmıştır.

Anahtar şifreleme özelliği hakkında bilmeniz gerekenler

Bu belgedeki adımlarda, Apigee'nin geliştirici uygulaması tüketici sırlarını şifrelemek için kullanılan gizli anahtarları Cassandra veritabanında dinlenme durumunda depolandıklarında şifrelemesine olanak tanıyan KEK özelliğinin nasıl etkinleştirileceği açıklanmaktadır.

Veritabanındaki mevcut değerler varsayılan olarak değişmeden (düz metin olarak) kalır ve eskisi gibi çalışmaya devam eder.

Şifrelenmemiş bir varlık üzerinde herhangi bir yazma işlemi gerçekleştirirseniz işlem kaydedildiğinde varlık şifrelenir. Örneğin, şifrelenmemiş bir jetonu iptal edip daha sonra onaylarsanız yeni onaylanan jeton şifrelenir.

Anahtarları güvende tutma

KEK'in depolandığı anahtar deposunun bir kopyasını güvenli bir yerde sakladığınızdan emin olun. Anahtar deposunun bir kopyasını kaydetmek için kendi güvenli mekanizmanızı kullanmanızı öneririz. Bu belgedeki talimatlarda açıklandığı gibi, yerel yapılandırma dosyasının referans verebileceği her mesaj işlemcisi ve yönetim sunucusu düğümüne bir anahtar deposu yerleştirilmelidir. Ancak, güvenli bir şekilde saklamak ve yedek olarak kullanmak için anahtar deposunun bir kopyasını başka bir yerde saklamanız da önemlidir.

Anahtar şifrelemeyi etkinleştirme

Tüketici gizli anahtarı şifrelemesi için aşağıdaki adımları uygulayın:

Ön koşullar

Bu belgedeki adımları uygulamadan önce aşağıdaki koşulları karşılamanız gerekir:

  • Apigee Edge for Private Cloud 4.50.00.10 veya sonraki bir sürümü yüklemeniz ya da bu sürüme yükseltmeniz gerekir.
  • Apigee Edge for Private Cloud yöneticisi olmanız gerekir.

1. adım: Anahtar deposu oluşturun

Anahtar şifreleme anahtarını (KEK) barındıracak bir anahtar deposu oluşturmak için aşağıdaki adımları uygulayın:

  1. KEK'yi şifrelemek için kullanılacak bir anahtarı depolamak üzere anahtar deposu oluşturmak için aşağıdaki komutu yürütün. Komutu tam olarak gösterildiği şekilde girin. (İstediğiniz keystore adını girebilirsiniz):
    keytool -genseckey -alias KEYSTORE_NAME -keyalg AES -keysize 256 \
    -keystore kekstore.p12 -storetype PKCS12

    İstendiğinde bir şifre girin. Yönetim sunucusunu ve mesaj işlemcisini yapılandırırken bu şifreyi sonraki bölümlerde kullanacaksınız.

    Bu komut, KEYSTORE_NAME diğer adıyla bir anahtar içeren kekstore.p12 anahtar deposu dosyasını oluşturur.

  2. (İsteğe bağlı) Aşağıdaki komutla dosyanın doğru şekilde oluşturulduğunu doğrulayın. Dosya doğruysa komut, KEYSTORE_NAME takma adına sahip bir anahtar döndürür:
    keytool -list -keystore kekstore.p12

2. adım: Yönetim sunucusunu yapılandırın

Ardından, yönetim sunucusunu yapılandırın. Yönetim sunucularınız birden fazla düğüme yüklendiyse bu adımları her düğümde tekrarlamanız gerekir.

  1. 1. adımda oluşturduğunuz anahtar deposu dosyasını yönetim sunucusu düğümündeki bir dizine (ör. /opt/apigee/customer/application) kopyalayın. Örneğin:
    cp certs/kekstore.p12 /opt/apigee/customer/application
  2. Dosyanın apigee kullanıcısı tarafından okunabildiğinden emin olun:
    chown apigee:apigee /opt/apigee/customer/application/kekstore.p12
    chmod 400 /opt/apigee/customer/application/kekstore.p12
  3. /opt/apigee/customer/application/management-server.properties öğesine aşağıdaki özellikleri ekleyin. Dosya yoksa oluşturun. Özellik dosyası referansı bölümüne de bakın.
    conf_keymanagement_kmscred.encryption.enabled=true
    
    # Fallback is true to ensure your existing plaintext credentials continue to work
    conf_keymanagement_kmscred.encryption.allowFallback=true
    
    conf_keymanagement_kmscred.encryption.keystore.path=PATH_TO_KEYSTORE_FILE
    conf_keymanagement_kmscred.encryption.kek.alias=KEYSTORE_NAME
    
    # These could alternately be set as environment variables. These variables should be
    # accessible to Apigee user during bootup of the Java process. If environment
    # variables are specified, you can skip the password configs below.
    # KMSCRED_ENCRYPTION_KEYSTORE_PASS=
    # KMSCRED_ENCRYPTION_KEK_PASS=
    See also Using environment variables for configuration properties.
    
    conf_keymanagement_kmscred.encryption.keystore.pass=KEYSTORE_PASSWORD
    conf_keymanagement_kmscred.encryption.kek.pass=KEK_PASSWORD

    Anahtar deposunu oluşturmak için kullanılan araca bağlı olarak KEK_PASSWORD ile KEYSTORE_PASSWORD aynı olabilir.

  4. Aşağıdaki komutları kullanarak yönetim sunucusunu yeniden başlatın:
    /opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
    /opt/apigee/apigee-service/bin/apigee-service edge-management-server wait_for_ready

    Yönetim sunucusu hazır olduğunda wait_for_ready komutu aşağıdaki mesajı döndürür:

    Checking if management-server is up: management-server is up.
  5. Yönetim sunucularınız birden fazla düğüme yüklendiyse yukarıdaki 1-4 arasındaki adımları her yönetim sunucusu düğümünde tekrarlayın.

3. adım: Geliştirici uygulaması oluşturun

Yönetim sunucuları güncellendiğine göre, istemci kimlik bilgileri verilerini şifrelemek için kullanılan anahtarın oluşturulmasını tetikleyecek bir geliştirici uygulaması oluşturmanız gerekir:

  1. Veri şifreleme anahtarı (KEK) oluşturulmasını tetiklemek için bir geliştirici uygulaması oluşturun. Adımlar için Uygulama kaydetme başlıklı makaleyi inceleyin.
  2. İsterseniz geliştirici uygulamasını silebilirsiniz. Şifreleme anahtarı oluşturulduktan sonra bu dosyayı saklamanız gerekmez.

4. adım: Mesaj işlemcileri yapılandırın

Mesaj işlemcilerde şifreleme etkinleştirilene kadar çalışma zamanı istekleri, şifrelenmiş kimlik bilgilerini işleyemez.

  1. 1. adımda oluşturduğunuz anahtar deposu dosyasını, mesaj işleyici düğümündeki bir dizine (ör. /opt/apigee/customer/application) kopyalayın. Örneğin:
    cp certs/kekstore.p12 /opt/apigee/customer/application
  2. Dosyanın apigee kullanıcısı tarafından okunabildiğinden emin olun:
    chown apigee:apigee /opt/apigee/customer/application/kekstore.p12
  3. /opt/apigee/customer/application/message-processor.properties öğesine aşağıdaki özellikleri ekleyin. Dosya yoksa oluşturun. Özellik dosyası referansı bölümüne de bakın.
    conf_keymanagement_kmscred.encryption.enabled=true
    
    # Fallback is true to ensure your existing plaintext credentials continue to work
    conf_keymanagement_kmscred.encryption.allowFallback=true
    
    conf_keymanagement_kmscred.encryption.keystore.path=PATH_TO_KEYSTORE_FILE
    conf_keymanagement_kmscred.encryption.kek.alias=KEYSTORE_NAME
    
    # These could alternately be set as environment variables. These variables should be
    # accessible to Apigee user during bootup of the Java process. If environment
    # variables are specified, you can skip the password configs below.
    # KMSCRED_ENCRYPTION_KEYSTORE_PASS=
    # KMSCRED_ENCRYPTION_KEK_PASS=
    See also Using environment variables for configuration properties.
    
    
    conf_keymanagement_kmscred.encryption.keystore.pass=KEYSTORE_PASSWORD
    conf_keymanagement_kmscred.encryption.kek.pass=KEK_PASSWORD

    Anahtar deposunu oluşturmak için kullanılan araca bağlı olarak KEK_PASSWORD ile KEYSTORE_PASSWORD aynı olabilir.

  4. Aşağıdaki komutları kullanarak mesaj işlemcisini yeniden başlatın:
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor wait_for_ready

    Mesaj işleyici mesajları işlemeye hazır olduğunda wait_for_ready komutu aşağıdaki mesajı döndürür:

    Checking if message-processor is up: message-processor is up.
  5. Birden fazla düğüme Mesaj İşleyici yüklediyseniz her Mesaj İşleyici düğümünde 1-4 arasındaki adımları tekrarlayın.

Özet

Şu andan itibaren oluşturacağınız tüm geliştirici uygulamalarının kimlik bilgisi gizli anahtarı, Cassandra veritabanında şifrelenir.

Yapılandırma özellikleri için ortam değişkenlerini kullanma

Alternatif olarak, ortam değişkenlerini kullanarak aşağıdaki mesaj işlemci ve yönetim sunucusu yapılandırma özelliklerini ayarlayabilirsiniz. Ayarlanırsa ortam değişkenleri, Mesaj İşleyici veya yönetim sunucusu yapılandırma dosyasında ayarlanan özellikleri geçersiz kılar.

conf_keymanagement_kmscred.encryption.keystore.pass=
conf_keymanagement_kmscred.encryption.kek.pass=

İlgili ortam değişkenleri şunlardır:

export KMSCRED_ENCRYPTION_KEYSTORE_PASS=KEYSTORE_PASSWORD
export KMSCRED_ENCRYPTION_KEK_PASS=KEK_PASSWORD

Bu ortam değişkenlerini ayarlarsanız mesaj işlemci ve yönetim sunucusu düğümlerindeki yapılandırma dosyalarından bu yapılandırma özelliklerini çıkarabilirsiniz. Bu özellikler yok sayılır:

conf_keymanagement_kmscred.encryption.keystore.pass
conf_keymanagement_kmscred.encryption.kek.pass

Tesis dosyası referansı

Bu bölümde, bu belgede daha önce açıklandığı gibi tüm Mesaj İşleyici ve yönetim sunucusu düğümlerinde ayarlamanız gereken yapılandırma özellikleri açıklanmaktadır.

Mülk Varsayılan Açıklama
conf_keymanagement_kmscred.encryption.enabled false Anahtar şifrelemeyi etkinleştirmek için true olmalıdır.
conf_keymanagement_kmscred.encryption.allowFallback false Mevcut düz metin kimlik bilgilerinizin çalışmaya devam etmesini sağlamak için allowFallback'i true olarak ayarlayın.
conf_keymanagement_kmscred.encryption.keystore.path Yok Mesaj işlemci veya yönetim sunucusu düğümünde KEK anahtar deposunun yolunu belirtin. 2. adım: Yönetim sunucusunu yapılandırma ve 3. adım: Mesaj işlemcileri yapılandırma bölümlerini inceleyin.
conf_keymanagement_kmscred.encryption.kek.alias Yok KEK'in anahtar deposunda saklandığı takma ad.
conf_keymanagement_kmscred.encryption.keystore.pass Yok Bu özellikleri ayarlamak için ortam değişkenleri kullanıyorsanız isteğe bağlıdır. Ayrıca bkz. Yapılandırma özellikleri için ortam değişkenlerini kullanma.
conf_keymanagement_kmscred.encryption.kek.pass Yok Bu özellikleri ayarlamak için ortam değişkenleri kullanıyorsanız isteğe bağlıdır. Ayrıca Yapılandırma özellikleri için ortam değişkenlerini kullanma başlıklı makaleyi de inceleyin.