Python en Google Admin SDK: Eigen Rapportages Bouwen

Google Admin SDK rapportages bouwen met Python: maak een lijst van gebruikers zonder 2FA die 60 dagen niet hebben ingelogd. Met volledige Python-code en stap voor stap uitleg.

Python en Google Admin SDK: Eigen Rapportages Bouwen

Je baas wil een lijst van iedereen die geen 2FA heeft ingeschakeld en al 60 dagen niet heeft ingelogd. Dit zit niet in de standaard Admin Console rapportages. Met Python en de Google Admin SDK bouw je deze rapportage in minder dan een uur.

Wat Je Nodig Hebt

  • Een Google Cloud Project met de Admin SDK API ingeschakeld
  • Een service account met domain-wide delegation
  • Python 3.8 of hoger
  • De google-api-python-client bibliotheek

Stap 1: Google Cloud Project Aanmaken

Ga naar console.cloud.google.com. Maak een nieuw project aan, bijv. "Workspace Rapportage". Ga naar APIs & Services > Enable APIs. Zoek op "Admin SDK API" en schakel hem in. Schakel ook "Reports API" in.

Stap 2: Service Account Aanmaken

Ga naar IAM & Admin > Service Accounts. Klik op "Create service account". Geef het een naam. Sla de JSON-sleutelbestand op.

Ga naar je Google Workspace Admin Console > Security > API Controls > Domain-wide delegation. Voeg het service account toe met de volgende scopes:

https://www.googleapis.com/auth/admin.reports.usage.readonly
https://www.googleapis.com/auth/admin.directory.user.readonly

Stap 3: Python Bibliotheek Installeren

pip install google-api-python-client google-auth

Stap 4: De Rapportage Schrijven

from googleapiclient.discovery import build
from google.oauth2 import service_account
from datetime import datetime, timedelta
import csv

SCOPES = [
    "https://www.googleapis.com/auth/admin.reports.usage.readonly",
    "https://www.googleapis.com/auth/admin.directory.user.readonly"
]
SERVICE_ACCOUNT_FILE = "sleutelbestand.json"
ADMIN_EMAIL = "beheerder@jouwdomein.nl"

credentials = service_account.Credentials.from_service_account_file(
    SERVICE_ACCOUNT_FILE, scopes=SCOPES
)
delegated = credentials.with_subject(ADMIN_EMAIL)

directory = build("admin", "directory_v1", credentials=delegated)
reports = build("admin", "reports_v1", credentials=delegated)

users_result = directory.users().list(customer="my_customer", maxResults=500).execute()
users = users_result.get("users", [])

datum_60_dagen_geleden = (datetime.now() - timedelta(days=60)).strftime("%Y-%m-%d")

with open("rapportage.csv", "w", newline="") as f:
    writer = csv.writer(f)
    writer.writerow(["Email", "2FA Ingeschakeld", "Laatste Inlog"])
    for user in users:
        email = user["primaryEmail"]
        twee_fa = user.get("isEnrolledIn2Sv", False)
        laatste_inlog = user.get("lastLoginTime", "Nooit")
        if not twee_fa and laatste_inlog < datum_60_dagen_geleden:
            writer.writerow([email, twee_fa, laatste_inlog])

print("Rapportage opgeslagen als rapportage.csv")

Stap 5: Resultaat Gebruiken

Het script maakt een CSV-bestand met alle gebruikers die geen 2FA hebben en al 60 dagen niet hebben ingelogd. Je kunt dit bestand openen in Excel of Google Sheets.

Rapportage Automatiseren

Sla het script op en stel een cron job in om het wekelijks te draaien. Op Linux of Mac:

0 9 * * 1 python3 /pad/naar/rapportage.py

Dit draait het script elke maandag om 09:00. Voeg een e-mail-stap toe om de CSV automatisch naar de juiste persoon te sturen.

Relevant voor: Amsterdam, Rotterdam, Utrecht, Den Haag, Eindhoven, Groningen

Vrijblijvend advies

Heeft u vragen over dit onderwerp? Wij helpen u graag verder als gecertificeerde Google Workspace Partner.

  • Reactie binnen 1 werkdag
  • Gecertificeerde Google Partner
  • Geen verplichtingen
Contact opnemen

Veelgestelde vragen

Kan ik ook rapporteren op basis van gebruik van specifieke apps?
Ja. De Reports API biedt gebruiksrapporten per app: Gmail, Drive, Meet, etc. Vervang "userUsageReport" door de gewenste applicatie in de API-aanroep.
Hoe verwerk ik paginering als er meer dan 500 gebruikers zijn?
Gebruik de "pageToken" parameter. Na elke API-aanroep controleer je of er een "nextPageToken" in het resultaat zit en herhaal je de aanroep met dat token totdat er geen meer is.
Is het veilig om het JSON-sleutelbestand op de server op te slaan?
Sla het bestand op met beperkte bestandspermissies (chmod 600 op Linux). Overweeg ook Google Secret Manager te gebruiken voor productie-omgevingen.
Welke rapportages kan ik nog meer bouwen?
Populaire rapportages: gebruikers zonder licentietype, Shared Drive bestanden gedeeld buiten de organisatie, gebruikers met zwakke wachtwoorden, inactieve accounts.

Staat uw vraag er niet bij?

Stuur ons een bericht. Wij kijken met u mee en reageren met eerlijk advies.

  • Reactie binnen 1 werkdag
  • Geen verplichtingen
Stuur een bericht

Heeft u een vraag?

Stuur ons een bericht. Wij reageren binnen 1 werkdag.