Kurz: Použití Key Vault odkazů v aplikaci Java Spring

V tomto kurzu se naučíte používat službu Azure App Configuration společně s Azure Key Vault. App Configuration a Key Vault jsou doplňkové služby, které se ve většině nasazení aplikací používají souběžně.

App Configuration vám pomůže používat služby společně vytvořením klíčů, které odkazují na hodnoty uložené v Key Vault. Když App Configuration takové klíče vytvoří, uloží identifikátory URI Key Vault hodnot, nikoli samotné hodnoty.

Vaše aplikace používá zprostředkovatele klienta App Configuration k načtení Key Vault odkazů stejně jako u jiných klíčů uložených v App Configuration. V tomto případě jsou hodnoty uložené v App Configuration identifikátory URI, které odkazují na hodnoty v Key Vault. Nejsou Key Vault hodnoty ani přihlašovací údaje. Vzhledem k tomu, že zprostředkovatel klienta rozpozná klíče jako Key Vault odkazy, použije k načtení jejich hodnot Key Vault.

Vaše aplikace zodpovídá za správné ověřování pro App Configuration i Key Vault. Tyto dvě služby nekomunikují přímo.

V tomto kurzu se dozvíte, jak do kódu implementovat Key Vault odkazy. Vychází z webové aplikace představené v rychlých startech. Než budete pokračovat, nejprve dokončete vytvoření aplikace Java Spring pomocí App Configuration.

Kroky v tomto kurzu můžete provést pomocí libovolného editoru kódu. Například Visual Studio Code je multiplatformní editor kódu, který je dostupný pro operační systémy Windows, macOS a Linux.

V tomto kurzu se naučíte:

  • Vytvořte klíč App Configuration, který odkazuje na hodnotu uloženou v Key Vault.
  • Přístup k hodnotě tohoto klíče z aplikace Java Spring

Požadavky

Vytvoření trezoru

  1. V levém horním rohu Azure Portal vyberte možnost Vytvořit prostředek:

    Snímek obrazovky ukazuje možnost Vytvořit prostředek v Azure Portal.

  2. Do vyhledávacího pole zadejte Key Vault.

  3. V seznamu výsledků vyberte na levé straně Trezory klíčů .

  4. V části Trezory klíčů vyberte Přidat.

  5. Na pravé straně příkazu Vytvořit trezor klíčů zadejte následující informace:

    • Vyberte Předplatné a zvolte předplatné.
    • V části Skupina prostředků vyberte Vytvořit novou a zadejte název skupiny prostředků.
    • V části Název trezoru klíčů se vyžaduje jedinečný název. Pro účely tohoto kurzu zadejte Contoso-vault2.
    • V rozevíracím seznamu Oblast zvolte umístění.
  6. U ostatních možností Vytvořit trezor klíčů ponechte výchozí hodnoty.

  7. Vyberte Vytvořit.

V tuto chvíli je váš účet Azure jediným účtem, který má oprávnění k přístupu k tomuto novému trezoru.

Snímek obrazovky znázorňující váš trezor klíčů

Přidání tajného klíče do služby Key Vault

Pokud chcete přidat tajný kód do trezoru, musíte provést jen několik dalších kroků. V takovém případě přidejte zprávu, kterou můžete použít k otestování Key Vault načtení. Zpráva má název Message (Zpráva) a uloží se do ní hodnota "Hello from Key Vault" (Ahoj z Key Vault).

  1. Na Key Vault stránkách vlastností vyberte Tajné kódy.
  2. Vyberte Vygenerovat/importovat.
  3. V podokně Vytvořit tajný kód zadejte následující hodnoty:
    • Možnosti nahrání: Zadejte Ručně.
    • Název: Zadejte Zprávu.
    • Hodnota: Zadejte Hello z Key Vault.
  4. U druhé možnosti Create a secret properties (Vytvořit tajný klíč) ponechte výchozí hodnoty.
  5. Vyberte Vytvořit.

Přidání Key Vault odkazu na App Configuration

  1. Přihlaste se k webu Azure Portal. Vyberte Všechny prostředky a pak vyberte instanci App Configuration úložiště, kterou jste vytvořili v tomto rychlém startu.

  2. Vyberte Průzkumník konfigurace.

  3. Vyberte + Vytvořit>odkaz na trezor klíčů a pak zadejte následující hodnoty:

    • Klíč: Vyberte /application/config.keyvaultmessage.
    • Popisek: Tuto hodnotu nechejte prázdnou.
    • Předplatné, skupina prostředků a trezor klíčů: Zadejte hodnoty odpovídající hodnotám trezoru klíčů, který jste vytvořili v předchozí části.
    • Tajný kód: Vyberte tajný kód s názvem Message , který jste vytvořili v předchozí části.

