Aracılığıyla paylaş


Öğretici: Java Spring uygulamasında Key Vault referanslarını kullanma

Bu öğreticide Azure Uygulaması Yapılandırma hizmetini Azure Key Vault ile birlikte kullanmayı öğreneceksiniz. Uygulama Yapılandırması ve Key Vault, çoğu uygulama dağıtımında yan yana kullanılan tamamlayıcı hizmetlerdir.

Uygulama Yapılandırması, Key Vault'ta depolanan değerlere başvuran anahtarlar oluşturarak hizmetleri birlikte kullanmanıza yardımcı olur. Uygulama Yapılandırması bu tür anahtarlar oluşturduğunda, değerlerin kendileri yerine Key Vault değerlerinin URI'lerini depolar.

Uygulamanız, Uygulama Yapılandırma'da depolanan diğer tüm anahtarlar gibi Key Vault başvurularını almak için Uygulama Yapılandırma istemci sağlayıcısını kullanır. Bu durumda, Uygulama Yapılandırması'nda depolanan değerler, Key Vault'taki değerlere başvuran URI'lerdir. Bunlar Key Vault değerleri veya kimlik bilgileri değildir. İstemci sağlayıcısı anahtarları Key Vault başvurusu olarak tanıdığından, değerlerini almak için Key Vault'ı kullanır.

Uygulamanız hem Uygulama Yapılandırması hem de Key Vault'ta doğru kimlik doğrulaması yapmakla sorumludur. İki hizmet doğrudan iletişim kurmaz.

Bu öğreticide, kodunuzda Key Vault referanslarını nasıl uygulayabileceğiniz gösterilmektedir. Hızlı başlangıçta tanıtılan web uygulamasını temel alır. Devam etmeden önce önce Uygulama Yapılandırması ile Java Spring uygulaması oluşturma bölümünü tamamlayın.

Bu öğreticideki adımları gerçekleştirmek için herhangi bir kod düzenleyicisini kullanabilirsiniz. Örneğin Visual Studio Code, Windows, macOS ve Linux işletim sistemlerinde kullanılabilen platformlar arası bir kod düzenleyicisidir.

Bu öğreticide aşağıdakilerin nasıl yapılacağını öğreneceksiniz:

  • Key Vault'ta depolanan bir değere başvuran bir Uygulama Yapılandırması anahtarı oluşturun.
  • Bir Java Spring uygulamasından bu anahtarın değerine erişin.

Önkoşullar

Kasa oluştur

  1. Azure portalının sol üst köşesindeki Kaynak oluştur seçeneğini belirleyin:

    Azure portalında Kaynak oluştur seçeneğini gösteren ekran görüntüsü.

  2. Arama kutusuna Key Vault yazın.

  3. Sonuç listesinden Anahtar kasaları'nı seçin.

  4. Anahtar kasaları'nda Ekle'yi seçin.

  5. Anahtar kasası oluşturma bölümünde sağ tarafta aşağıdaki bilgileri sağlayın:

    • Abonelik'i seçerek bir abonelik seçin.
    • Kaynak Grubu'nda Yeni oluştur'u seçin ve bir kaynak grubu adı girin.
    • Anahtar kasası adı bölümünde benzersiz bir ad gereklidir. Bu öğretici için Contoso-vault2 girin.
    • Bölge açılan listesinde bir konum seçin.
  6. Diğer Key Vault oluştur seçeneklerini varsayılan değerleriyle bırakın.

  7. Oluştur'u belirleyin.

Bu noktada, Azure hesabınız bu yeni depoya erişme yetkisine sahip tek hesaptır.

Ekran görüntüsü anahtar kasanızı gösteriyor.

Key Vault’a bir gizli ekleyin

Kasaya gizli bilgi eklemek için sadece birkaç adım daha atmanız gerekir. Bu durumda, Key Vault geri alımını test etmek için kullanabileceğiniz bir ileti ekleyin. İletiye İleti adı verilir ve içinde "Key Vault'tan Merhaba" değerini depolarsınız.

  1. Key Vault özellikleri sayfalarından Sırlar'ı seçin.
  2. Oluştur/İçeri Aktar'ı seçin.
  3. Gizli dizi oluştur bölmesinde aşağıdaki değerleri girin:
    • Karşıya yükleme seçenekleri: Manuel'e girin.
    • Ad: İleti giriniz.
    • Değer: Key Vault'tan Merhaba yazın.
  4. Diğer Bir gizli oluştur özelliklerini varsayılan değerleriyle bırakın.
  5. Oluştur'u belirleyin.

