Vérifier le rôle du lecteur pour un principal de service

Vous pouvez vérifier si un principal de service dispose du rôle Lecteur sur un abonnement Azure à l'aide du script Python suivant :

from azure.identity import DefaultAzureCredential
from azure.mgmt.authorization import AuthorizationManagementClient
from azure.core.exceptions import AzureError

def check_subscription_roles(subscription_id):
    """
    Check if subscription has Reader, Contributor, or Owner role.
    Returns True if any of these roles exist, False otherwise.
    """
    ROLE_IDS = {
        "Reader": "acdd72a7-3385-48ef-bd42-f606fba81ae7",
        "Contributor": "b24988ac-6180-42a0-ab88-20f7382dd24c",
        "Owner": "8e3af657-a8ff-443c-a75c-2fe8c4bcb635"
    }
    try:
        credential = DefaultAzureCredential()
        auth_client = AuthorizationManagementClient(credential, subscription_id)
        for assignment in auth_client.role_assignments.list_for_subscription():
            role_def_id = assignment.role_definition_id
            for role_name, role_id in ROLE_IDS.items():
                if role_id in role_def_id:
                    print(f"✓ Found {role_name} role for subscription: {subscription_id}")
                    return True  # Return immediately when any role is found
        return False  # No matching roles found
    except AzureError as e:
        print(f"Azure Error:: {e}")
        return False
    except Exception as e:
        print(f"Error:: {e}")
        return False

# Main execution
if __name__ == "__main__":
    subscription_id = "<your-subscription-id-here>"
    result = check_subscription_roles(subscription_id)
    if result:
        print("\n✓ True - Required reader role exists\n")
        exit(0)
    else:
        print("\n✗ False - No required role found\n")
        exit(1)

Prérequis

Installez les interfaces de ligne de commande (CLI) d' Python, d' pip et d' Azure dans votre environnement, en fonction de votre système d'exploitation. Les autres commandes suivantes sont compatibles avec toutes les plateformes.

Installez les dépendances

Exécutez la commande suivante :
pip3 install azure-identity azure-mgmt-authorization

Connectez-vous à l'aide du principal de service

Exécutez la commande suivante et remplacez les espaces réservés par vos informations d'identification :
az login --service-principal \
--username <client-id> \
--password <client-secret> \
--tenant <tenant-id>

Enregistrez le script Python précédent sous le nom de fichier check_azure_reader.py `. Remplacez <your-subscription-id-here> dans le script Python par votre identifiant d'abonnement réel. Le script renvoie True ou False et affiche si le rôle lecteur existe ou non.

Exécutez le script.

Exécutez le script à l'aide de la commande suivante d' Python :
python3 check_azure_reader.py
Remarque : les commandes « Python » et « pip » peuvent varier (python ou « python3 » et « » pip ou pip3« ») en fonction de la version d' Python installée dans votre environnement. python3 et font pip3 explicitement référence à l' Python e 3.

Traitement des incidents

Si pip install échoue avec externally-managed-environment erreur, utilisez un environnement virtuel à l'aide des commandes suivantes.

  1. environnement virtuel, exécutez la commande suivante :
    python3 -m venv azure-env
  2. Pour activer un environnement virtuel, exécutez les commandes suivantes :
    • Sur macOS ou Linux :
      source azure-env/bin/activate
    • Sous Windows :
      azure-env\Scripts\activate
  3. Pour installer les paquets, exécutez la commande suivante :
    pip3 install azure-identity azure-mgmt-authorization
  4. Pour exécuter votre script, exécutez la commande suivante :
    python3 check_azure_reader.py
  5. Pour désactiver l'environnement virtuel, exécutez la commande suivante :
    deactivate