IAM-Rollen zuweisen und entziehen

Auf dieser Seite wird beschrieben, wie Sie Hauptkonten IAM-Rollen (Identity and Access Management) für Secure Source Manager-Ressourcen zuweisen. Informationen zum Zuweisen von Rollen für andere Google Cloud Ressourcen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.

Für Secure Source Manager-Instanzen und -Repositories gibt es eigene Rollen. Wenn Sie zum ersten Mal Instanzrollen in einem Projekt zuweisen, müssen Sie die gcloud CLI oder die REST API verwenden. Sie können Repository-Rollen mit dem gcloud CLI-Tool, der REST API oder über die Secure Source Manager-Weboberfläche zuweisen.

Nachdem Sie eine Secure Source Manager-Rolle mit der gcloud CLI, der Weboberfläche oder der REST API gewährt haben, ist die Rolle für Ihr Projekt in der Google Cloud Console sichtbar.

Erforderliche Rollen

Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Aktualisieren der IAM-Richtlinie für eine Instanz oder ein Repository benötigen:

Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.

Sie können die erforderlichen Berechtigungen auch über benutzerdefinierte Rollen oder andere vordefinierte Rollen erhalten.

Informationen zum Zuweisen von Secure Source Manager-Rollen finden Sie unter Zugriffssteuerung mit IAM und Nutzern Instanzzugriff gewähren.

Hauptkonten angeben

Ein Hauptkonto ist eine Identität, die auf eine Ressource zugreifen kann. Jedes Hauptkonto hat eine eigene Kennung. Hauptkonto-Kennzeichnungen haben das folgende Format:

PRINCIPAL-TYPE:ID

Beispiel: user:my-user@example.com. Weitere Informationen zu Hauptkonten finden Sie unter Funktionsweise von IAM.

Beim Hauptkontotyp user muss der Domainname in der Kennung eine Google Workspace- oder Cloud Identity-Domain sein, es sei denn, Sie verwenden die Mitarbeiteridentitätsföderation. Informationen zum Einrichten einer Cloud Identity-Domain finden Sie unter Cloud Identity – Übersicht.

Principals für die Mitarbeiteridentitätsföderation

Wenn Sie die Mitarbeiteridentitätsföderation für den Zugriff auf Secure Source Manager verwenden, werden Hauptkonten anders dargestellt. Weitere Informationen zum Gewähren des Zugriffs auf Hauptkonten, die Gruppen von Identitäten darstellen, finden Sie unter Workforce-Pool-Nutzer in IAM-Richtlinien darstellen.

Mit dem folgenden Befehl wird dem Nutzer user@example.com beispielsweise die Rolle „Instance Accessor“ (roles/securesourcemanager.instanceAccessor) im Workforce-Pool my-pool für die Instanz my-instance im Projekt my-project in der Region us-central1 zugewiesen:

  gcloud beta source-manager instances add-iam-policy-binding my-instance \
      --project=my-project \
      --region=us-central1 \
      --member=principal://iam.googleapis.com/locations/global/workforcePools/my-pool/subject/user@example.com \
      --role=roles/securesourcemanager.instanceAccessor

Sie können Nutzern oder Gruppen in Ihrem Workforce Identity-Pool basierend auf den Attributen Ihres Identitätsanbieters (IdP) Berechtigungen erteilen oder Common Expression Language (CEL) verwenden, um Ihre OIDC-Attribute benutzerdefinierten Attributen zuzuordnen und so eine Autorisierungsstrategie in Ihrer IAM-Richtlinie zu definieren. Weitere Informationen zu Attributzuordnungen finden Sie unter Attributzuordnungen.

Instanzrollen zuweisen oder entziehen

Verwenden Sie zum Zuweisen oder Widerrufen von Instanzrollen das Muster read-modify-write, um die Zulassungsrichtlinie der Ressource zu aktualisieren:

  1. Lesen Sie die aktuelle Zulassungsrichtlinie, indem Sie getIamPolicy() aufrufen.
  2. Bearbeiten Sie die Zulassungsrichtlinie entweder mit einem Texteditor oder programmgesteuert, um Hauptkonten oder Rollenbindungen hinzuzufügen oder zu entfernen.
  3. Schreiben Sie die aktualisierte Zulassungsrichtlinie durch Aufrufen von setIamPolicy().

