Zum Inhalt springen

Sichere deine Python-Projekte mit Google Cloud Platform (GCP) und APIs

ShamsherAI Keys OAuth Shamsher Haider Bigdata AI ML Cloud AWS GCP

Du programmierst in Python mit Google Cloud Platform (GCP) oder anderen Diensten (APIs)? Dann ist sicherer Zugriff super wichtig! Dieser Artikel erklärt drei gängige Methoden: API-Schlüssel, OAuth und Dienstkonten. Schauen wir uns mit Python-Code an, wann man welche Methode benutzt.

Das richtige Werkzeug für den Job

  • API-Schlüssel: Einfache Zeichenketten, die dein Programm bei einfachen APIs identifizieren. Gut für öffentliche APIs, aber nicht für sensible Daten geeignet, da keine Benutzeridentifikation möglich ist.
  • OAuth: Ein Verfahren, bei dem die Anmeldung über einen vertrauenswürdigen Dritten (z.B. Google) läuft. Bietet genaue Kontrolle und Benutzerzustimmung und eignet sich deshalb für Anwendungen mit Benutzerdaten.
  • Dienstkonten: Von Google verwaltete Identitäten für deine Anwendungen in einem Projekt. Sie nutzen geheime Schlüssel zur Anmeldung und bieten die höchste Sicherheit, da keine Benutzerdaten verwendet werden.

1. API-Schlüssel benutzen (Beispiel: Öffentliche API)

Wetterdaten von OpenWeatherMap lassen sich mit einem API-Schlüssel abrufen:

import requests

# Ersetze dies mit deinem API-Schlüssel
api_key = "DEIN_API_SCHLÜSSEL"
stadt = "London"
url = f"https://api.openweathermap.org/data/2.5/weather?q={stadt}&appid={api_key}"

antwort = requests.get(url)

if antwort.status_code == 200:
  daten = antwort.json()
  print(f"Aktuelles Wetter in {stadt}: {daten['weather'][0]['description']}")
else:
  print("Fehler beim Abrufen der Wetterdaten")

Dieser Code holt Wetterdaten für eine Stadt mithilfe eines API-Schlüssels. Ersetze „DEIN_API_SCHLÜSSEL“ mit deinem echten Schlüssel.

2. OAuth: Benutzeranmeldung (Beispiel: Google Drive API)

Hier siehst du ein vereinfachtes Beispiel für die Benutzeranmeldung mit OAuth, um auf Google Drive zuzugreifen (genaue Einrichtung in der Google Dokumentation).

from googleapiclient.discovery import build
from google_auth_oauthlib.flow import InstalledAppFlow
from google.auth.transport.requests import Request

# Ersetze dies mit dem Pfad zu deiner Zugangsdatei
zugangsdatei_pfad = "zugangsdaten.json"

# OAuth-Einrichtung
berechtigungen = ["https://www.googleapis.com/auth/drive.readonly"]
flow = InstalledAppFlow.from_client_secrets_file(zugangsdatei_pfad, scopes=berechtigungen)

# Benutzeranmeldung (hier weggelassen)

service = build("drive", "v3", credentials=credentials)

# Dateien im Benutzer-Drive auflisten
ergebnisse = service.files().list().execute()
print(f"Dateien in deinem Drive:")
for datei in ergebnisse.get('files', []):
  print(datei['name'])

Dieses Beispiel zeigt die Einrichtung der OAuth-Anmeldung mit einer Zugangsdatei und wie man auf Benutzerdaten (Drive-Dateien) nach erfolgreicher Anmeldung zugreift.

3. Dienstkonten: Sicherer Programmzugriff (Beispiel: GCP Cloud Storage)

Hier laden wir sicher eine Datei in Google Cloud Storage (GCS) hoch, mithilfe eines Dienstkontos:

from google.cloud import storage

# Ersetze dies mit deiner Projekt-ID und dem Pfad zum Schlüssel des Dienstkontos
projekt_id = "DEINE_PROJEKT_ID"
dienstkonto_schlüssel_pfad = "dienstkonto.json"

# Anmeldung einrichten
zugangsdaten = storage.Client.from_service_account_json(
    dienstkonto_schlüssel_pfad)

# Speicher-Client erstellen
client = storage.Client(project=projekt_id, credentials=zugangsdaten)

# Datei in einen Speicherplatz hochladen (Ersetze Speicherplatzname und Dateiname)
speicherplatz = client.bucket("dein-speicherplatzname")
datei = speicherplatz.blob("deine_datei.txt")
datei.upload_from_filename("deine_datei.txt")

print("Datei erfolgreich hochgeladen!")

Dieser Code zeigt, wie man eine Datei in einen GCS-Speicherplatz hochlädt, wobei ein Dienstkontoschlüssel zur Anmeldung genutzt wird. Ersetze die Platzhalter mit deinen Projektdetails und dem Pfad zum Schlüssel.

Adapted from Shamsher Haider’s Google Cloud Platform (GCP) article Demystifying GCP Authentication: Keys, OAuth, and Service Accounts for Your Google Cloud Projects