Uygulama Yapılandırmasına Anahtar Kasası referansı ekleme

  1. Azure Portal’ında oturum açın. Tüm kaynaklar'ı seçin ve ardından hızlı başlangıç kılavuzunda oluşturduğunuz Uygulama Yapılandırması mağaza örneğini seçin.

  2. Yapılandırma Gezgini'ne tıklayın.

  3. + Oluştur>Anahtar Kasası Referansı, ve ardından aşağıdaki değerleri belirtin:

    • Anahtar: /application/config.keyvaultmessage öğesini seçin
    • Etiket: Bu değeri boş bırakın.
    • Abonelik, Kaynak grubu ve Anahtar kasası: Önceki bölümde oluşturduğunuz anahtar kasasındaki değerlere karşılık gelen değerleri girin.
    • Gizli: Önceki bölümde oluşturduğunuz İleti adlı gizliyi seçin.

Key Vault'a bağlanma

  1. Bu öğreticide, Key Vault'ta kimlik doğrulaması için bir hizmet ilkesi kullanacaksınız. Bu hizmet sorumlusunu oluşturmak için Azure CLI az ad sp create-for-rbac komutunu kullanın:

    az ad sp create-for-rbac -n "http://mySP" --role Contributor --scopes /subscriptions/{subscription-id} --sdk-auth
    

    Bu işlem bir dizi anahtar/değer çifti döndürür:

    {
    "clientId": "00001111-aaaa-2222-bbbb-3333cccc4444",
    "clientSecret": "aaaaaaaa-0b0b-1c1c-2d2d-333333333333",
    "subscriptionId": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e",
    "tenantId": "aaaabbbb-0000-cccc-1111-dddd2222eeee",
    "activeDirectoryEndpointUrl": "https://login.microsoftonline.com",
    "resourceManagerEndpointUrl": "https://management.azure.com/",
    "sqlManagementEndpointUrl": "https://management.core.windows.net:8443/",
    "galleryEndpointUrl": "https://gallery.azure.com/",
    "managementEndpointUrl": "https://management.core.windows.net/"
    }
    
  2. Hizmet sorumlusunun anahtar kasanıza erişmesine izin vermek için aşağıdaki komutu çalıştırın:

    az keyvault set-policy -n <your-unique-keyvault-name> --spn <clientId-of-your-service-principal> --secret-permissions delete get
    
  3. Object-id'nizi almak için aşağıdaki komutu çalıştırın, ardından onu Uygulama Yapılandırması'na ekleyin.

    az ad sp show --id <clientId-of-your-service-principal>
    az role assignment create --role "App Configuration Data Reader" --scope /subscriptions/<subscriptionId>/resourceGroups/<group-name> --assignee-principal-type --assignee-object-id <objectId-of-your-service-principal> --resource-group <your-resource-group>
    
  4. AZURE_CLIENT_ID, AZURE_CLIENT_SECRET ve AZURE_TENANT_ID ortam değişkenlerini oluşturun. Önceki adımlarda görüntülenen hizmet sorumlusu değerlerini kullanın. Değişikliğin etkili olması için komut satırında aşağıdaki komutları çalıştırın ve komut istemini yeniden başlatın:

    setx AZURE_CLIENT_ID "clientId"
    setx AZURE_CLIENT_SECRET "clientSecret"
    setx AZURE_TENANT_ID "tenantId"
    

    Windows PowerShell kullanıyorsanız aşağıdaki komutu çalıştırın:

    $Env:AZURE_CLIENT_ID = "clientId"
    $Env:AZURE_CLIENT_SECRET = "clientSecret"
    $Env:AZURE_TENANT_ID = "tenantId"
    

    macOS veya Linux kullanıyorsanız aşağıdaki komutu çalıştırın:

    export AZURE_CLIENT_ID ='clientId'
    export AZURE_CLIENT_SECRET ='clientSecret'
    export AZURE_TENANT_ID ='tenantId'
    

Not

