Daten mit vom Kunden verwalteten Verschlüsselungsschlüsseln verschlüsseln

In diesem Dokument wird beschrieben, wie Sie vom Kunden verwaltete Verschlüsselungsschlüssel (Customer-Managed Encryption Keys, CMEK) verwenden, um ruhende Daten in einem Cloud-Dienst über Cloud Key Management Service zu verschlüsseln und zu verwalten. CMEK ist in die Codeanpassung für Gemini Code Assist integriert. Gemini Code Assist unterstützt die Verwendung von Cloud EKM-Schlüsseln nicht.

In diesem Dokument tun Sie Folgendes:

  • Informationen zum Erstellen eines CMEK.
  • Gewähren Sie dem Gemini Code Assist-Dienstkonto Berechtigungen.
  • Erstellen Sie einen Code-Repository-Index mit einem CMEK.
  • Zugriff auf ein CMEK-Repository entfernen

Standardmäßig verschlüsselt Gemini für Google Cloud inaktive Kundendaten. Die Verschlüsselung wird von Gemini übernommen. Weitere Maßnahmen Ihrerseits sind nicht erforderlich. Diese Option wird Google-Standardverschlüsselung genannt.

Wenn Sie Ihre Verschlüsselungsschlüssel selbst verwalten möchten, können Sie vom Kunden verwaltete Verschlüsselungsschlüssel (CMEKs, Customer-Managed Encryption Keys) in Cloud KMS mit CMEK-integrierten Diensten wie Gemini verwenden. Mit Cloud KMS-Schlüsseln haben Sie die Kontrolle über Schutzlevel, Speicherort, Rotationszeitplan, Nutzungs- und Zugriffsberechtigungen sowie über kryptografische Grenzen. Mit Cloud KMS können Sie außerdem Audit-Logs aufrufen und den Lebenszyklus von Schlüsseln steuern. Statt es Google zu überlassen, die symmetrischen Schlüsselverschlüsselungsschlüssel (Key Encryption Keys, KEKs) zum Schutz Ihrer Daten zu besitzen und zu verwalten, können Sie diese auch über Cloud KMS steuern und verwalten.

Nachdem Sie Ihre Ressourcen mit CMEKs eingerichtet haben, ähnelt der Zugriff auf Ihre Gemini-Ressourcen der Verwendung der Google-Standardverschlüsselung. Weitere Informationen zu Ihren Verschlüsselungsoptionen finden Sie unter Kundenverwaltete Verschlüsselungsschlüssel (CMEK).

