0
votes

Comment définir un secret de coffre-fort clé à partir d'une application de fonction Azure dans le même groupe de ressources?

Je voudrais configurer une fonction d'azur, qui fonctionnerait toutes les 4h, récupérez une JWK à partir d'une URL (ce n'est pas celui que je montrent ci-dessous) et sauvegardez-le dans une voûte de clé comme un secret.

Quand J'essaie le code PowerShell à la ligne de commande, cela fonctionne simplement: P>

PS C:\> $x5c = (Invoke-WebRequest https://login.microsoftonline.com/common/discovery/v2.0/keys |
>> ConvertFrom-Json |
>> Select-Object -expand keys |
>> Where-Object -Property kid -Eq SsZsBNhZcF3Q9S4trpQBTByNRRI) |
>> Select-Object -expand x5c
PS C:\> $secretvalue = ConvertTo-SecureString $x5c -AsPlainText -Force
PS C:\> $secret = Set-AzKeyVaultSecret -VaultName my-keyvault -Name 'MyLittleSecret' -SecretValue $secretvalue


2 commentaires

Salut joie, merci pour votre réponse! J'ai besoin de quelques jours pour tester votre réponse très détaillée (déjà upéted)


Eh bien, bonne chance, tout problème n'hésitez pas à me faire savoir. ;-)


3 Réponses :


0
votes
Compress-Archive -Path * -DestinationPath Function1.zip

3 commentaires

Je suis confus par votre réponse: 1. Pourquoi dois-je poser ma sélection de code si je l'ai déjà entré dans le navigateur (s'il vous plaît voir ma capture d'écran) et cliquer sur "Enregistrer"? 2. Comment utiliser login-azaccount dans une fonction chronométrée, sans que je saisi le mot de passe?


Je pense que j'aurais dû être plus clair, je voulais que vous vérifiez que le contenu soit identique ou non. Vous pouvez le faire en téléchargeant le contenu et en comparant qu'avec le local. docs.microsoft. Com / fr-US / Azure / Azure-Fonctions / ...


Si vous utilisez l'identité gérée dans votre fonction Azure, vous n'avez même pas besoin de vous connecter manuellement à votre compte Azure.



3
votes

Azure PowerShell fonctionne-t-il dans une fonction?

Oui, cela fonctionnera.

faut-il d'abord un login-azaccompount?

Non, vous n'avez pas besoin de le faire.


Pour plus de détails, veuillez suivre les étapes ci-dessous.

1.LAquez-vous créé l'application de fonction avec les paramètres tels que ci-dessous.

 Entrez la description de l'image ici

2.Après création de l'application Fonction, accédez au Identité de l'application dans le portail, activez le système attribué au système comme ci-dessous.

Entrez la description de l'image ici

3.Navigate à Votre KeyVault dans le portail -> Stratégies d'accès -> Ajouter une stratégie d'accès -> Recherchez votre nom de fonction (le MSI a le même nom que votre fonction) et ajoutez-le avec Corrigez les autorisations secrètes.

 Entrez la description de l'image ici

4. Dans la fonction, pas besoin de vous connecter manuellement, il se connectera automatiquement avec le MSI, il suffit d'utiliser La commande ci-dessous, cela fonctionne bien sur mon côté. xxx

 Entrez la description de l'image ici

Vérifiez le keyvault: < / p>

 Entrez la description de l'image ici


4 commentaires

J'ai suivi votre suggestion et j'ai ajouté le MSI aux stratégies d'accès Keyvaul, avec les autorisations pour obtenir, liste, définir des secrets. Pour une raison quelconque lorsque je clique sur Fonction -> Code + Test -> Exécutez, les journaux ne représentent que "Connexion aux idées de l'application ..." et la sortie "202 acceptée", mais rien d'autre ne se produit et il n'y a pas de nouveau secret créé.


@AlexanderFarber Pourriez-vous essayer mon script complet, voir si $ secret.name sera écrit? Et il peut y avoir un certain retard, pourriez-vous vérifier le keyvalt plus tard? Ou s'il vous plaît créer une nouvelle application de fonction PowerShell pour essayer, activez la perspective de l'application, certains bugs dans la nouvelle interface utilisateur.


J'ai encore essayé aujourd'hui et ça a fonctionné. Merci pour le guide détaillé. Savez-vous s'il existe une commande AZ CLI pour la création de l'identité attribuée au système? Est-ce que c'est fait par AZ GestionnéApp ? Je demande parce que mon application de fonction doit être créée par un pipeline Azure


@AlexanderFarber Utilisez ce docs.microsoft.com/en-us/cli/azure/fonctionApp/...



1
votes

Une autre approche alternative consiste à l'obtenir de KeyVault à l'exécution et à la stocker dans la configuration, puis utilisez les valeurs de configuration dans le code. Reportez-vous: HTTPS: // DOCS. microsoft.com/en-us/azure/app-service/app-service-key-vault-ferferences

la configuration sera quelque chose comme ça USERNAMEKV: @ Microsoft.keyvault (Secreturi = https: //myvault.vault.azure.net/secrets/mysecret/ec96f02080254f109C51A1f14CDB1931) Passwordkv: @ Microsoft.KeyVault (Secreturi = https: //myvault.vault.azure.net/secrets/mysecret/ec96f02080254f109C51A1f14CDB1931)


0 commentaires