Delen via


Zelfstudie: Op identiteit gebaseerde verbindingen gebruiken in plaats van geheimen met triggers en bindingen

In deze zelfstudie leert u hoe u Azure Functions configureert om verbinding te maken met Azure Service Bus-wachtrijen met behulp van beheerde identiteiten, in plaats van geheimen die zijn opgeslagen in de instellingen van de functie-app. De zelfstudie is een voortzetting van de zelfstudie Een functie-app maken zonder standaardopslaggeheimen in de definitiezelfstudie . Zie Een op identiteit gebaseerde verbinding configureren voor meer informatie over op identiteit gebaseerde verbindingen.

Hoewel de weergegeven procedures in het algemeen werken voor alle talen, ondersteunt deze zelfstudie momenteel C#-klassenbibliotheekfuncties in Windows.

In deze zelfstudie leert u het volgende:

  • Maak een Service Bus-naamruimte en -wachtrij.
  • Configureer uw functie-app met een beheerde identiteit.
  • Maak een roltoewijzing die die identiteit machtigt om te lezen uit de Service Bus-wachtrij.
  • Een functie-app maken en implementeren met een Service Bus-trigger.
  • Controleer uw op identiteit gebaseerde verbinding met Service Bus.

Vereiste

Voltooi de vorige zelfstudie: Een functie-app maken met op identiteit gebaseerde verbindingen.

Een Service Bus-naamruimte en -wachtrij maken

  1. Kies in Azure Portal een resource maken (+).

  2. Zoek en selecteer Service Bus op de pagina Een resource maken en selecteer deze en selecteer vervolgens Maken.

  3. Gebruik op de pagina Basisinformatie de volgende tabel om de instellingen voor de Service Bus-naamruimte te configureren. Gebruik de standaardwaarden voor de resterende opties.

    Optie Voorgestelde waarde Beschrijving
    Abonnement Uw abonnement Het abonnement waarmee deze nieuwe resources zijn gemaakt.
    Resourcegroep myResourceGroup De resourcegroep die u hebt gemaakt met uw functie-app.
    Naam van naamruimte Wereldwijd unieke naam De naamruimte van uw exemplaar waaruit u de functie wilt activeren. Omdat de naamruimte openbaar toegankelijk is, moet u een naam gebruiken die wereldwijd uniek is in Azure. De naam moet ook tussen de 6 en 50 tekens lang zijn, alleen alfanumerieke tekens en streepjes bevatten en mag niet beginnen met een getal.
    Location myFunctionRegion De regio waar u uw functie-app hebt gemaakt.
    Prijscategorie Basis De Basic Service Bus-laag.
  4. Selecteer Controleren + maken. Nadat de validatie is voltooid, selecteert u Maken.

  5. Nadat de implementatie is voltooid, selecteert u Ga naar de resource.

  6. Selecteer + Wachtrij in uw nieuwe Service Bus-naamruimte om een wachtrij toe te voegen.

  7. Voer myinputqueue in als de naam van de nieuwe wachtrij en selecteer Maken.

Nu u een wachtrij hebt, kunt u een roltoewijzing toevoegen aan de beheerde identiteit van uw functie-app.

Uw Service Bus-trigger configureren met een beheerde identiteit

Als u Service Bus-triggers wilt gebruiken met op identiteit gebaseerde verbindingen, moet u de roltoewijzing Azure Service Bus-gegevensontvanger toevoegen aan de beheerde identiteit in uw functie-app. Deze rol is vereist wanneer u beheerde identiteiten gebruikt om uw Service Bus-naamruimte te activeren. U kunt ook uw eigen account toevoegen aan deze rol, zodat u tijdens lokale tests verbinding kunt maken met de Service Bus-naamruimte.

Notitie

