Gizli anahtar şifrelemesini etkinleştirme

Bu belgede, 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, 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 aktif olmayan 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 işlemci 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şturma işlemini 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, KEK özelliğinin nasıl etkinleştirileceği açıklanmaktadır. Bu özellik, Apigee'nin Cassandra veritabanında depolanan geliştirici uygulaması tüketici gizli anahtarlarını şifrelemek için kullanılan gizli anahtarları şifrelemesine olanak tanı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 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 dokümandaki talimatlarda açıklandığı gibi, her mesaj işlemci ve yönetim sunucusu düğümüne, yerel yapılandırma dosyasının referans verebileceği bir anahtar deposu 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 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 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. Yönetim sunucusunu ve mesaj işlemcisini yapılandırırken bu şifreyi kullanacaksınız.

    Bu komut, takma adı KEYSTORE_NAME olan 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. Birden fazla düğüme yönetim sunucuları yüklediyseniz 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. Birden fazla düğüme yönetim sunucusu yüklediyseniz her yönetim sunucusu düğümünde yukarıdaki 1-4. adımları 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şleyicileri 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 yüklenmiş mesaj işlemcileriniz varsa her mesaj işlemci 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 işlemci 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 dokümanda daha önce açıklandığı gibi tüm mesaj işlemci 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 etmesi için allowFallback değerini 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 bkz. Yapılandırma özellikleri için ortam değişkenlerini kullanma.