gcloud

  1. Führen Sie den folgenden Befehl aus, um die aktuelle Zulassungsrichtlinie zu lesen und in /tmp/instances.json zu speichern:

    gcloud beta source-manager instances get-iam-policy INSTANCE_ID \
        --project=PROJECT_ID \
        --region=REGION \
        --format=json > /tmp/instance.json
    

    Ersetzen Sie Folgendes:

    • INSTANCE_ID durch die Instanz-ID.
    • PROJECT_ID durch die Projekt-ID oder Projektnummer der Instanz.
    • REGION durch die Region, in der sich die Instanz befindet. Informationen zu den verfügbaren Secure Source Manager-Regionen finden Sie in der Dokumentation zu Standorten.

    Die Ausgabe enthält alle vorhandenen Bindungen oder, falls keine vorhanden sind, den Wert etag, wie im Folgenden dargestellt:

    {
        "etag": "BwUjHYKJUiQ="
    }
    
  2. Passen Sie die lokale Kopie der Zulassungsrichtlinie Ihrer Instanz programmgesteuert oder mithilfe eines Texteditors so an, dass sie die Rollen widerspiegelt, die Sie gewähren oder widerrufen möchten.

    Bearbeiten Sie das Feld etag der Zulassungsrichtlinie nicht und entfernen Sie es nicht, um sicherzustellen, dass Sie keine anderen Richtlinienänderungen überschreiben. Das Feld etag gibt den aktuellen Zustand der Zulassungsrichtlinie an. Wenn Sie die aktualisierte Zulassungsrichtlinie festlegen, vergleicht IAM den etag-Wert in der Anfrage mit dem vorhandenen etag und schreibt die Zulassungsrichtlinie nur, wenn die Werte übereinstimmen.

    Wenn Sie die Rollen bearbeiten möchten, die durch eine Zulassungsrichtlinie gewährt werden, müssen Sie die Rollenbindungen in der Zulassungsrichtlinie bearbeiten. Rollenbindungen haben das folgende Format:

    {
      "role": "ROLE_NAME",
      "members": [
        "PRINCIPAL_1",
        "PRINCIPAL_2",
        ...
        "PRINCIPAL_N"
      ]
    }
    

    Die Platzhalter haben folgende Werte:

    • ROLE_NAME: Der Name der Rolle, die Sie zuweisen möchten. Verwenden Sie das folgende Format: roles/securesourcemanager.IDENTIFIER

    • PRINCIPAL_1, PRINCIPAL_2, ...PRINCIPAL_N: Kennungen für die Hauptkonten, denen Sie die Rolle zuweisen möchten.

    In der folgenden Richtlinie wird beispielsweise die Rolle instanceOwner dem Nutzer user1@gmail.com und die Rolle instanceManager den Nutzern user2@gmail.com und user3@gmail.com sowie dem Dienstkonto my-other-app@appspot.gserviceaccount.com zugewiesen.

    {
        "etag": "BwUjHYKJUiQ=",
        "bindings": [
        {
            "role": "roles/securesourcemanager.instanceOwner",
            "members": [
                "user:user1@gmail.com"
            ]
        },
        {
            "role": "roles/resourcemanager.instanceManager",
            "members": [
                "user:user2@gmail.com",
                "user:user3@gmail.com",
                "serviceAccount:my-other-app@appspot.gserviceaccount.com"
            ]
        }
        ]
    }
    
  3. Nachdem Sie die gespeicherte Zulassungsrichtlinie geändert haben, um die ausgewählten Rollen zuzuweisen und zu widerrufen, aktualisieren Sie die Zulassungsrichtlinie Ihrer Instanz, indem Sie den folgenden Befehl ausführen:

    gcloud beta source-manager instances set-iam-policy INSTANCE_ID  \
        --project=PROJECT_ID \
        --region=REGION \
        /tmp/instance.json
    

    Ersetzen Sie Folgendes:

    • INSTANCE_ID durch die Instanz-ID.
    • PROJECT_ID durch die Projekt-ID oder Projektnummer der Instanz.
    • REGION durch die Region, in der sich die Instanz befindet. Informationen zu den verfügbaren Secure Source Manager-Regionen finden Sie in der Dokumentation zu Standorten.

