Öğretici: Java Spring Key Vault başvurularını kullanma

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

Uygulama Yapılandırması, hizmetlerde depolanan değerlere başvurulan anahtarlar oluşturarak hizmetleri birlikte Key Vault. Uygulama Yapılandırması bu tür anahtarlar oluşturduğunda, değerlerin kendileri Key Vault değerlerin URL'lerini depolar.

Uygulama Yapılandırma'da depolanan diğer anahtarlar için olduğu Key Vault uygulama yapılandırma başvurularını almak için uygulama yapılandırma istemci sağlayıcısını kullanır. Bu durumda, Uygulama Yapılandırması'da depolanan değerler, uygulama yapılandırmasında yer alan değerlere Key Vault. Bu değerler Key Vault kimlik bilgileri değildir. İstemci sağlayıcısı anahtarları başvurular olarak Key Vault, değerlerini almak için Key Vault kullanır.

Hem Uygulama Yapılandırması hem de uygulama yapılandırması için doğru kimlik doğrulama Key Vault. İki hizmet doğrudan iletişim kurmaz.

Bu öğreticide, kodunuzda Key Vault nasıl uygulanıyor? Hızlı başlangıçlarda tanıtan web uygulaması üzerinde derlemeler hazırlar. Devam etmek için önce Uygulama Yapılandırması ile Java Spring uygulaması oluşturma işlemini tamamlar.

Bu öğreticide yer alan adımları yapmak için herhangi bir kod düzenleyicisini kullanabilirsiniz. Örneğin Visual Studio Code, macOS ve Linux işletim sistemleri için kullanılabilen platformlar arası Windows düzenleyicidir.

Bu öğreticide şunların nasıl yapıldığını öğreneceksiniz:

  • Key Vault'da depolanan bir değere başvuran bir Uygulama Yapılandırma anahtarı Key Vault.
  • Java Spring uygulamasından bu anahtarın değerine erişin.

Önkoşullar

Kasa oluşturma

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

    Kaynak oluştur seçeneğinin ekran görüntüsü Azure portal.

  2. Arama kutusuna Key Vault yazın.

  3. Sonuçlar listesinden sol tarafta Anahtar kasaları'ı seçin.

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

  5. Anahtar kasası oluşturma'nın sağ tarafından aşağıdaki bilgileri sağlar:

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

  7. Oluştur’u seçin.

Bu noktada, azure hesabınız bu yeni kasaya erişme yetkisine sahip olan tek hesaptır.

Anahtar kasanızı gösteren ekran görüntüsü.

Key Vault’a gizli dizi ekleme

Kasaya gizli anahtar eklemek için yalnızca birkaç ek adıma ihtiyacınız vardır. Bu durumda, veri alımını test etmek için kullanabileceğiniz Key Vault ekleyin. İleti İleti olarak adlandırılan iletide"Hello from Key Vault" değerini depolarsınız.

  1. Yeni özellikler Key Vault Gizli Diziler'i seçin.
  2. Oluştur/İçeri Aktar'ı seçin.
  3. Gizli liste oluştur bölmesine aşağıdaki değerleri girin:
    • Upload seçenekleri: El ile girin.
    • Ad: İleti girin.
    • Değer: girişten Hello Key Vault.
  4. Diğer Gizli bilgi oluşturma özelliklerini varsayılan değerleriyle bırakın.
  5. Oluştur’u seçin.

Uygulama Yapılandırmasına Key Vault başvuru ekleme

  1. Azure Portal oturum açın. Tüm kaynaklar'ı seçin ve ardından hızlı başlangıçta oluşturduğunuz Uygulama Yapılandırma mağazası örneğini seçin.

  2. Yapılandırma Gezgini'ni seçin.

  3. + Anahtar kasası başvurusu > oluştur'ı seçin 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ı gizli adı seçin.

