Typen projektübergreifend freigeben

Auf dieser Seite wird gezeigt, wie Sie Typen und Typanbieter Ihres Projekts für andere Projekte freigeben. Angenommen, Sie haben ein Projekt, das für die Aufrechterhaltung von vorab genehmigten Typanbietern für Ihr Unternehmen verantwortlich ist. Nun möchten Sie diese Typanbieter aus dem Projekt für andere Projekte freigeben und dieses Projekt als zentrales Repository für Typen verwenden. Sie können diese Methode auch zur Freigabe von zusammengesetzten Typen für Projekte verwenden.

Um den Zugriff einzurichten, muss ein Projektinhaber des Projekts mit dem jeweiligen Typ dem Dienstkonto des Projekts, in dem die Typen verwendet werden sollen, die Rolle deploymentmanager.typeViewer (Beta) zuweisen. Die Rolle muss auch jenen Nutzern zugewiesen werden, die Typen aus einem anderen Projekt anzeigen und auflisten möchten.

Hinweise

Beschränkungen

Die Nutzung dieses Features unterliegt folgenden Bedingungen:

  • Durch die Zuweisung der Rolle deploymentmanager.typeViewer werden Berechtigungen für alle Typen im jeweiligen Projekt erteilt. Freigaben können nicht auf einzelne Typen beschränkt werden.
  • Diese Rolle kann allAuthenticatedUsers oder allUsers nicht zugewiesen werden.

Projektzugriff für die Nutzung von Typen gewähren

Um Zugriff auf Typen zu gewähren, die zu anderen Projekten gehören, muss der Inhaber des Projekts mit den betreffenden Typen dem Google APIs-Dienstkonto des Projekts, in dem die Typen verwendet werden sollen, die Rolle deploymentmanager.typeViewer zuweisen.

  1. Rufen Sie in der Google Cloud Console die IAM-Seite des Projekts auf, das die Typen verwenden soll.

    Zur Seite „IAM“

  2. Wählen Sie bei Aufforderung Ihr Projekt aus der Liste aus.
  3. Suchen Sie nach dem Google APIs-Dienstkonto, dessen E-Mail-Adresse folgendes Format hat:

    [PROJECT_NUMBER]@cloudservices.gserviceaccount.com
    
  4. Notieren Sie die oben angeführte E-Mail-Adresse. Als Nächstes kann ein Projektinhaber des Projekts, in dem sich die gewünschten Typen befinden, dem Google APIs-Dienstkonto die Rolle roles/deploymentmanager.typeViewer zuweisen.

    Console

    1. Rufen Sie in der Google Cloud Console die IAM-Seite des Projekts auf, das die Typen enthält, die Sie freigeben möchten.

      Zur Seite „IAM“

    2. Wählen Sie das Projekt aus der Projektliste aus.
    3. Klicken Sie auf Hinzufügen, um ein neues Mitglied hinzuzufügen.
    4. Geben Sie die E-Mail-Adresse des Dienstkontos in das Feld Mitglieder ein.
    5. Erweitern Sie das Drop-down-Menü Rollen und wählen Sie Sonstiges > Deployment Manager-Typbetrachter (Beta) aus.
    6. Klicken Sie auf Hinzufügen, um das Konto hinzuzufügen.

    gcloud

    Fügen Sie über die Google Cloud CLI eine Bindung an die IAM-Richtlinie für das Projekt hinzu:

    gcloud projects add-iam-policy-binding [PROJECT_ID] \
        --member serviceAccount:[SERVICE_ACCOUNT_EMAIL] --role roles/deploymentmanager.typeViewer

    Dabei gilt:

    • [PROJECT_ID] ist die ID des Projekts mit den Images, die Sie freigeben möchten.
    • [SERVICE_ACCOUNT_EMAIL] ist die E-Mail-Adresse des Dienstkontos in dem Projekt, für das Sie Typen freigeben möchten.

    Beispiel:

    gcloud projects add-iam-policy-binding database-images \
        --member serviceAccount:123456789012@cloudservices.gserviceaccount.com  \
        --role roles/deploymentmanager.typeViewer

    API

    Stellen Sie in der API eine POST-Anfrage an die folgende URL, wobei [PROJECT_ID] die ID des Projekts mit den Typen ist, die Sie freigeben möchten.

    POST https://cloudresourcemanager.googleapis.com/v1/projects/$[PROJECT_ID]:setIamPolicy
    

    Der Anfragetext soll eine Liste der Bindungen enthalten, die für dieses Projekt gelten sollen. Die Rolle roles/deploymentmanager.typeViewer muss Teil der Bindung sein. Beispiel:

    {
       "policy": {
           "version": "0",
           "bindings": [
           {
               "role": "roles/owner",
               "members": [
                   "user:example@gmail.com"
               ]
           },
           {
               "role": "roles/deploymentmanager.typeViewer",
               "members": [
                   "serviceAccount:123456789012@cloudservices.gserviceaccount.com"
               ]
           }
           ]
       }
    

    }

Typen aus anderen Projekten in Konfigurationen verwenden

Sobald Sie Zugriff auf die Typen haben, können Sie den Typ in Ihren Konfigurationen mit folgender Syntax festlegen. Für zusammengesetzte Typen verwenden Sie:

type: [PROJECT_ID]/composite:[TYPE]

Für Typanbieter verwenden Sie:

type: [PROJECT_ID]/[TYPE]:[COLLECTION]

Wobei:

  • [PROJECT_ID] ist die ID des Projekts, das den Typ besitzt.
  • [TYPE] ist der Name des Typanbieters oder des zusammengesetzten Typs.
  • [COLLECTION] ist die Ressource, die Sie erstellen möchten. Dies gilt nur für Basistypen. Weitere Informationen zum Festlegen von Basistypen finden Sie unter Typanbieter in einer Konfiguration aufrufen.

Wenn die Projekt-ID beispielsweise my-type-repository lautet, können Sie die folgende Typspezifikation angeben:

resources:
- name: a-special-vm
  type: my-type-repository/composite:autoscaled-igm
  properties:
    ...

Nutzern das Auflisten und Aufrufen von Typen erlauben

Wenn Sie dem Dienstkonto des Projekts die Rolle deploymentmanager.typeViewer zuweisen, kann das Projekt diese Typen in Ihren Konfigurationen bereitstellen, Nutzer können diese Typen aber nicht aufrufen oder auflisten. Wenn Sie es bestimmten Nutzern ermöglichen möchten, Typen aufzurufen, müssen Sie jedem dieser Nutzer die Rolle deploymentmanager.typeViewer zuweisen.

Beispiel: Damit Jane den Befehl gcloud beta deployment-manager types list --project another-project für ein Projekt ausführen kann, das nicht ihr gehört, muss der Inhaber von another-project Jane die Rolle deploymentmanager.typeViewer zuweisen.

Über die gcloud CLI können Sie Jane die Rolle so zuweisen:

 gcloud projects add-iam-policy-binding another-project \
        --member user:jane@gmail.com --role deploymentmanager.typeViewer

Ausführliche Anleitungen zum Hinzufügen und Entfernen von Rollen für Nutzer finden Sie unter Zugriff auf Ressourcen erteilen, ändern und entziehen.

Weitere Informationen