Připojení k Key Vault

  1. V tomto kurzu použijete instanční objekt pro ověřování k Key Vault. K vytvoření tohoto instančního objektu použijte příkaz Azure CLI az ad sp create-for-rbac :

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

    Tato operace vrátí řadu párů klíč/hodnota:

    {
    "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. Spuštěním následujícího příkazu uvolněte instančnímu objektu přístup k vašemu trezoru klíčů:

    az keyvault set-policy -n <your-unique-keyvault-name> --spn <clientId-of-your-service-principal> --secret-permissions delete get
    
  3. Spuštěním následujícího příkazu získejte id objektu a pak ho přidejte do App Configuration.

    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. Vytvořte proměnné prostředí AZURE_CLIENT_ID, AZURE_CLIENT_SECRET a AZURE_TENANT_ID. Použijte hodnoty instančního objektu, které se zobrazily v předchozích krocích. Na příkazovém řádku spusťte následující příkazy a restartujte příkazový řádek, aby se změna projevila:

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

    Pokud používáte Windows PowerShell, spusťte následující příkaz:

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

    Pokud používáte macOS nebo Linux, spusťte následující příkaz:

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

Poznámka

Tyto Key Vault přihlašovací údaje se používají jenom v rámci vaší aplikace. Vaše aplikace se ověřuje přímo u Key Vault pomocí těchto přihlašovacích údajů bez zapojení služby App Configuration. Key Vault poskytuje ověřování pro vaši aplikaci i App Configuration službu bez sdílení nebo zveřejnění klíčů.

Aktualizace kódu tak, aby používal odkaz na Key Vault

  1. Vytvořte proměnnou prostředí s názvem APP_CONFIGURATION_ENDPOINT. Nastavte jeho hodnotu na koncový bod úložiště App Configuration. Koncový bod najdete v okně Přístupové klíče v Azure Portal. Restartujte příkazový řádek, aby se změna projevila.

  2. Otevřete konfigurační soubor ve složce resources . Aktualizujte tento soubor tak, aby používal hodnotu APP_CONFIGURATION_ENDPOINT . Odeberte všechny odkazy na připojovací řetězec v tomto souboru.

spring:
    cloud:
        azure:
            appconfiguration:
                stores:
                    - endpoint: ${APP_CONFIGURATION_ENDPOINT}

Poznámka

K připojení k Key Vault můžete také použít globální konfigurace Spring Cloud Azure.

  1. Otevřete MessageProperties.java. Přidejte novou proměnnou s názvem keyVaultMessage:

    private String keyVaultMessage;
    
    public String getKeyVaultMessage() {
        return keyVaultMessage;
    }
    
    public void setKeyVaultMessage(String keyVaultMessage) {
        this.keyVaultMessage = keyVaultMessage;
    }
    
  2. Otevřete HelloController.java. Aktualizujte metodu getMessage tak, aby zahrnovala zprávu načtenou z Key Vault.

    @GetMapping
    public String getMessage() {
        return "Message: " + properties.getMessage() + "\nKey Vault message: " + properties.getKeyVaultMessage();
    }
    
  3. Sestavte aplikaci Spring Boot pomocí Mavenu a spusťte ji, například:

    mvn clean package
    mvn spring-boot:run
    
  4. Po spuštění aplikace použijte curl k otestování aplikace, například:

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

    Zobrazí se zpráva, kterou jste zadali v úložišti App Configuration. Zobrazí se také zpráva, kterou jste zadali v Key Vault.

Vyčištění prostředků

Pokud nechcete dál používat prostředky vytvořené v tomto článku, odstraňte skupinu prostředků, kterou jste tady vytvořili, abyste se vyhnuli poplatkům.

Důležité

Odstranění skupiny prostředků je nevratné. Skupina prostředků a všechny prostředky v ní se trvale odstraní. Ujistěte se, že omylem neodstraníte nesprávnou skupinu prostředků nebo prostředky. Pokud jste prostředky pro tento článek vytvořili ve skupině prostředků, která obsahuje další prostředky, které chcete zachovat, odstraňte jednotlivé prostředky z příslušného podokna a neodstraňujte skupinu prostředků.

  1. Přihlaste se k Azure Portal a vyberte Skupiny prostředků.
  2. Do pole Filtrovat podle názvu zadejte název skupiny prostředků.
  3. V seznamu výsledků vyberte název skupiny prostředků, abyste zobrazili přehled.
  4. Vyberte Odstranit skupinu prostředků.
  5. Zobrazí se výzva k potvrzení odstranění skupiny prostředků. Zadejte název skupiny prostředků, který chcete potvrdit, a vyberte Odstranit.

Po chvíli se skupina prostředků a všechny její prostředky odstraní.

Další kroky

V tomto kurzu jste vytvořili klíč App Configuration, který odkazuje na hodnotu uloženou v Key Vault. Další otázky najdete v referenční dokumentaci, která obsahuje všechny podrobnosti o tom, jak knihovna Spring Cloud Azure App Configuration funguje. Pokud chcete zjistit, jak používat příznaky funkcí v aplikaci Java Spring, pokračujte k dalšímu kurzu.