Gizli anahtar şifrelemesini etkinleştirme

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

Genel Bakış

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

Aşağıdaki tabloda, Özel Bulut için Apigee'de kullanılmayan verilerin ş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 jetonlardan karma oluşturma başlıklı makaleyi inceleyin.
Geliştirici uygulaması tüketici sırlar Hayır Evet Etkinleştirmek için bu belgedeki yapılandırma adımlarını uygulayın.

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

  • Anahtar şifreleme anahtarı (KEK) depolamak için bir anahtar deposu oluşturun. Apigee, bu şifrelenmiş anahtarı verilerinizi şifrelemek için gereken gizli anahtarları şifrelemek amacıyla kullanır.
  • Tüm yönetim sunucusu ve ileti işleyici 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 işlemler 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 gizliliklerini şifrelemek için kullanılan gizli anahtarları Cassandra veritabanında dinlenme durumundayken şifrelemelerine olanak tanıyan KEK özelliğinin nasıl etkinleştirileceği açıklanmaktadır.

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

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

Anahtarları güvende tutma

KEK'nin 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, her ileti işleyiciye ve yönetim sunucusu düğümüne, yerel yapılandırma dosyasının referans verebileceği bir anahtar mağazası yerleştirilmelidir. Ancak anahtar deposunun bir kopyasını güvenli bir yerde ve yedek olarak saklamak 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 şu gereksinimleri karşılamanız gerekir:

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

1. adım: Anahtar mağazası oluşturun

Anahtar şifreleme anahtarını (KEK) saklayacak bir anahtar deposu oluşturmak için şu adımları uygulayın:

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

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

    Bu komut, KEYSTORE_NAME takma adına sahip bir anahtar içeren kekstore.p12 anahtar deposu dosyası oluşturur.

  2. (İsteğe bağlı) Aşağıdaki komutu kullanarak 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

FIPS özellikli işletim sistemleri için BCFKS anahtar depolarıyla çalışma

Private Cloud için Edge'i FIPS özellikli bir işletim sisteminde kullanıyorsanız BCFKS türü bir anahtar mağazası oluşturmanız gerekir. Bu tür bir anahtar deposu, FIPS olmayan bir makinede oluşturulup FIPS uyumlu bir makineye aktarılabilir. Anahtar deposunu oluşturmak için aşağıdaki komutu kullanın:

keytool -genseckey -alias <KEYSTORE_NAME> -keyalg AES -keysize 256 \
-storetype BCFKS -keystore keystore.bcfks \
-providerpath /opt/apigee/edge-gateway/lib/thirdparty/bc-fips-1.0.2.4.jar \
-providerclass org.bouncycastle.jcajce.provider.BouncyCastleFipsProvider \
-keypass keystorepass -storepass keystorepass

Bu anahtar deposunu oluşturduğunuz makinede ek Java ayarlarını yapmanız gerekebilir. Makinenin Java güvenlik dosyasını (genellikle /usr/lib/jvm/jre/lib/security/java.security adresinde bulunur) düzenlemeniz gerekebilir. Bu dosyada aşağıdaki özellikleri bulup düzenleyin:

# Don't rely on /dev/random for generating random numbers
securerandom.source=file:/dev/urandom
securerandom.strongAlgorithms=PKCS11:SunPKCS11-NSS-FIPS

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

Ardından, yönetim sunucusunu yapılandırın. Birden fazla düğümde yönetim sunucuları yüklüyse her düğümde bu adımları tekrarlamanız gerekir.

  1. 1. Adım'da oluşturduğunuz anahtar deposu dosyasını yönetim sunucusu düğümündeki /opt/apigee/customer/application gibi bir dizine kopyalayın. Örneğin:
    cp certs/kekstore.p12 /opt/apigee/customer/application
  2. Dosyanın apigee kullanıcısı tarafından okunabilir olduğundan emin olun:
    chown apigee:apigee /opt/apigee/customer/application/kekstore.p12
    chmod 400 /opt/apigee/customer/application/kekstore.p12
  3. Aşağıdaki özellikleri /opt/apigee/customer/application/management-server.properties öğesine ekleyin. Dosya mevcut değilse dosyayı oluşturun. Ayrıca Mülk dosyası referansı başlıklı makaleyi inceleyin.
    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 değerinin KEYSTORE_PASSWORD ile aynı olabileceğini unutmayın.

  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. Birden fazla düğüme yönetim sunucusu yüklediyseniz 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 artık istemci kimlik bilgisi verilerini şifrelemek için kullanılan anahtarın oluşturulmasını tetiklemek üzere 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 kaydettirme başlıklı makaleyi inceleyin.
  2. İsterseniz geliştirici uygulamasını silin. Şifreleme anahtarı oluşturulduktan sonra bu dosyayı saklamaya devam etmeniz gerekmez.

4. Adım: Mesaj işlemcilerini yapılandırın

Şifreleme, ileti işleyicilerde etkinleştirilene kadar çalışma zamanındaki istekler şifrelenmiş kimlik bilgilerini işleyemez.

  1. 1. adımda oluşturduğunuz anahtar mağazası 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 alanına aşağıdaki özellikleri ekleyin. Dosya mevcut değilse dosyayı oluşturun. Mülk dosya referansı başlıklı makaleyi de inceleyin.
    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

    KEK_PASSWORD değerinin, anahtar deposu oluşturmak için kullanılan araca bağlı olarak KEYSTORE_PASSWORD ile aynı olabileceğini unutmayın.

  4. Aşağıdaki komutları kullanarak mesaj işleyiciyi 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şlemcisi, 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 işleyici yüklediyseniz 1-4 arasındaki adımları her mesaj işleyici düğümünde tekrarlayın.

Özet

Bundan sonra oluşturacağınız tüm geliştirici uygulamalarının kimlik bilgisi gizliliği, 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 işlemcisinde 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=

Karşılık gelen 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 bu yapılandırma özellikleri yoksayılacağı için mesaj işleyici ve yönetim sunucusu düğümlerindeki yapılandırma dosyalarından çıkarabilirsiniz:

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

Mülk dosyası referansı

Bu bölümde, bu dokümanda daha önce açıklandığı gibi tüm mesaj iş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 ayarını true olarak ayarlayın.
conf_keymanagement_kmscred.encryption.keystore.path Yok İleti işleyici veya yönetim sunucusu düğümündeki KEK anahtar deposunun yolunu sağlayın. 2. Adım: Yönetim sunucusunu yapılandırın ve 3. Adım: İleti işleyicileri yapılandırın başlıklı makaleleri inceleyin.
conf_keymanagement_kmscred.encryption.kek.alias Yok KEK'nin anahtar deposunda depolandığı 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. Yapılandırma özellikleri için ortam değişkenlerini kullanma başlıklı makaleyi de inceleyin.
conf_keymanagement_kmscred.encryption.kek.pass Yok Bu özellikleri ayarlamak için ortam değişkenlerini kullanıyorsanız isteğe bağlıdır. Yapılandırma özellikleri için ortam değişkenlerini kullanma başlıklı makaleyi de inceleyin.