Megosztás a következőn keresztül:


Az Azure Spring Apps Csatlakozás Key Vaultba felügyelt identitások használatával

Feljegyzés

Az Azure Spring Apps az Azure Spring Cloud szolgáltatás új neve. Bár a szolgáltatásnak új neve van, bizonyos helyeken a régi nevet fogja látni egy darabig, miközben az eszközök, például képernyőképek, videók és diagramok frissítésével dolgozunk.

Ez a cikk a következőre vonatkozik: ✔️ Java ❌ C#

Ez a cikk bemutatja, hogyan hozhat létre rendszer által hozzárendelt vagy felhasználó által hozzárendelt felügyelt identitást az Azure Spring Appsben üzembe helyezett alkalmazásokhoz, és hogyan érheti el az Azure Key Vaultot.

Az Azure Key Vault segítségével biztonságosan tárolhatja és szigorúan szabályozhatja az alkalmazás jogkivonataihoz, jelszavaihoz, tanúsítványaihoz, API-kulcsaihoz és egyéb titkos kulcsaihoz való hozzáférést. Létrehozhat egy felügyelt identitást a Microsoft Entra-azonosítóban, és hitelesítést végezhet a Microsoft Entra-hitelesítést támogató bármely szolgáltatásban, beleértve a Key Vaultot is, anélkül, hogy meg kellene jelenítenie a hitelesítő adatokat a kódban.

Az alábbi videó bemutatja, hogyan kezelheti a titkos kulcsokat az Azure Key Vault használatával.


Előfeltételek

  • Azure-előfizetés. Ha nem rendelkezik előfizetéssel, a kezdés előtt hozzon létre egy ingyenes fiókot .
  • Ha első alkalommal helyez üzembe Azure Spring Apps Enterprise-csomagpéldányt a célelőfizetésben, tekintse meg a Nagyvállalati csomag Követelményei szakaszát az Azure Marketplace-en.
  • Azure CLI, 2.55.0-s vagy újabb verzió.
  • Azure-előfizetés. Ha nem rendelkezik előfizetéssel, a kezdés előtt hozzon létre egy ingyenes fiókot .
  • Azure CLI, 2.55.0-s vagy újabb verzió.

Adja meg az egyes erőforrások nevét

Hozzon létre változókat az erőforrásnevek tárolásához az alábbi parancsokkal. Mindenképpen cserélje le a helyőrzőket a saját értékeire.

export LOCATION=<location>
export RESOURCE_GROUP=myresourcegroup
export SPRING_APPS=myasa
export APP=springapp-system
export KEY_VAULT=<your-keyvault-name>

Erőforráscsoport létrehozása

Az erőforráscsoport olyan logikai tároló, amelybe a rendszer üzembe helyezi és kezeli az Azure-erőforrásokat. Hozzon létre egy erőforráscsoportot, amely tartalmazza a Key Vaultot és a Spring Cloudot is az az group create paranccsal, ahogyan az az alábbi példában látható:

az group create --name ${RESOURCE_GROUP} --location ${LOCATION}

A Key Vault beállítása

Key Vault létrehozásához használja az az keyvault create parancsot az alábbi példában látható módon:

Fontos

Minden Key Vaultnak egyedi névvel kell rendelkeznie.

az keyvault create \
    --resource-group ${RESOURCE_GROUP} \
    --name ${KEY_VAULT}

Az alábbi paranccsal jelenítse meg az alkalmazás URL-címét, majd jegyezze fel a visszaadott URL-címet, amely formátuma https://${KEY_VAULT}.vault.azure.net. Használja ezt az értéket a következő lépésben.

az keyvault show \
    --resource-group ${RESOURCE_GROUP} \
    --name ${KEY_VAULT} \
    --query properties.vaultUri --output tsv

Most már elhelyezhet egy titkos kulcsot a Key Vaultban az az keyvault secret set paranccsal, ahogyan az az alábbi példában látható:

az keyvault secret set \
    --vault-name ${KEY_VAULT} \
    --name "connectionString" \
    --value "jdbc:sqlserver://SERVER.database.windows.net:1433;database=DATABASE;"

Azure Spring Apps-szolgáltatás és -alkalmazás létrehozása

Az összes megfelelő bővítmény telepítése után az alábbi paranccsal hozzon létre egy Azure Spring Apps-példányt:

az extension add --upgrade --name spring
az spring create \
    --resource-group ${RESOURCE_GROUP} \
    --sku Enterprise \
    --name ${SPRING_APPS}

Az alábbi példa egy rendszer által hozzárendelt felügyelt identitással hozza létre az alkalmazást a --system-assigned paraméter kérésének megfelelően:

az spring app create \
    --resource-group ${RESOURCE_GROUP} \
    --service ${SPRING_APPS} \
    --name ${APP} \
    --assign-endpoint true \
    --system-assigned
export MANAGED_IDENTITY_PRINCIPAL_ID=$(az spring app show \
    --resource-group ${RESOURCE_GROUP} \
    --service ${SPRING_APPS} \
    --name ${APP} \
    --query identity.principalId --output tsv)
az extension add --upgrade --name spring
az spring create \
    --resource-group ${RESOURCE_GROUP} \
    --name ${SPRING_APPS}