API

  1. Führen Sie den folgenden instances.getIamPolicy-Befehl aus, um die aktuelle Richtlinie zu lesen:

    curl \
        -H "Authorization: Bearer $(gcloud auth print-access-token)" \
        https://securesourcemanager.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/instances/INSTANCE_ID:getIamPolicy > /tmp/instance.json
    

    Ersetzen Sie Folgendes:

    • PROJECT_ID ist die Projekt-ID oder Projektnummer der Instanz.
    • REGION ist die Region, in der sich die Instanz befindet. Informationen zu den verfügbaren Secure Source Manager-Regionen finden Sie in der Dokumentation zu Standorten.
    • INSTANCE_ID: die Instanz-ID.

    Die Ausgabe enthält alle vorhandenen Bindungen oder, falls keine vorhanden sind, den Wert etag, der in etwa so aussieht:

    {
        "etag": "BwUjHYKJUiQ="
    }
    
  2. Passen Sie die lokale Kopie der Zulassungsrichtlinie Ihrer Instanz programmgesteuert oder mithilfe eines Texteditors so an, dass sie die Rollen widerspiegelt, die Sie gewähren oder entziehen möchten.

    Bearbeiten Sie das Feld etag der Zulassungsrichtlinie nicht und entfernen Sie es nicht, um sicherzustellen, dass Sie keine anderen Richtlinienänderungen überschreiben. Das Feld etag gibt den aktuellen Zustand der Zulassungsrichtlinie an. Wenn Sie die aktualisierte Zulassungsrichtlinie festlegen, vergleicht IAM den etag-Wert in der Anfrage mit dem vorhandenen etag und schreibt die Zulassungsrichtlinie nur, wenn die Werte übereinstimmen.

    Wenn Sie die Rollen bearbeiten möchten, die durch eine Zulassungsrichtlinie gewährt werden, müssen Sie die Rollenbindungen in der Zulassungsrichtlinie bearbeiten. Rollenbindungen haben das folgende Format:

    {
      "role": "ROLE_NAME",
      "members": [
        "PRINCIPAL_1",
        "PRINCIPAL_2",
        ...
        "PRINCIPAL_N"
      ]
    }
    

    Die Platzhalter haben folgende Werte:

    • ROLE_NAME: Der Name der Rolle, die Sie zuweisen möchten. Verwenden Sie das folgende Format: roles/securesourcemanager.IDENTIFIER

    • PRINCIPAL_1, PRINCIPAL_2, ...PRINCIPAL_N: Kennungen für die Hauptkonten, denen Sie die Rolle zuweisen möchten.

    In der folgenden Richtlinie wird beispielsweise die Rolle instanceOwner dem Nutzer user1@gmail.com und die Rolle instanceManager den Nutzern user2@gmail.com und user3@gmail.com sowie dem Dienstkonto my-other-app@appspot.gserviceaccount.com zugewiesen.

    {
    "policy": {
        "etag": "BwUjHYKJUiQ=",
        "bindings": [
        {
            "role": "roles/securesourcemanager.instanceOwner",
            "members": [
                "user:user1@gmail.com"
            ]
        },
        {
            "role": "roles/resourcemanager.instanceManager",
            "members": [
                "user:user2@gmail.com",
                "user:user3@gmail.com",
                "serviceAccount:my-other-app@appspot.gserviceaccount.com"
            ]
        }
        ]
    }
    }
    
  3. Nachdem Sie die Zulassungsrichtlinie geändert haben, um die ausgewählten Rollen zuzuweisen und zu widerrufen, rufen Sie instances.setIamPolicy() auf, um Aktualisierungen vorzunehmen.

    Verwenden Sie den folgenden instances.setIamPolicy-Befehl, um die neue Richtlinie für die Instanz festzulegen.

    curl \
        -H "Content-Type: application/json" \
        -H "Authorization: Bearer $(gcloud auth print-access-token)" \
        https://securesourcemanager.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/instances/INSTANCE_ID:setIamPolicy \
        -d @/tmp/instance.json
    

    Ersetzen Sie Folgendes:

    • PROJECT_ID ist die Projekt-ID oder Projektnummer der Instanz.
    • REGION ist die Region, in der sich die Instanz befindet. Informationen zu den verfügbaren Secure Source Manager-Regionen finden Sie in der Dokumentation zu Standorten.
    • INSTANCE_ID: die Instanz-ID.

Repository-Rollen zuweisen oder entziehen

Sie können Nutzern und Dienstkonten Repository-Rollen über die Secure Source Manager-Weboberfläche zuweisen oder entziehen. Alternativ können Sie die Secure Source Manager API verwenden, um die „allow“-Richtlinie des Repositorys zu aktualisieren. Wenn Sie Gruppen Repository-Rollen zuweisen möchten, müssen Sie die Secure Source Manager API verwenden.

Nutzern muss eine Instanzrolle zugewiesen werden, bevor ihnen Repository-Rollen zugewiesen werden können. Informationen zum Zuweisen von Instanzrollen finden Sie unter Instanzrollen zuweisen oder widerrufen.

Weboberfläche

So weisen Sie Nutzern oder Dienstkonten Rollen auf Repository-Ebene über die Weboberfläche zu:

  1. Rufen Sie die Instanz-URL auf, die Sie von Ihrem Google-Ansprechpartner erhalten haben.
  2. Wählen Sie auf der Seite Meine Repositories Ihr Repository aus.
  3. Klicken Sie auf den Tab Berechtigungen.
  4. Klicken Sie im Bereich Personen und Berechtigungen auf Nutzer hinzufügen.
  5. Geben Sie im Feld Hauptkonto hinzufügen die E-Mail-Adresse des Nutzers oder Dienstkontos ein, dem Sie die Rolle zuweisen möchten.
  6. Wählen Sie im Menü Rolle zuweisen die Rolle aus, die Sie zuweisen möchten.
  7. Klicken Sie auf Speichern.

