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.
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
Veelgestelde vragen
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