Zugriffssteuerung mit IAM

In diesem Thema erfahren Sie, wie Sie den Zugriff auf Cloud KMS-Ressourcen verwalten.

Übersicht

Zum Verwalten des Zugriffs auf Cloud KMS-Ressourcen wie Schlüssel und Schlüsselbunde weisen Sie IAM-Rollen (Identity and Access Management) zu. Sie können die Möglichkeit gewähren oder einschränken, bestimmte kryptografische Vorgänge auszuführen, z. B. das Rotieren eines Schlüssels oder das Verschlüsseln von Daten. Sie können IAM-Rollen für Folgendes zuweisen:

  • Einen Schlüssel direkt
  • Einen Schlüsselbund, der von allen Schlüsseln in diesem Schlüsselbund übernommen wird
  • Ein Google Cloud Projekt, das von allen Schlüsseln im Projekt übernommen wird
  • Ein Google Cloud -Ordner, der von allen Schlüsseln in allen Projekten im Ordner übernommen wird
  • Eine Google Cloud -Organisation, die von allen Schlüsseln in Ordnern der Organisation übernommen wird

Eine vollständige Liste der Cloud KMS-Aktionen und IAM-Rollen und -Berechtigungen finden Sie unter Berechtigungen und Rollen. Eine vollständige Liste der Cloud KMS-Ressourcen und ihrer Beziehung zueinander finden Sie unter Cloud KMS-Ressourcen.

Hinweis

Zum Ausführen dieser Aufgaben benötigen Sie die Berechtigung, Cloud KMS-Ressourcen im Projekt Google Cloud zu verwalten. Die Cloud KMS-Administratorrolle (roles/cloudkms.admin) enthält die erforderlichen Berechtigungen.

  1. Melden Sie sich in Ihrem Google Cloud -Konto an. Wenn Sie mit Google Cloudnoch nicht vertraut sind, erstellen Sie ein Konto, um die Leistungsfähigkeit unserer Produkte in der Praxis sehen und bewerten zu können. Neukunden erhalten außerdem ein Guthaben von 300 $, um Arbeitslasten auszuführen, zu testen und bereitzustellen.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. Enable the required API.

    Roles required to enable APIs

    To enable APIs, you need the serviceusage.services.enable permission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.

    Enable the API

  5. Installieren Sie die Google Cloud CLI.

  6. Wenn Sie einen externen Identitätsanbieter (IdP) verwenden, müssen Sie sich zuerst mit Ihrer föderierten Identität in der gcloud CLI anmelden.

  7. Führen Sie den folgenden Befehl aus, um die gcloud CLI zu initialisieren:

    gcloud init
  8. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  9. Verify that billing is enabled for your Google Cloud project.

  10. Enable the required API.

    Roles required to enable APIs

    To enable APIs, you need the serviceusage.services.enable permission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.

    Enable the API

  11. Installieren Sie die Google Cloud CLI.

  12. Wenn Sie einen externen Identitätsanbieter (IdP) verwenden, müssen Sie sich zuerst mit Ihrer föderierten Identität in der gcloud CLI anmelden.

  13. Führen Sie den folgenden Befehl aus, um die gcloud CLI zu initialisieren:

    gcloud init
  14. Erstellen Sie eine Ressource, z. B. einen Schlüsselbund.
  15. Rufen Sie die Ressourcen-IDs für die erstellten Ressourcen ab, z. B. für einen Schlüsselbund, einen Schlüssel und eine Schlüsselversion.

Nur IAM-Hauptkonten mit der Rolle „Inhaber“ (roles/owner) oder „Cloud KMS-Administrator“ (roles/cloudkms.admin) können den Zugriff auf Cloud KMS-Ressourcen gewähren oder entziehen.

Rollen für Ressource zuweisen

Im folgenden Beispiel wird eine Rolle zugewiesen, die den Zugriff auf einen Cloud KMS-Schlüssel ermöglicht:

gcloud

Wenn Sie Cloud KMS in der Befehlszeile verwenden möchten, müssen Sie zuerst Google Cloud CLI installieren oder ein Upgrade ausführen.

gcloud kms keys add-iam-policy-binding key \
    --keyring key-ring \
    --location location \
    --member principal-type:principal-email \
    --role roles/role

Ersetzen Sie key durch den Namen des Schlüssels. Ersetzen Sie key-ring durch den Namen des Schlüsselbunds, in dem sich der Schlüssel befindet. Ersetzen Sie location durch den Cloud KMS-Speicherort für den Schlüsselbund. Ersetzen Sie principal-type und principal-email durch den Typ des Hauptkontos und die E-Mail-Adresse des Hauptkontos. Ersetzen Sie role durch den Namen der Rolle, die hinzugefügt werden soll.

C#

Um diesen Code auszuführen, müssen Sie zuerst eine C#-Entwicklungsumgebung einrichten und das Cloud KMS C# SDK installieren.


using Google.Cloud.Iam.V1;
using Google.Cloud.Kms.V1;

public class IamAddMemberSample
{
    public Policy IamAddMember(
      string projectId = "my-project", string locationId = "us-east1", string keyRingId = "my-key-ring", string keyId = "my-key",
      string member = "user:foo@example.com")
    {
        // Create the client.
        KeyManagementServiceClient client = KeyManagementServiceClient.Create();

        // Build the resource name.
        CryptoKeyName resourceName = new CryptoKeyName(projectId, locationId, keyRingId, keyId);

        // The resource name could also be a key ring.
        // var resourceName = new KeyRingName(projectId, locationId, keyRingId);

        // Get the current IAM policy.
        Policy policy = client.IAMPolicyClient.GetIamPolicy(
            new GetIamPolicyRequest
            { 
                ResourceAsResourceName = resourceName
            });

        // Add the member to the policy.
        policy.AddRoleMember("roles/cloudkms.cryptoKeyEncrypterDecrypter", member);

        // Save the updated IAM policy.
        Policy result = client.IAMPolicyClient.SetIamPolicy(
            new SetIamPolicyRequest
            {
                ResourceAsResourceName = resourceName,
                Policy = policy
            });

        // Return the resulting policy.
        return result;
    }
}

Go

Um diesen Code auszuführen, müssen Sie zuerst eine Go-Entwicklungsumgebung einrichten und das Cloud KMS Go SDK installieren.

import (
	"context"
	"fmt"
	"io"

	kms "cloud.google.com/go/kms/apiv1"
)

// iamAddMember adds a new IAM member to the Cloud KMS key
func iamAddMember(w io.Writer, name, member string) error {
	// NOTE: The resource name can be either a key or a key ring. If IAM
	// permissions are granted on the key ring, the permissions apply to all keys
	// in the key ring.
	//
	// name := "projects/my-project/locations/us-east1/keyRings/my-key-ring/cryptoKeys/my-key"
	// member := "user:foo@example.com"

	// Create the client.
	ctx := context.Background()
	client, err :=