Typen projektübergreifend freigeben

Diese Seite beschreibt, wie Sie Typen und Typanbieter, die zu Ihrem Projekt gehören, 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.

Der Zugriff wird wie folgt eingerichtet: Ein Projektinhaber des Projekts, dem die Typen angehören, muss dem Dienstkonto des Projekts, das die Typen nutzen möchte, die Rolle deploymentmanager.typeViewer zuweisen. Die Rolle muss auch jenen Nutzern zugewiesen werden, die Typen aus einem anderen Projekt anzeigen und auflisten möchten.

Vorbereitung

Einschränkungen

Die Nutzung dieser Funktion unterliegt folgenden Einschränkungen:

  • Die Rolle roles/deploymentmanager.typeViewer ist derzeit eine Betaversion.
  • Sie können die Rolle deploymentmanager.typeViewer nur auf Projektebene vergeben.
  • Durch die Zuweisung der Rolle deploymentmanager.typeViewer erhalten auch alle Typen im jeweiligen Projekt die Berechtigungen. Es ist nicht möglich, die Freigabe auf einzelne Typen einzuschränken.
  • Es ist nicht möglich, diese Rolle allAuthenticatedUsers oder allUsers zuzuweisen.

Projektzugriff für Typennutzung zuweisen

Um Zugriff auf Typen zuzulassen, die zu einem anderen Projekt gehören, muss der Inhaber des betreffenden Projekts dem deploymentmanager.typeViewer des Projekts, das die Typen verwenden will, die Rolle deploymentmanager.typeViewer zuweisen.

  1. Wechseln Sie in der GCP Console auf die IAM-Seite des Projekts, das die Typen verwenden wird.

    Zur Seite "IAM"

  2. Wählen Sie bei Aufforderung Ihr Projekt aus der Liste aus.
  3. Suchen Sie nach dem Google API-Dienstkonto, dessen E-Mail-Adresse das folgende Format aufweist:

    [PROJECT_NUMBER]@cloudservices.gserviceaccount.com
    
  4. Notieren Sie die oben angeführte E-Mail-Adresse. Als Nächstes kann der Projektinhaber des Projekts, zu dem die gewünschten Images gehören, dem Google API-Dienstkonto die Rolle roles/deploymentmanager.typeViewer zuweisen.

    Konsole

    1. Während Sie sich weiterhin in Google Cloud Platform Console befinden, rufen Sie die IAM-Seite des Projekts auf, das die Typen enthält, die Sie freigeben möchten.

      Weiter 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 mit dem Befehlszeilentool gcloud eine Bindung an die Cloud 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 folgende URL, wobei [PROJECT_ID] die ID des Projekts ist, dessen Images Sie freigeben möchten.

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

    Der Anfragetext soll eine Liste der Bindungen, die für dieses Projekt gelten sollen, enthalten. Die Nutzerrolle roles/compute.imageUser sollte 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.gservbiceaccount.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] die ID des Projekts ist, das den Typ besitzt.
  • [TYPE] der Name des Typanbieters oder des zusammengesetzten Typs ist.
  • [COLLECTION] die Ressource ist, die Sie erstellen möchten. Dies gilt nur für Basistypen. Weitere Informationen zur Festlegung von Basistypen finden Sie unter Typanbieter in einer Konfiguration aufrufen.

Beispiel: Wenn die Projekt-ID my-type-repository ist, könnten Sie folgende Typspezifikation liefern:

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

Nutzern das Auflisten und Anzeigen von Typen erlauben

Wenn Sie dem Dienstkonto eines Projekts die Rolle deploymentmanager.typeViewer zuweisen, kann das Projekt diese Typen in Ihren Konfigurationen anbieten. Die Nutzer können diese Typen jedoch nicht auflisten oder anzeigen. Wenn Sie den Nutzern die Möglichkeit bieten möchten, Typen anzuzeigen, müssen Sie jedem Nutzer die Rolle deploymentmanager.typeViewer zuweisen.

Wenn Erika beispielsweise den Befehl gcloud beta deployment-manager types list --project another-project für ein Projekt ausführen möchte, das nicht ihr gehört, muss der Inhaber von another-project Erika die Rolle deploymentmanager.typeViewer zuweisen.

Mit dem gcloud-Tool können Sie Erika die Rolle wie folgt 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 für Projektmitglieder zuweisen, ändern und widerrufen.

Weitere Informationen

Hat Ihnen diese Seite weitergeholfen? Teilen Sie uns Ihr Feedback mit:

Feedback geben zu...

Cloud Deployment Manager-Dokumentation