Wenn Sie weitere Rollen hinzufügen möchten, klicken Sie auf das Bearbeiten-Symbol Bearbeiten und fügen Sie die Rollen über das Menü Rolle zuweisen hinzu.

API

Die Methode repositories.getIamPolicy der Secure Source Manager API ruft die Zulassungsrichtlinie eines Repositorys ab.

  1. Führen Sie den folgenden repositories.getIamPolicy-Befehl aus, um die aktuelle Richtlinie zu lesen und in /tmp/repository.json zu speichern:
curl \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    https://securesourcemanager.googleapis.com/v1/projects/REPOSITORY_PROJECT/locations/REGION/repositories/REPOSITORY_ID:getIamPolicy > /tmp/repository.json

Ersetzen Sie Folgendes:

  • REPOSITORY_PROJECT die Projekt-ID oder Projektnummer des Repositorys.
  • REGION ist die Region, in der sich das Repository befindet.
  • REPOSITORY_ID ist die Repository-ID.

Die Ausgabe enthält alle vorhandenen Bindungen oder, falls keine vorhanden sind, den Wert etag, der in etwa so aussieht:

{
    "etag": "BwUjHYKJUiQ="
}
  1. Passen Sie die lokale Kopie der Zulassungsrichtlinie Ihres Repositorys, die in /tmp/repository.json gespeichert ist, programmgesteuert oder mithilfe eines Texteditors so an, dass sie die Rollen widerspiegelt, die Sie gewähren oder widerrufen möchten.

    Bearbeiten Sie das Feld etag der Zulassungsrichtlinie nicht und entfernen Sie es nicht, um sicherzustellen, dass Sie keine anderen Richtlinienänderungen überschreiben. Das Feld etag gibt den aktuellen Zustand der Zulassungsrichtlinie an. Wenn Sie die aktualisierte Zulassungsrichtlinie festlegen, vergleicht IAM den etag-Wert in der Anfrage mit dem vorhandenen etag und schreibt die Zulassungsrichtlinie nur, wenn die Werte übereinstimmen.

    Wenn Sie die Rollen bearbeiten möchten, die durch eine Zulassungsrichtlinie gewährt werden, müssen Sie die Rollenbindungen in der Zulassungsrichtlinie bearbeiten. Rollenbindungen haben das folgende Format:

    {
      "role": "ROLE_NAME",
      "members": [
        "PRINCIPAL_1",
        "PRINCIPAL_2",
        ...
        "PRINCIPAL_N"
      ]
    }
    

    Die Platzhalter haben folgende Werte:

    • ROLE_NAME: Der Name der Rolle, die Sie zuweisen möchten. Verwenden Sie das folgende Format: roles/securesourcemanager.<var>IDENTIFIER</var>

    • PRINCIPAL_1, PRINCIPAL_2, ...PRINCIPAL_N: Kennungen für die Hauptkonten, denen Sie die Rolle zuweisen möchten.

    Im folgenden Beispiel wird dem Nutzer email1@gmail.com die Rolle repoAdmin und den Nutzern email2@gmail.com und group1@gmail.com sowie dem Dienstkonto my-other-app@appspot.gserviceaccount.com die Rolle repoWriter zugewiesen.

    {
    "policy": {
        "etag": "BwUjHYKJUiQ=",
        "bindings": [
        {
            "role": "roles/securesourcemanager.repoAdmin",
            "members": [
                "user:email1@gmail.com"
            ]
        },
        {
            "role": "roles/resourcemanager.repoWriter",
            "members": [
                "user:email2@gmail.com",
                "group:group1@gmail.com",
                "serviceAccount:my-other-app@appspot.gserviceaccount.com"
            ]
        }
        ]
    }
    }
    
  2. Speichern Sie die bearbeitete Datei /tmp/repository.json.

  3. Legen Sie die neue Richtlinie mit dem Befehl setIamPolicy fest:

    curl \
        -H "Content-Type: application/json" \
        -H "Authorization: Bearer $(gcloud auth print-access-token)" \
        https://securesourcemanager.googleapis.com/v1/projects/REPOSITORY_PROJECT/locations/REGION/repositories/REPOSITORY_ID:setIamPolicy \
        -d @/tmp/repository.json
    

    Ersetzen Sie Folgendes:

    • REPOSITORY_PROJECT die Projekt-ID oder Projektnummer des Repositorys.
    • REGION ist die Region, in der sich das Repository befindet. Informationen zu den verfügbaren Secure Source Manager-Regionen finden Sie in der Dokumentation zu Standorten.
    • REPOSITORY_ID ist die Repository-ID.

Nächste Schritte