Fermer

juillet 7, 2022

Authentification de compte Azure à l’aide de Python3

Authentification de compte Azure à l’aide de Python3


Besoin d’authentification :

Pour communiquer avec les ressources Azure, nous devons procéder à l’authentification, supposons que vous disposiez d’une application qui surveille les ressources Azure. Pour récupérer les données des ressources Azure à partir du compte Azure, nous avons besoin d’une chaîne de connexion ou de secrets pour effectuer l’authentification Azure. De plus, tous ces secrets sont partagés avec le développeur de l’application qui intègre les secrets dans le code lui-même. Comme nous le savons tous, Python est l’un des langages de programmation les plus populaires en raison de sa syntaxe simplifiée et il offre également un excellent support pour l’écriture de scripts permettant d’interagir avec les ressources cloud.

Azure SDK est un kit de développement logiciel Azure pour Python3, qui permet aux développeurs Python d’écrire des logiciels qui utilisent les services Azure.

Le processus d’authentification Azure nécessite :

Étape 1. Créer un compte Azure

Étape 2. Obtenez un abonnement et un identifiant de locataire.

Étape 3. Enregistrez votre application

Étape 4. Créez un nouveau secret client dans l’application enregistrée et enregistrez l’ID de valeur.

Étape 5. Accordez l’autorisation du lecteur à l’application enregistrée.

Étape 6. Utilisez maintenant la valeur du secret client, l’abonnement, le locataire et l’ID client (application) dans le script Azure SDK pour récupérer les données de ressource Azure. (Ici, nous récupérons une liste de machines virtuelles Azure utilisant ces clés).

Diagramme de workflow pour authentifier votre compte Azure afin d’interagir avec les ressources Azure à l’aide du SDK Azure Python

Étape 1: Créer un compte Azure

Lien: https://www.acronis.com/en-sg/articles/create-microsoft-azure-account/

Étape 2: Obtenez un abonnement et un identifiant de locataire.

Pour obtenir votre abonnement Azure et l’ID de locataire de votre compte Azure, utilisez votre terminal local ou utilisez le terminal cloud shell azur dans le portail Azure.

Ouvrez votre portail Azure → Aller à l’abonnement → Copier et enregistrer votre identifiant d’abonnement → puis aller à Azure Active Directory → Copier et enregistrez votre identifiant de locataire pour une utilisation ultérieure.

OU

Ouvrez votre terminal Azure Cloud Shell et utilisez la commande ci-dessous pour obtenir votre abonnement de compte et votre identifiant de locataire.

> le spectacle de compte

Étape 3: Enregistrez votre application

vous devez disposer des autorisations suffisantes pour inscrire votre application dans votre Azure AD. Si vous avez un rôle d’utilisateur, vous devez vous assurer que les non-administrateurs peuvent enregistrer des applications. Vous pouvez demander un rôle de développeur d’applications.

Vous pouvez également vérifier votre accès en allant dans AbonnementJE SUISvoir mon accès.

Pour enregistrer votre application dans le portail Azure :

  1. Connectez-vous à votre portail Azure et accédez à Azure Active Directory

Dans Gérer, sélectionnez Enregistrement de l’application

2. Sélectionnez Inscription à l’applicationAjouter Nouvelle inscription.

