Auf dieser Seite werden HMAC-Schlüssel (Hash-based Message Authentication Code) erläutert, mit denen Sie Anfragen an die Cloud Storage XML API authentifizieren können. HMAC-Schlüssel sind nützlich, wenn Sie Daten zwischen anderen Cloud Storage-Anbietern und Cloud Storage verschieben möchten, da Sie mit HMAC-Schlüsseln Ihren vorhandenen Code wiederverwenden können, um auf Cloud Storage zuzugreifen.
Übersicht
Ein HMAC-Schlüssel ist eine Art von Anmeldedaten, die mit einem Konto verknüpft sind, normalerweise ein Dienstkonto. Sie verwenden einen HMAC-Schlüssel, um Signaturen mit dem Signaturalgorithmus HMAC-SHA256 zu erstellen. Die von Ihnen erstellten Signaturen werden dann in Anfragen an die Cloud Storage XML API eingefügt. Signaturen zeigen, dass eine bestimmte Anfrage von dem Konto autorisiert wurde, das mit dem HMAC-Schlüssel verknüpft ist.
HMAC-Schlüssel bestehen aus zwei Hauptteilen: einer Zugriffs-ID und einem Secret.
Zugriffs-ID: Ein alphanumerischer String, der mit einem bestimmten Konto verknüpft ist.
Wenn der String mit einem Dienstkonto verknüpft ist, beträgt der String 61 Zeichen.
Wenn der String mit einem Nutzerkonto verknüpft ist, beträgt der String 24 Zeichen.
Das folgende Beispiel zeigt eine Zugriff-ID:
GOOGTS7C7FUP3AIRVJTE2BCDKINBTES3HC2GY5CBFJDCQ2SYHV6A6XXVTJFSA
Secret: Ein Base-64-codierter String mit 40 Zeichen, der mit einer bestimmten Zugriffs-ID verknüpft ist. Ein Secret ist ein gemeinsamer geheimer Schlüssel, den nur Sie und Cloud Storage kennen. Sie verwenden Ihr Secret als Teil des Authentifizierungsprozesses, um Signaturen zu erstellen. Hier sehen Sie ein Beispiel für ein Secret:
bGoa+V7g/yqDXvKRqq+JTFn4uQZbPiQJo4pf9RzJ
Sowohl die Zugriffs-ID als auch das Secret dienen zur Identifizierung eines HMAC-Schlüssels. Secrets sind jedoch wesentlich vertraulichere Informationen, da sie zum Erstellen von Signaturen verwendet werden.
Sie können optional die Einschränkung restrictAuthTypes
für eine Ressource aktivieren, die den Zugriff für Anfragen beschränkt, die mit HMAC-Schlüsseln signiert sind.
Secrets speichern
Beim Erstellen eines HMAC-Schlüssels für ein Dienstkonto erhalten Sie das Secret für den Schlüssel ein einziges Mal. Sie müssen das Secret zusammen mit der zugehörigen Zugriffs-ID sicher aufbewahren. Wenn Sie das Secret verlieren, kann es weder von Ihnen noch von Google Cloud abgerufen werden. Sie müssen dann einen neuen HMAC-Schlüssel für das Dienstkonto erstellen, um Anfragen weiterhin authentifizieren zu können.
Um einen HMAC-Schlüssel für ein Nutzerkonto zu erstellen, müssen Sie mit dem Nutzerkonto in der Google Cloud Console angemeldet sein und zum Tab Interoperabilität im Menü Cloud Storage-Einstellungen eines Projekts gehen, für das Sie die IAM-Berechtigung resourcemanager.projects.get
haben. Nach dem Erstellen können Sie das Secret des Schlüssels auf dem Tab Interoperabilität eines beliebigen Projekts ansehen, für das Sie die Berechtigung resourcemanager.projects.get
haben.
Best Practices zum Speichern von Secrets
Geben Sie das HMAC-Schlüssel-Secret nicht weiter. Sie sollten mit HMAC-Schlüssel-Secrets wie mit allen anderen Arten von Anmeldedaten umgehen.
Als bewährte Sicherheitsmethode sollten Sie Ihre Schlüssel im Rahmen einer Schlüsselrotation regelmäßig ändern.
Wenn Sie den Verdacht haben, dass eine andere Person Ihre HMAC-Schlüssel verwendet, sollten Sie die betroffenen HMAC-Schlüssel sofort löschen und neue erstellen.
Wenn Sie HMAC-Schlüssel ändern, sollten Sie Ihren Code mit den neuen HMAC-Schlüsseln aktualisieren, bevor Sie die alten Schlüssel löschen. Wenn Sie HMAC-Schlüssel löschen, werden diese sofort ungültig und können nicht wiederhergestellt werden.
Beschränkungen
Mit HMAC-Schlüsseln können nur Anfragen an die XML API gesendet werden, nicht jedoch an die JSON API.
Pro Dienstkonto können maximal 10 HMAC-Schlüssel verwendet werden. Gelöschte Schlüssel werden nicht auf dieses Limit angerechnet.
Nach der Erstellung kann es bis zu 30 Sekunden dauern, bis der HMAC-Schlüssel eines Dienstkontos verwendet werden kann. Nach dem Löschen eines Dienstkontos funktionieren die zugehörigen HMAC-Schlüssel möglicherweise noch bis zu fünf Minuten lang. Umgekehrt kann es bis zu fünf Minuten dauern, bis die HMAC-Schlüssel wieder verwendet werden können, nachdem das Dienstkonto, zu dem sie gehören, wiederhergestellt wurde.
Wenn Sie die Einschränkung
restrictAuthTypes
für eine Ressource aktivieren, können Sie für den angegebenen Kontotyp in dieser Ressource keine HMAC-Schlüssel mehr erstellen oder aktivieren.
Migration von HMAC-Schlüsseln für Nutzerkonten
Im Allgemeinen ist die Verknüpfung von HMAC-Schlüsseln mit Dienstkonten eine bessere Option als die Verknüpfung mit Nutzerkonten, insbesondere bei Produktionsarbeitslasten:
Dienstkonten ermöglichen eine bessere Verwaltungsaufsicht und verhindern Datenschutz- und Sicherheitsrisiken für Konten einzelner Nutzer.
Sie verringern außerdem das Risiko von Dienstausfällen, die mit der Verwendung von Nutzerkonten verbunden sind, z. B. wenn ein Nutzerkonto deaktiviert wird, weil der Nutzer aus dem Projekt aussteigt oder das Unternehmen verlässt.
Wenn Sie derzeit HMAC-Schlüssel mit Nutzerkonten verwenden, aber zu Dienstkonten migrieren möchten, beachten Sie Folgendes:
Ihr Projekt muss ein Dienstkonto haben und dieses Dienstkonto muss mit einem HMAC-Schlüssel verknüpft sein.
Dem Dienstkonto müssen die erforderlichen Berechtigungen für Aktionen in Cloud Storage gewährt werden.
Umfassende Berechtigungen zum Arbeiten mit Objekten sind in der Rolle
Storage Object Admin
enthalten. Sie können jedoch separate Konten für die Ausführung verschiedener Aktionen haben. Beispiel: Sie haben ein Dienstkonto zum Lesen mit der RolleStorage Object Viewer
und ein zweites Dienstkonto zum Schreiben mit der RolleStorage Object Creator
.Testen Sie die ordnungsgemäße Ausführung des Dienstkontos, bevor Sie ein Update in die Produktionsphase übertragen.
Nachdem Ihre Produktionsarbeit zu HMAC-Schlüsseln für Dienstkonten übergegangen ist, sollten Sie anhand des folgenden Cloud Monitoring-Messwerts prüfen, ob die mit dem Nutzerkonto verknüpften HMAC-Schlüssel nicht mehr verwendet werden:
Messwert Beschreibung storage.googleapis.com/authn/authentication_count
Die Häufigkeit, mit der HMAC-Schlüssel zur Authentifizierung von Anfragen verwendet wurden. Sie können die folgenden Labels festlegen, um während des Fortschritts der Migration die Nutzerkontoschlüssel zu erfassen, die weiterhin verwendet werden:
access_id
: gibt an, welche Zugriffs-ID die Anfrage gestellt hat. Sie könnenaccess_id
auch während einer Schlüsselrotation verwenden, um im Blick zu behalten, wie sich der Traffic von einem Schlüssel zum anderen bewegt.authentication_method
: gibt an, ob es sich bei Schlüsseln um Schlüssel von Nutzerkonten oder Dienstkonten handelt.
Nachdem Sie bestätigt haben, dass die HMAC-Schlüssel des Nutzerkontos nicht mehr verwendet werden, löschen Sie die HMAC-Schlüssel. Dadurch verringert sich das Risiko eines unangemessenen Datenzugriffs.
Wenn das Nutzerkonto nicht mehr für den Zugriff auf Cloud Storage-Ressourcen verwendet wird, widerrufen Sie jeglichen Zugriff dieses Kontos auf Cloud Storage.
Optional können Sie für zusätzliche Sicherheit die Einschränkung
restrictAuthTypes
für HMAC-Schlüssel von Nutzerkonten aktivieren.
Nächste Schritte
- HMAC-Schlüssel für Ihre Dienstkonten erstellen
- HMAC-Schlüssel in einer authentifizierten Anfrage verwenden