Hinweise

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

  2. Führen Sie in der Entwicklungsumgebung, in der Sie die gcloud CLI eingerichtet haben, den Befehl gcloud components update aus, um zu prüfen, ob Sie alle installierten Komponenten der gcloud CLI auf die aktuelle Version aktualisiert haben.

    gcloud components update
    
  3. CMEK erstellen und Berechtigungen erteilen

    So erstellen Sie einen CMEK und erteilen dem Gemini Code Assist-Dienstkonto Berechtigungen für den Schlüssel:

    1. Führen Sie im Google Cloud -Projekt, in dem Sie Ihre Schlüssel verwalten möchten, die folgenden Schritte aus:

      1. Cloud Key Management Service API aktivieren

      2. Erstellen Sie den Schlüsselbund und den Schlüssel direkt in Cloud KMS.

    2. Weisen Sie dem Gemini Code Assist-Dienstkonto die IAM-Rolle „CryptoKey-Verschlüsseler/Entschlüsseler“ (roles/cloudkms.cryptoKeyEncrypterDecrypter) zu. Erteilen Sie diese Berechtigung für den von Ihnen erstellten Schlüssel.

      Console

      1. Rufen Sie die Schlüsselverwaltung auf.

        Schlüsselverwaltung aufrufen

      2. Wählen Sie den von Ihnen erstellten Schlüssel aus.

      3. Zugriff auf das Gemini Code Assist-Dienstkonto gewähren:

        1. Klicken Sie auf Hauptkonto hinzufügen.
        2. Fügen Sie das Gemini Code Assist-Dienstkonto hinzu. Das Dienstkonto ist service-PROJECT_NUMBER@gcp-sa-cloudaicompanions.iam.gserviceaccount.com, wobei PROJECT_NUMBER die Projektnummer des Google Cloud Projekts ist, in dem Gemini Code Assist aktiviert ist.
        3. Wählen Sie unter Rolle auswählen die Option Cloud KMS > Cloud KMS CryptoKey-Verschlüsseler/Entschlüsseler aus.
        4. Klicken Sie auf Speichern.
      4. Wiederholen Sie den vorherigen Schritt, um Zugriff auf das Konto zu gewähren, mit dem der Code-Repository-Index mit einem CMEK erstellt wird.

      5. Kehren Sie zur Seite Schlüsselverwaltung zurück und wählen Sie den Schlüssel noch einmal aus.

      6. Wählen Sie Infofeld anzeigen aus. In der Spalte Rolle/Mitglied sollten die Rollen angezeigt werden.

      gcloud-CLI

      1. Verwenden Sie den Befehl kms keys add-iam-policy-binding, um in einer Shell-Umgebung Zugriff auf das Dienstkonto für Gemini Code Assist zu gewähren:

        gcloud kms keys add-iam-policy-binding KEY_NAME \
            --project=PROJECT_ID \
            --location=LOCATION \
            --keyring=KEYRING_NAME \
            --member="serviceAccount:service-PROJECT_NUMBER@gcp-sa-cloudaicompanion.iam.gserviceaccount.com" \
            --role="roles/cloudkms.cryptoKeyEncrypterDecrypter"
        

        Ersetzen Sie Folgendes:

        • KEY_NAME: der Schlüsselname.
        • PROJECT_ID: die ID des Projekts, das den Schlüssel enthält.
        • LOCATION: Der Speicherort des Schlüssels.
        • KEYRING_NAME: Der Name des Schlüsselbunds.
        • PROJECT_NUMBER: die Projektnummer des Google Cloud Projekts, in dem Gemini Code Assist aktiviert ist.
      2. Wiederholen Sie den vorherigen Schritt, um Zugriff auf das Konto zu gewähren, mit dem der Code-Repository-Index mit einem CMEK erstellt wird.

      Weitere Informationen zu diesem Befehl finden Sie in der Dokumentation zu gcloud kms keys add-iam-policy-binding.

    Sie können jetzt mit der API einen Code-Repository-Index mit einem CMEK erstellen und den Schlüssel für die Verschlüsselung angeben.

    Code-Repository-Index mit einem CMEK erstellen

    So erstellen Sie ein neues Repository mit CMEK-Schutz:

    gcloud-CLI

    Führen Sie folgenden gemini code-repository-indexes create-Befehl aus:

    gcloud gemini code-repository-indexes create CODE_REPOSITORY_INDEX_NAME \
        --location=LOCATION \
        --kms-key="projects/KEY_PROJECT_ID/locations/LOCATION/keyRings/KEYRING_NAME/cryptoKeys/KEY_NAME"
    

    Ersetzen Sie Folgendes:

    • CODE_REPOSITORY_INDEX_NAME: Der Name des neuen Code-Repository-Index, den Sie erstellen.
    • LOCATION: Der Speicherort des Schlüssels.
    • KEY_PROJECT_ID: die Schlüsselprojekt-ID.
    • KEYRING_NAME: der Name des Schlüsselbunds.
    • KEY_NAME: der Schlüsselname.

    API

    1. Erstellen Sie eine JSON-Datei, die folgende Informationen enthält:

        {
          "kmsKey": "projects/KEY_PROJECT_ID/locations/KEY_LOCATION/keyRings/KEYRING_NAME/cryptoKeys/KEY_NAME"
        }
      

      Ersetzen Sie Folgendes:

      • KEY_PROJECT_ID: die Schlüsselprojekt-ID
      • KEY_LOCATION: der Speicherort des Schlüssels
      • KEYRING_NAME ist der Name des Schlüsselbunds.
      • KEY_NAME: der Schlüsselname
    2. Verwenden Sie den Befehl cURL, um die Methode projects.locations.codeRepositoryIndexes.create aufzurufen:

      curl -X POST --data-binary @JSON_FILE_NAME \
          -H "Authorization: Bearer $(gcloud auth print-access-token)" \
          -H "Content-Type: application/json" \
          "https://cloudaicompanion.googleapis.com/v1/projects/PROJECT_ID/locations/KEY_LOCATION/codeRepositoryIndexes?codeRepositoryIndexId=CODE_REPOSITORY_INDEX_NAME"

      Ersetzen Sie Folgendes:

      • JSON_FILE_NAME: der Pfad für die JSON-Datei, die Sie im vorherigen Schritt erstellt haben.
      • PROJECT_ID: die ID des Projekts, in dem das Repository erstellt werden soll.
      • KEY_LOCATION: Der Speicherort, an dem das Repository erstellt werden soll. Er muss mit dem Speicherort übereinstimmen, an dem der CMEK vorhanden ist.
      • CODE_REPOSITORY_INDEX_NAME: Der Name des neuen Code-Repository-Index, den Sie erstellen. Beispiel: zg-btf-0001

    Die Antwort gibt eine Reihe von Logeinträgen zurück.

    Zugriff auf ein CMEK-Repository entfernen

    Es gibt verschiedene Möglichkeiten, um den Zugriff auf ein mit CMEK verschlüsseltes Repository wieder aufzuheben:

    Wir empfehlen, die Berechtigungen des Gemini Code Assist-Dienstkontos zu widerrufen, bevor Sie einen Schlüssel deaktivieren oder löschen. Die Änderung von Berechtigungen wird innerhalb von Sekunden wirksam, sodass Sie sofort nachvollziehen können, wie sich das Deaktivieren oder Löschen eines Schlüssels auswirkt.