Bağlan Key Vault

  1. Bu öğreticide, kimlik doğrulaması için bir hizmet sorumlusu kullanarak Key Vault. Bu hizmet sorumlularını 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 --sdk-auth
    

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

    {
    "clientId": "7da18cae-779c-41fc-992e-0527854c6583",
    "clientSecret": "b421b443-1669-4cd7-b5b1-394d5c945002",
    "subscriptionId": "443e30da-feca-47c4-b68f-1636b75e16b3",
    "tenantId": "35ad10f1-7799-4766-9acf-f2d946161b77",
    "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 sorumlusuna anahtar kasanıza erişme izni 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 ve 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" --assignee-object-id <objectId-of-your-service-principal> --resource-group <your-resource-group>
    
  4. , AZURE_CLIENT_SECRET ve AZURE_CLIENT_ID ortam değişkenlerini AZURE_TENANT_ID. Önceki adımlarda görüntülenen hizmet sorumlusu değerlerini kullanın. Komut satırına aşağıdaki komutları çalıştırın ve değişikliğin etkili olmasına izin vermek için komut istemini yeniden başlatın:

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

    Aşağıdaki komutu Windows PowerShell ç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 uygulama içinde kullanılır. Uygulama yapılandırma hizmetine gerek kalmadan Key Vault kimlik bilgilerini kullanarak doğrudan kimlik doğrulaması. Bu Key Vault, anahtarları paylaşmadan veya açığa çıkarmadan hem uygulamanız hem de Uygulama Yapılandırma hizmetiniz için kimlik doğrulaması sağlar.

Kodlarınızı bir Key Vault güncelleştirin

  1. APP_CONFIGURATION_ENDPOINT adlı bir ortam değişkeni oluşturun. Değerini Uygulama Yapılandırma mağazanız uç noktası olarak ayarlayın. Uç noktayı, erişim anahtarları dikey penceresindeki Azure portal. Değişikliğin etkili olmasına izin vermek için komut istemini yeniden başlatın.

  2. resources klasöründe bootstrap.properties'i açın. Dosya değerini kullanmak için bu APP_CONFIGURATION_ENDPOINT güncelleştirin. Bu dosyada bir bağlantı dizesine yapılan tüm başvuruları kaldırın.

    spring.cloud.azure.appconfiguration.stores[0].endpoint= ${APP_CONFIGURATION_ENDPOINT}
    
  3. MessageProperties.java'ya 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;
    }
    
  4. HelloController.java'ya açın. getMessage yöntemini, dosyadan alınan iletiyi içerecek Key Vault.

    @GetMapping
    public String getMessage() {
        return "Message: " + properties.getMessage() + "\nKey Vault message: " + properties.getKeyVaultMessage();
    }
    
  5. AzureCredentials.java adlı yeni bir dosya oluşturun ve aşağıdaki kodu ekleyin.

    package com.example.demo;
    
    import com.azure.core.credential.TokenCredential;
    import com.azure.identity.EnvironmentCredentialBuilder;
    import com.azure.spring.cloud.config.AppConfigurationCredentialProvider;
    import com.azure.spring.cloud.config.KeyVaultCredentialProvider;
    
    public class AzureCredentials implements AppConfigurationCredentialProvider, KeyVaultCredentialProvider{
    
        @Override
        public TokenCredential getKeyVaultCredential(String uri) {
            return getCredential();
        }
    
        @Override
        public TokenCredential getAppConfigCredential(String uri) {
            return getCredential();
        }
    
        private TokenCredential getCredential() {
            return new EnvironmentCredentialBuilder().build();
        }
    
    }
    
  6. AppConfiguration.java adlı yeni bir dosya oluşturun. Ve aşağıdaki kodu ekleyin.

    package com.example.demo;
    
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    
    @Configuration
    public class AppConfiguration {
    
        @Bean
        public AzureCredentials azureCredentials() {
            return new AzureCredentials();
        }
    }
    
  7. Kaynak meta-INF dizininize spring.factories adlı yeni bir dosya oluşturun ve aşağıdaki kodu ekleyin.

    org.springframework.cloud.bootstrap.BootstrapConfiguration=\
    com.example.demo.AppConfiguration
    
  8. Maven Spring Boot uygulamanızı derleme ve çalıştırma, örneğin:

    mvn clean package
    mvn spring-boot:run
    
  9. Uygulamanız çalıştır başladıktan sonra curl kullanarak uygulamanızı test sınayın, örneğin:

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

    Uygulama Yapılandırma deposuna girdiğiniz iletiyi görüyorsunuz. Ayrıca, girişte girdiğiniz iletiyi Key Vault.

Kaynakları temizleme

Bu makalede oluşturulan kaynakları kullanmaya devam etmek istemiyorsanız, ücretlendirmemek 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 makaleye ait kaynakları tutmak istediğiniz diğer kaynakları içeren bir kaynak grubu içinde oluşturduysanız, kaynak grubunu silmek yerine her kaynağı ilgili bölmeden ayrı ayrı silin.

  1. Azure Portaloturum açın ve kaynak grupları' nı seçin.
  2. Ada göre filtrele kutusuna kaynak grubunuzun adını girin.
  3. Sonuç listesinde, bir genel bakışı görmek için 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'de depolanan bir değere başvuran bir Uygulama Yapılandırma anahtarı Key Vault. Java Spring uygulamanıza özellik bayraklarını kullanmayı öğrenmek için sonraki öğreticiye devam edin.