Verifica il ruolo di lettore per un soggetto di servizio

Per verificare se un soggetto di servizio dispone del ruolo "Reader" in un abbonamento a Azure, utilizzare il seguente script Python :

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)

Prerequisiti

Installa le interfacce CLI di Python, pip e Azure nel tuo ambiente in base al sistema operativo. I restanti comandi riportati di seguito sono compatibili su tutte le piattaforme.

Installa le dipendenze

Utilizzare il seguente comando:
pip3 install azure-identity azure-mgmt-authorization

Accedi utilizzando l'entità di servizio

Esegui il seguente comando e sostituisci i segnaposto con le tue credenziali:
az login --service-principal \
--username <client-id> \
--password <client-secret> \
--tenant <tenant-id>

Salva lo script precedente Python con il nome file ` check_azure_reader.py. Sostituisci <your-subscription-id-here> nello script Python con il tuo ID di abbonamento effettivo. Lo script restituisce True o False e visualizza un messaggio a seconda che il ruolo "reader" esista o meno.

Esegui lo script

Esegui lo script utilizzando il seguente comando ` Python `:
python3 check_azure_reader.py
Nota: i comandi Python e pip possono variare (python o python3 e pip o pip3) a seconda della versione di Python installata nel proprio ambiente. python3 e fanno pip3 esplicito riferimento a Python 3.

Risoluzione dei problemi

Se l'operazione pip install non va a buon fine e viene visualizzato externally-managed-environment un errore, crea un ambiente virtuale utilizzando i seguenti comandi.

  1. In ambiente virtuale, eseguire il seguente comando:
    python3 -m venv azure-env
  2. Per attivare un ambiente virtuale, eseguire i seguenti comandi:
    • Sul sito macOS o all'indirizzo Linux :
      source azure-env/bin/activate
    • Su Windows:
      azure-env\Scripts\activate
  3. Per installare i pacchetti, esegui il seguente comando:
    pip3 install azure-identity azure-mgmt-authorization
  4. Per eseguire lo script, digita il seguente comando:
    python3 check_azure_reader.py
  5. Per disattivare l'ambiente virtuale, eseguire il seguente comando:
    deactivate