3. Saisissez un nom pour l’application. (Azure-Intégration).

  1. Dans le Ajouter une URL de redirectionAjouter une plateformesélectionnez Internet et ajoutez l’URL de votre application (https://xyz.com) comme URL de connexion et Créer l’application → S’inscrire.

  1. À partir de l’aperçu de l’application enregistrée, copiez l’identifiant de l’application/du client et enregistrez-le n’importe où pour une utilisation ultérieure.

Étape 4: Créez un nouveau secret client dans l’application enregistrée et enregistrez l’ID de valeur.

Pour créer un secret client associé à votre application :

  1. Dans Azure, sous l’application que vous venez de créer, sélectionnez Certificats & Secrets.

2. En vertu de ces Certificats et secretsAjouter un nouveau secret client -> Donner une descriptionSélectionner

date d’expirationCopier la valeur ailleurs parce qu’il se cache parfois.

Étape 5 : Accordez l’autorisation du lecteur à l’application enregistrée.

Accordez l’autorisation de lecteur à votre application :

  1. Aller à Abonnements → et ouvrez le Abonnement que vous souhaitez Votre application (Surveillance Webapp) pour surveiller.
  2. Cliquer sur Abonnement → Sélectionner Contrôle d’accès (IAM)Ajouter une attribution de rôleAjouter un membre Sélectionnez votre application, ajoutez et enregistrez.

Étape 6 :

Récupérons maintenant le nombre de données de VM dans notre compte Azure à l’aide du SDK Azure avec clés.

ressources.py :

depuis azure.mgmt.compute importer ComputeManagementClient
depuis azure.common.credentials importer ServicePrincipalCredentials

importer le système d’exploitation
Subscription_Id = os.environ[“subscription_id”]
Tenant_Id = os.environ[“tenant_id”]
Client_Id = os.environ[“client_id”]
Secret = os.environ[“secret”]

identifiant = ServicePrincipalCredentials(
client_id=Client_Id,
secret=Secret,
locataire=Tenant_Id
)

compute_client = ComputeManagementClient(informations d’identification, Subscription_Id)

vm_list = compute_client.virtual_machines.list(‘azure-poc’)
# vm_list = compute_client.virtual_machines.list(‘resource_groupname’)
je= 0
pour VM dans vm_list :
tableau = vm.id.split(« / »)
groupe_ressources = tableau[4]
nom_vm = tableau[-1]
statuses = compute_client.virtual_machines.instance_view(resource_group, vm_name).statuses
statut = len(status) >= 2 et statuts[1]

si statut et status.code == ‘PowerState/running’ :
impression(vm_name)

Production:

Rotation des informations d’identification des secrets client :

Il sera nécessaire de mettre à jour les identifiants d’authentification de l’application à l’aide du portail Azure, une fois le secret client expiré (la la date d’expiration maximale disponible dans Azure est de 2 ans). Aller à Inscription à l’application → Sélectionner Votre application → Allez dans Clé secrète du client —>Modifiez le champ Client Secret avec la nouvelle valeur et confirmez avec sauvegarder Changements.

Cas d’utilisation de l’identité gérée :

À l’aide d’une identité managée, vous pouvez vous authentifier auprès de n’importe quel service qui prend en charge l’authentification Azure AD sans exposer les informations d’identification.

Identité managée Azure

  • Identités gérées attribuées par l’utilisateur
  • Identités gérées attribuées par le système
FonctionnalitésIdentité managée attribuée par le systèmeIdentité managée attribuée par l’utilisateur
CréationCréé dans le cadre de ressources Azure uniquesCréé en tant que ressources Azure autonomes.
Cycle de la vieCycle de vie partagé avec la ressource Azure avec laquelle l’identité managée est créée. Lorsque la ressource parent est supprimée, l’identité managée est également supprimée.Cycle de vie indépendant. Doit être explicitement supprimé.
Partage entre les ressources AzureNe peut pas être partagé. Il ne peut être associé qu’à une seule ressource Azure.Peut être partagé. La même identité managée affectée par l’utilisateur peut être associée à plusieurs ressources Azure.

Mais comme nous pouvons le voir, le système attribué a réussi à ne pas fonctionner pour nous où vous devez surveiller des milliers de services car nous devons créer des milliers d’identités gérées pour chaque ressource azur pour communiquer avec eux.

Idem, dans le cas d’une identité managée attribuée par l’utilisateur, nous devons accorder l’autorisation à chaque fois qu’un nouveau groupe de ressources est créé dans notre Azure Infra. Ce n’est donc pas bon non plus, car nous devons ajouter à chaque fois un groupe de ressources nouvellement créé. On voit clairement qu’il n’y a pas d’autre moyen de procéder à l’authentification à l’aide du SDK Python, à l’exception de l’enregistrement de l’application.

Pouvons-nous utiliser Azure Key Vault pour stocker des secrets, au lieu de transmettre l’ID client direct et l’ID secret client dans le code :

Comme nous le savons, Azure Vault est le moyen le plus sûr de gérer une telle situation dans les scénarios actuels. Mais son utilisation n’est pas gratuite, vous devez payer 0,03 $ pour une transaction de 10 000 $ au niveau de tarification standard. Il n’est donc pas avantageux dans ce scénario où vous devez récupérer la clé secrète du coffre-fort pour communiquer plus fréquemment avec les ressources Azure.

Non, nous ne pouvons pas récupérer le ClientId et le Client SecretId directement à partir de Key Vault car l’URL de Key Vault n’est pas une URL globale. Avant d’y accéder, nous devons authentifier Key Vault et pour l’authentification, nous utilisons l’application Registration Secret.

TROUVÉ CELA UTILE ? PARTAGEZ-LE




Source link