Bu Key Vault kimlik bilgileri yalnızca uygulamanızda kullanılır. Uygulamanız, Uygulama Yapılandırması hizmetini dahil etmeden bu kimlik bilgilerini kullanarak doğrudan Key Vault ile kimlik doğrulaması yapar. Key Vault, anahtarları paylaşmadan veya kullanıma sunmadan hem uygulamanız hem de Uygulama Yapılandırması hizmetiniz için kimlik doğrulaması sağlar.

Kodunuzu Key Vault referansını kullanmaya yönelik güncelleyin

  1. APP_CONFIGURATION_ENDPOINT adlı bir ortam değişkeni oluşturun. Değerini Uygulama Yapılandırması deponuzun uç noktasına ayarlayın. Uç noktayı Azure portalındaki Erişim Anahtarları dikey penceresinde bulabilirsiniz. Değişikliğin etkili olması için komut istemini yeniden başlatın.

  2. Kaynaklar klasöründe yapılandırma dosyanızı açın. bu dosyayı APP_CONFIGURATION_ENDPOINT değerini kullanacak şekilde güncelleştirin. Bu dosyadaki bağlantı dizesi referanslarını kaldırın.

spring:
    config:
        import: azureAppConfiguration
    cloud:
        azure:
            appconfiguration:
                stores:
                    - endpoint: ${APP_CONFIGURATION_ENDPOINT}
  1. MessageProperties.java açın. keyVaultMessage adlı yeni bir değişken ekleyin:

    private String keyVaultMessage;
    
    public String getKeyVaultMessage() {
        return keyVaultMessage;
    }
    
    public void setKeyVaultMessage(String keyVaultMessage) {
        this.keyVaultMessage = keyVaultMessage;
    }
    
  2. HelloController.java açın. GetMessage yöntemini Key Vault'tan alınan iletiyi içerecek şekilde güncelleştirin.

    @GetMapping
    public String getMessage() {
        return "Message: " + properties.getMessage() + "\nKey Vault message: " + properties.getKeyVaultMessage();
    }
    
  3. Spring Boot uygulamanızı Maven ile derleyin ve çalıştırın, örneğin:

    mvn clean package
    mvn spring-boot:run
    
  4. Uygulamanız çalıştırıldıktan sonra curl kullanarak uygulamanızı test edin, örneğin:

    curl -X GET http://localhost:8080/
    

    Uygulama Yapılandırması mağazasına girdiğiniz iletiyi görürsünüz. Key Vault'a girdiğiniz iletiyi de görürsünüz.

Kaynakları temizleme

Bu makalede oluşturulan kaynakları kullanmaya devam etmek istemiyorsanız ücretlerden kaçınmak için burada oluşturduğunuz kaynak grubunu silin.

Önemli

Silinen kaynak grupları geri alınamaz. Kaynak grubu ve içindeki tüm kaynaklar kalıcı olarak silinir. Yanlış kaynak grubunu veya kaynakları yanlışlıkla silmediğinizden emin olun. Bu makalenin kaynaklarını, saklamak istediğiniz diğer kaynakları içeren bir kaynak grubu içinde oluşturduysanız, kaynak grubunu silmek yerine her kaynağı ilgili bölmeden tek tek silin.

  1. Azure portalında oturum açın ve Kaynak grupları'nı seçin.
  2. Ada göre filtrele kutusuna kaynak grubunuzun adını girin.
  3. Genel bir bakış görmek için sonuç listesinde kaynak grubu adını seçin.
  4. Kaynak grubunu sil'i seçin.
  5. Kaynak grubunun silinmesini onaylamanız istenir. Onaylamak için kaynak grubunuzun adını girin ve Sil'i seçin.

Birkaç dakika sonra kaynak grubu ve tüm kaynakları silinir.

Sonraki adımlar

Bu öğreticide, Key Vault'ta depolanan bir değere başvuran bir Uygulama Yapılandırması anahtarı oluşturdunuz. Daha fazla soru için başvuru belgelerine bakın, Spring Cloud Azure Uygulama Yapılandırma kitaplığının nasıl çalıştığıyla ilgili tüm ayrıntılara sahiptir. Java Spring uygulamanızda özellik bayraklarını kullanmayı öğrenmek için sonraki öğreticiye geçin.