Az alábbi példa egy, a paraméter által --system-assigned kért, rendszer által hozzárendelt felügyelt identitással rendelkező springapp alkalmazást hoz létre.

az spring app create \
    --resource-group ${RESOURCE_GROUP} \
    --service ${SPRING_APPS} \
    --name ${APP} \
    --assign-endpoint true \
    --runtime-version Java_17 \
    --system-assigned
export MANAGED_IDENTITY_PRINCIPAL_ID=$(az spring app show \
    --resource-group ${RESOURCE_GROUP} \
    --service ${SPRING_APPS} \
    --name ${APP} \
    --query identity.principalId --output tsv)

Az alkalmazás hozzáférésének biztosítása a Key Vaulthoz

Az alábbi paranccsal biztosítson megfelelő hozzáférést a Key Vaultban az alkalmazáshoz:

az keyvault set-policy \
    --name ${KEY_VAULT} \
    --object-id ${MANAGED_IDENTITY_PRINCIPAL_ID} \
    --secret-permissions set get list

Feljegyzés

A rendszer által hozzárendelt felügyelt identitások esetében a rendszer által hozzárendelt felügyelt identitás az keyvault delete-policy --name ${KEY_VAULT} --object-id ${MANAGED_IDENTITY_PRINCIPAL_ID} letiltása után távolítsa el az alkalmazás hozzáférését.

Spring Boot-mintaalkalmazás létrehozása a Spring Boot starter használatával

Ez az alkalmazás hozzáfér az Azure Key Vault titkos kulcsaihoz. Használja az Azure Key Vault titkos kulcstartójának Spring boot starterét. Az Azure Key Vault a Spring PropertySource példányaként lesz hozzáadva. Az Azure Key Vaultban tárolt titkos kulcsok kényelmesen elérhetők és használhatók, mint bármely külső konfigurációs tulajdonság, például a fájlok tulajdonságai.

  1. Az alábbi paranccsal hozzon létre egy mintaprojektet start.spring.io az Azure Key Vault Spring Starter használatával.

    curl https://start.spring.io/starter.tgz -d dependencies=web,azure-keyvault -d baseDir=springapp -d bootVersion=3.2.1 -d javaVersion=17 -d type=maven-project | tar -xzvf -
    
  2. Adja meg a Key Vaultot az alkalmazásban.

    cd springapp
    vim src/main/resources/application.properties
    
  3. Ha felügyelt identitást szeretne használni az Azure Spring Appsben üzembe helyezett alkalmazásokhoz, adja hozzá az alábbi tartalommal rendelkező tulajdonságokat az src/main/resources/application.properties fájlhoz .

    spring.cloud.azure.keyvault.secret.property-sources[0].endpoint=<your-keyvault-url>
    spring.cloud.azure.keyvault.secret.property-sources[0].credential.managed-identity-enabled=true
    

    Feljegyzés

    A key vault URL-címét hozzá kell adnia az application.properties fájlhoz a korábban bemutatott módon. Ellenkező esetben előfordulhat, hogy a kulcstartó URL-címe nem lesz rögzítve futásidőben.

  4. Frissítse az src/main/java/com/example/demo/DemoApplication.java az alábbi kódpéldával. Ez a kód lekéri a kapcsolati sztring a Key Vaultból.

    package com.example.demo;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.boot.CommandLineRunner;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    @SpringBootApplication
    @RestController
    public class DemoApplication implements CommandLineRunner {
    
        @Value("${connectionString}")
        private String connectionString;
    
        public static void main(String[] args) {
            SpringApplication.run(DemoApplication.class, args);
        }
    
        @GetMapping("get")
        public String get() {
            return connectionString;
        }
    
        public void run(String... args) throws Exception {
            System.out.println(String.format("\nConnection String stored in Azure Key Vault:\n%s\n",connectionString));
        }
    }
    

    Ha megnyitja a pom.xml fájlt, láthatja a spring-cloud-azure-starter-keyvault függőséget az alábbi példában látható módon:

    <dependency>
        <groupId>com.azure.spring</groupId>
        <artifactId>spring-cloud-azure-starter-keyvault</artifactId>
    </dependency>
    
  1. Az alábbi paranccsal helyezze üzembe az alkalmazást az Azure Spring Appsben:

    az spring app deploy \
        --resource-group ${RESOURCE_GROUP} \
        --service ${SPRING_APPS} \
        --name ${APP} \
        --source-path
    
  1. Az alábbi paranccsal helyezze üzembe az alkalmazást az Azure Spring Appsben:

    az spring app deploy \
        --resource-group ${RESOURCE_GROUP} \
        --service ${SPRING_APPS} \
        --name ${APP} \
        --source-path \
        --build-env BP_JVM_VERSION=17
    
  1. Az alkalmazás teszteléséhez az alábbi paranccsal érheti el a nyilvános végpontot vagy a tesztvégpontot:

    curl https://${SPRING_APPS}-${APP}.azuremicroservices.io/get
    

    A válasz törzse a következő üzenetet adja vissza: jdbc:sqlserver://SERVER.database.windows.net:1433;database=DATABASE;.

Az erőforrások eltávolítása

Az alábbi paranccsal törölheti a teljes erőforráscsoportot, beleértve az újonnan létrehozott szolgáltatáspéldányt is:

az group delete --name ${RESOURCE_GROUP} --yes

Következő lépések