HMAC-Schlüssel

Einrichtung

Auf dieser Seite werden HMAC-Schlüssel (Hash-basierter Message Authentication Code) beschrieben, mit denen Sie Anfragen an Cloud Storage 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.

Überblick

Ein HMAC-Schlüssel ist eine Art von Anmeldedaten, die mit einem Konto verknüpft sind, normalerweise ein Dienstkonto. Mit einem HMAC-Schlüssel können Sie Signaturen erstellen, die dann in Anfragen an Cloud Storage aufgenommen werden. 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 des Projekts aufrufen, 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 Rolle Storage Object Viewer und ein zweites Dienstkonto zum Schreiben mit der Rolle Storage 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önnen access_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