Google Workspace account beveiligen na een hack of datalek
Stap-voor-stap handleiding voor Google Workspace beheerders: wat te doen bij een gehackt account, van onmiddellijke maatregelen...
Praktische Python scripts voor de Google Workspace Admin SDK: gebruikers exporteren, bulk aanmaken, aanmeldingsrapporten ophalen en service account authenticatie instellen.
De Google Admin SDK geeft programmatische toegang tot vrijwel alle Admin Console functies. Met Python kun je bulk-bewerkingen uitvoeren, rapportages automatiseren en integraties bouwen die in de Admin Console niet mogelijk zijn.
pip install google-auth google-auth-oauthlib google-auth-httplib2 google-api-python-client
Service Account aanmaken:
Admin Console > Beveiliging > API-besturing > Domain-wide Delegation
Client ID: [Service Account Client ID]
Scopes: admin.directory.user, admin.directory.group, admin.reports.audit.readonly
from google.oauth2 import service_account
from googleapiclient.discovery import build
SCOPES = ["https://www.googleapis.com/auth/admin.directory.user"]
credentials = service_account.Credentials.from_service_account_file(
"service-account.json", scopes=SCOPES
).with_subject("admin@jouwdomein.nl")
service = build("admin", "directory_v1", credentials=credentials)
def exporteer_gebruikers():
resultaten, page_token = [], None
while True:
resp = service.users().list(
customer="my_customer", maxResults=500,
orderBy="email", pageToken=page_token
).execute()
resultaten.extend(resp.get("users", []))
page_token = resp.get("nextPageToken")
if not page_token:
break
with open("gebruikers.csv", "w") as f:
f.write("Email,Naam,OE,Aangemaakt\n")
for u in resultaten:
f.write(
f"{u['primaryEmail']},{u['name']['fullName']},"
f"{u.get('orgUnitPath','/')},"
f"{u.get('creationTime','onbekend')}\n"
)
print(f"{len(resultaten)} gebruikers geexporteerd")
import csv, random, string
def genereer_wachtwoord(n=16):
return "".join(random.choice(string.ascii_letters + string.digits + "!@#$") for _ in range(n))
def maak_gebruiker(email, voornaam, achternaam, oe="/"):
pw = genereer_wachtwoord()
body = {
"primaryEmail": email,
"name": {"givenName": voornaam, "familyName": achternaam},
"password": pw, "changePasswordAtNextLogin": True,
"orgUnitPath": oe,
}
try:
service.users().insert(body=body).execute()
print(f"OK: {email} | Wachtwoord: {pw}")
except Exception as e:
print(f"Fout {email}: {e}")
with open("nieuwe-gebruikers.csv") as f:
for r in csv.DictReader(f):
maak_gebruiker(r["email"], r["voornaam"], r["achternaam"], r.get("oe", "/"))
CSV-formaat:
email,voornaam,achternaam,oe
jan@bedrijf.nl,Jan,Janssen,/Verkoop
from googleapiclient.discovery import build
from datetime import datetime, timedelta
reports = build("admin", "reports_v1", credentials=credentials)
start = (datetime.now() - timedelta(days=30)).strftime("%Y-%m-%dT%H:%M:%SZ")
resp = reports.activities().list(
userKey="all", applicationName="login",
startTime=start, maxResults=1000
).execute()
with open("aanmeldingen.csv", "w") as f:
f.write("Tijdstip,Gebruiker,IP,Type\n")
for a in resp.get("items", []):
for e in a.get("events", []):
f.write(f"{a['id']['time']},{a['actor']['email']},{a['ipAddress']},{e['name']}\n") Stap-voor-stap handleiding voor Google Workspace beheerders: wat te doen bij een gehackt account, van onmiddellijke maatregelen...
Alles over Google Workspace facturen: waar vind je ze, hoe stel je het BTW-nummer in, hoe voeg je extra ontvangers toe en wat d...
De 10 meest voorkomende Google Workspace admin vragen met directe oplossingen. Van toegang kwijt en factuurproblemen tot spam, ...
Wij reageren binnen 1 werkdag met een eerlijk en concreet antwoord.
Vraag over het artikel.
Prijsindicatie ontvangen.
Hulp bij toepassing.
Vraag of melding indienen.