Rolvereisten voor het gebruik van op identiteit gebaseerde verbindingen variƫren, afhankelijk van de service en hoe u er verbinding mee maakt. De behoeften variƫren per trigger, invoerbindingen en uitvoerbindingen. Zie de trigger- en bindingsdocumentatie voor de service voor meer informatie over specifieke rolvereisten.

  1. Selecteer toegangsbeheer (IAM) in uw Service Bus-naamruimte die u hebt gemaakt. Op deze pagina kunt u bekijken en configureren wie toegang heeft tot de resource.

  2. Selecteer + Toevoegen en selecteer Roltoewijzing toevoegen.

  3. Zoek naar Azure Service Bus-gegevensontvanger, selecteer deze en selecteer vervolgens Volgende.

  4. Kies op het tabblad Leden onder Toegang toewijzen aan beheerde identiteit

  5. Selecteer Leden selecteren om het deelvenster Beheerde identiteiten selecteren te openen.

  6. Controleer of het abonnement het abonnement is waarin u de resources eerder hebt gemaakt.

  7. Kies in de beheerde identiteitskiezer de functie-app in de categorie Door het systeem toegewezen beheerde identiteit. Het label Functie-app heeft mogelijk een getal tussen haakjes ernaast, waarmee het aantal apps in het abonnement wordt aangegeven met door het systeem toegewezen identiteiten.

  8. Uw app moet worden weergegeven in een lijst onder de invoervelden. Als u dit niet ziet, kunt u het selectievakje Selecteren gebruiken om de resultaten te filteren met de naam van uw app.

  9. Selecteer uw toepassing. Deze moet omlaag gaan naar de sectie Geselecteerde leden . Selecteer Selecteren.

  10. Selecteer Controleren en toewijzen in het scherm Roltoewijzing toevoegen. Controleer de configuratie en selecteer Beoordelen en toewijzen.

U hebt uw functie-app toegang verleend tot de Service Bus-naamruimte met behulp van beheerde identiteiten.

Verbinding maken met Service Bus in uw functie-app

  1. Zoek in de portal naar de functie-app die u in de vorige zelfstudie hebt gemaakt of blader ernaar op de pagina Functie-app .

  2. Vouw in uw functie-app Instellingen uit en selecteer vervolgens Omgevingsvariabelen.

  3. Selecteer + Toevoegen om een instelling te maken op het tabblad App-instellingen. Gebruik de informatie in de volgende tabel om de naam en waarde voor de nieuwe instelling in te voeren:

    Naam Weergegeven als Beschrijving
    ServiceBusConnection__fullyQualifiedNamespace <>SERVICE_BUS_NAMESPACE.servicebus.windows.net Met deze instelling wordt uw functie-app verbonden met Service Bus met behulp van een op identiteit gebaseerde verbinding in plaats van geheimen.
  4. Selecteer Toepassen en selecteer Vervolgens Toepassen en Bevestigen om uw wijzigingen op te slaan en de app-functie opnieuw op te starten.

Notitie

Wanneer u Azure-app Configuratie of Key Vault gebruikt om instellingen voor managed identity-verbindingen te bieden, moet het instellen van namen een geldig sleutelscheidingsteken gebruiken, zoals : of/, in plaats van de __ naam om ervoor te zorgen dat namen correct worden omgezet.

Bijvoorbeeld: ServiceBusConnection:fullyQualifiedNamespace.

Nu u de functie-app hebt voorbereid om verbinding te maken met de Service Bus-naamruimte met behulp van een beheerde identiteit, kunt u een nieuwe functie toevoegen die gebruikmaakt van een Service Bus-trigger voor uw lokale project.

Een door Service Bus geactiveerde functie toevoegen

  1. Voer de func init opdracht als volgt uit om een functions-project te maken in een map met de naam LocalFunctionProj met de opgegeven runtime:

    func init LocalFunctionProj --dotnet
    
  2. Navigeer naar de projectmap:

    cd LocalFunctionProj
    
  3. Voer in de hoofdprojectmap de volgende opdracht uit:

    dotnet add package Microsoft.Azure.WebJobs.Extensions.ServiceBus --version 5.2.0
    

    Met deze opdracht wordt de standaardversie van het Service Bus-extensiepakket vervangen door een versie die beheerde identiteiten ondersteunt.

  4. Voer de volgende opdracht uit om een door Service Bus geactiveerde functie toe te voegen aan het project:

    func new --name ServiceBusTrigger --template ServiceBusQueueTrigger 
    

    Met deze opdracht wordt de code voor een nieuwe Service Bus-trigger en een verwijzing naar het extensiepakket toegevoegd. U moet een verbindingsinstelling voor de Service Bus-naamruimte toevoegen voor deze trigger.

  5. Open het nieuwe ServiceBusTrigger.cs projectbestand en vervang de ServiceBusTrigger klasse door de volgende code:

    public static class ServiceBusTrigger
    {
        [FunctionName("ServiceBusTrigger")]
        public static void Run([ServiceBusTrigger("myinputqueue", 
            Connection = "ServiceBusConnection")]string myQueueItem, ILogger log)
        {
            log.LogInformation($"C# ServiceBus queue trigger function processed message: {myQueueItem}");
        }
    }
    

    In dit codevoorbeeld wordt de naam van de wachtrij bijgewerkt myinputqueue. Dit is dezelfde naam als de wachtrij die u eerder hebt gemaakt. Ook wordt de naam van de Service Bus-verbinding ingesteld op ServiceBusConnection. Deze naam is de Service Bus-naamruimte die wordt gebruikt door de op identiteit gebaseerde verbinding ServiceBusConnection__fullyQualifiedNamespace die u in de portal hebt geconfigureerd.

