Gizli anahtar şifrelemesini etkinleştirme

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

Genel bakış

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

Aşağıdaki tabloda, Private Cloud için Apigee'de aktif olmayan verilere yönelik şifreleme seçenekleri açıklanmaktadır:

Varlık Şifreleme varsayılan olarak etkindir İsteğe bağlı olarak şifreleme 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 jetonlara karma oluşturma işlemi uygulama başlıklı makaleyi inceleyin.
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şlemcisi ve yönetim sunucusu düğümlerinde aşağıdaki görevleri gerçekleştirmeniz gerekir:

  • Anahtar şifreleme anahtarını (KEK) depolamak için anahtar deposu oluşturun. Apigee, verilerinizi şifrelemek için gereken gizli anahtarları şifrelemek amacıyla 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 belgede açıklanmaktadır.

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

Bu belgedeki adımlarda, Apigee'nin Cassandra veritabanında aktif olmayan geliştirici uygulamaları tüketici gizli anahtarlarını şifrelemek için kullanılan gizli anahtarları şifrelemesine 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 (düz metin olarak) kalır ve önceden olduğu 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'nin güvenli bir yerde saklandığı anahtar deposunun bir kopyasını 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 başvurabileceği her mesaj işlemcisi ve yönetim sunucusu düğümüne bir anahtar deposu yerleştirilmelidir. Ancak anahtar deposunun bir kopyasının saklanmak üzere başka bir yerde saklanması ve yedek olarak saklanması da önemlidir.

Anahtar şifrelemeyi etkinleştirme

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

Ön koşullar

Bu belgedeki adımları uygulamadan önce bu 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 deposu 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 anahtarı depolamak amacıyla anahtar deposu oluşturmak için aşağıdaki komutu yürütün. Komutu tam olarak gösterildiği gibi girin. (İstediğiniz herhangi bir anahtar deposu adını girebilirsiniz):
    keytool -genseckey -alias KEYSTORE_NAME -keyalg AES -keysize 256 \
    -keystore kekstore.p12 -storetype PKCS12

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

    Bu komut, KEYSTORE_NAME takma adına sahip anahtar içeren bir kekstore.p12 anahtar deposu dosyası 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 kurulu yönetim sunucularınız varsa 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 /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 okunabildiğinden 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 yoksa oluşturun. Ayrıca bkz. Mülk dosyası referansı.
    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 öğesinin, 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üklü yönetim sunucularınız varsa her bir yönetim sunucusu düğümünde yukarıdaki 1-4 arasındaki 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 amacıyla kullanılan anahtarın oluşturulmasını tetiklemek için 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 konusuna bakın.
  2. İsterseniz geliştirici uygulamasını silin. Şifreleme anahtarı oluşturulduktan sonra bu anahtarı saklamanız gerekmez.

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

Mesaj işlemcilerinde ş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şlemci 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 okunabildiğinden emin olun:
    chown apigee:apigee /opt/apigee/customer/application/kekstore.p12
  3. Aşağıdaki özellikleri /opt/apigee/customer/application/message-processor.properties öğesine ekleyin. Dosya yoksa oluşturun. Ayrıca bkz. Mülk dosyası referansı.
    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 öğesinin, KEYSTORE_PASSWORD ile aynı olabileceğini unutmayın.

  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ş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 yüklü mesaj işlemcileriniz varsa her bir mesaj işlemci düğümünde 1-4 arasındaki adımları tekrarlayın.

Özet

Artık oluşturacağınız tüm geliştirici uygulamalarının kimlik bilgileri gizli anahtarı, Cassandra veritabanında kullanımda değilken şifrelenecektir.

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

Alternatif olarak, ortam değişkenlerini kullanarak aşağıdaki mesaj işlemcisi 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=

İ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şlemcisi ve yönetim sunucusu düğümlerindeki yapılandırma dosyalarından şu yapılandırma özelliklerini çıkarabilirsiniz:

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

Özellik dosyası referansı

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

Özellik Varsayılan Açıklama
conf_keymanagement_kmscred.encryption.enabled false Anahtar şifrelemenin etkinleştirilmesi 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 değerine ayarlayın.
conf_keymanagement_kmscred.encryption.keystore.path Yok Mesaj işlemcisi veya yönetim sunucusu düğümündeki KEK anahtar deposunun yolunu sağlayın. Bkz. 2. Adım: Yönetim sunucusunu yapılandırın ve 3. Adım: Mesaj işlemcilerini yapılandırın.
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 konusuna da bakın.
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. Yapılandırma özellikleri için ortam değişkenlerini kullanma konusuna da bakın.