Notitie

Als u uw functies nu probeert uit te voeren met behulp van func start, krijgt u een foutmelding. Dit komt doordat u geen lokaal op identiteit gebaseerde verbinding hebt gedefinieerd. Als u de functie lokaal wilt uitvoeren, stelt u de app-instelling ServiceBusConnection__fullyQualifiedNamespace in local.settings.json zoals u hebt gedaan in [de vorige sectie](#connect-naar-de service-bus-in-your-function-app). Daarnaast moet u de rol toewijzen aan uw ontwikkelaarsidentiteit. Zie lokale ontwikkeling met op identiteit gebaseerde verbindingen voor meer informatie.

Notitie

Wanneer u Azure-app Configuratie of Key Vault gebruikt om instellingen voor beheerde identiteitverbindingen te bieden, moeten instellingsnamen een geldig sleutelscheidingsteken gebruiken, zoals : of / in plaats van de __ sleutelkluis om ervoor te zorgen dat namen correct worden omgezet.

Bijvoorbeeld: ServiceBusConnection:fullyQualifiedNamespace.

Het bijgewerkte project publiceren

  1. Voer de volgende opdracht uit om lokaal de bestanden te genereren die nodig zijn voor het implementatiepakket:

    dotnet publish --configuration Release
    
  2. Blader naar de \bin\Release\netcoreapp3.1\publish submap en maak een .zip bestand op basis van de inhoud.

  3. Publiceer het .zip-bestand door de volgende opdracht uit te voeren, de FUNCTION_APP_NAMEen RESOURCE_GROUP_NAMEparameters te vervangen, indien PATH_TO_ZIP van toepassing:

    az functionapp deploy -n FUNCTION_APP_NAME -g RESOURCE_GROUP_NAME --src-path PATH_TO_ZIP
    

Nu u de functie-app hebt bijgewerkt met de nieuwe trigger, kunt u controleren of deze werkt met behulp van de identiteit.

Uw wijzigingen valideren

  1. Zoek Application Insights en selecteer Application Insights onder Services in de portal.

  2. Blader of zoek in Application Insights naar uw benoemde exemplaar.

  3. Selecteer in uw exemplaar Live Metrics onder Onderzoeken.

  4. Houd het vorige tabblad geopend en open Azure Portal op een nieuw tabblad. Ga op het nieuwe tabblad naar uw Service Bus-naamruimte en selecteer Wachtrijen in het linkermenu.

  5. Selecteer uw wachtrij met de naam myinputqueue.

  6. Selecteer Service Bus Explorer in het linkermenu.

  7. Een testbericht verzenden.

  8. Selecteer het geopende tabblad Live Metrics en bekijk de uitvoering van de Service Bus-wachtrij.

Gefeliciteerd U hebt uw Service Bus-wachtrijtrigger ingesteld met een beheerde identiteit.

Resources opschonen

In de voorgaande stappen hebt u Azure-resources in een resourcegroep gemaakt. Als u deze resources in de toekomst waarschijnlijk niet nodig hebt, kunt u ze verwijderen door de resourcegroep te verwijderen.

Selecteer Resourcegroepen in het menu of op de beginpagina van de Azure-portal. Selecteer myResourceGroup op de pagina Resourcegroepen.

Controleer op de pagina myResourceGroup of de weergegeven resources de resources zijn die u wilt verwijderen.

Selecteer Resourcegroep verwijderen, typ myResourceGroup in het tekstvak om dit te bevestigen en selecteer Verwijderen.

Volgende stappen

In deze zelfstudie hebt u een functie-app gemaakt met op identiteit gebaseerde verbindingen.

Ga naar het volgende artikel voor meer informatie over het beheren van identiteiten.