Mit IAM den Cloud Deploy-Zugriff einschränken

Wie bei allen Google Cloud-Produkten wird Cloud Deploy durch Identity and Access Management geschützt Sie steuern, welche authentifizierten Nutzer und Dienstkonten welche Aktionen ausführen können. Aktionen.

In diesem Dokument werden einige Features von IAM beschrieben. Anleitungen zum Schutz Ihrer Anwendungsbereitstellungen, die mit Cloud Deploy verwaltet werden. Hier sind einige der konkreten Möglichkeiten, kann den Zugriff auf Aktionen und Ressourcen in Cloud Deploy einschränken:

Hinweis

Informationen zu erweiterten IAM-Features

Neben Rollen und Berechtigungen Cloud Deploy verwendet die folgenden IAM-Features , um diese Kontrollmöglichkeiten bereitzustellen:

Informationen zu IAM-Richtlinien

Eine IAM-Richtlinie ist eine Sammlung von Bindungen und Metadaten. Die Rollenbindung weist einem oder mehreren Hauptkonten (Nutzer, Gruppen oder Dienstkonten) eine einzelne Rolle sowie alle kontextspezifischen Bedingungen zu, die steuern, ob die Bindung effektiv wird.

Weitere Informationen zu IAM-Richtlinien finden Sie unter Informationen zu Richtlinien.

Informationen zu IAM-Bedingungen

Mit IAM-Bedingungen können Sie Folgendes tun: Steuerung. Zugriff auf Cloud Deploy-Ressourcen und -Aktionen basierend auf Bedingungen, die zur Laufzeit berechnet werden. Beispiel: Sie können eine Werbeaktion auf ein bestimmtes Ziel beschränken, sodass sie nur während eines bestimmten Zeitfensters zulässig ist.

Informationen zu API-Attributen

Wenn Sie IAM-Bedingungen erstellen, können Sie API-Attribute zum Abrufen der Laufzeit Informationen zu einer Anfrage. Sie können beispielsweise ein API-Attribut verwenden, um den Namen der Ressource, für die die Anfrage bestimmt ist. Dann können Sie es mit den Ressource oder Ressourcen, auf die das Hauptkonto Zugriff hat.

Detaillierten Zugriff über erweiterte IAM-Features gewähren

Mit diesen erweiterten IAM-Features können Sie den Zugriff auf auf bestimmte Ressourcen und bestimmte Ressourcentypen anwenden.

Mit den Verfahren in diesem Abschnitt wird Zugriff auf bestimmte Ressourcen (Ziele, Lieferpipelines) gewährt. Sie können auch den Zugriff auf Projektebene gewähren. Dieser umfasst alle Lieferpipelines oder alle Ziele im jeweiligen Projekt. Eine IAM-Richtlinie für ein Projekt legen Sie mit dem gcloud projects set-iam-policy-Befehl fest:

gcloud projects set-iam-policy PROJECT_ID POLICY_FILE

Zugriff auf eine bestimmte Lieferpipeline gewähren

Sie können Berechtigungen für ein Hauptkonto erteilen, um Lieferpipelines zu erstellen, zu ändern oder zu löschen. Dazu müssen Sie nur eine entsprechende Rolle zuweisen. Manchmal möchten Sie einem Hauptkonto einen solchen Zugriff für eine oder mehrere bestimmte Pipelines gewähren.

Verwenden Sie dazu Rollenbindungen, um die roles/clouddeploy.developer-Rolle an dieses Hauptkonto zu binden. Geben Sie dann beim Anwenden der Richtlinie (mit setIamPolicy) an, welcher Lieferpipeline der Zugriff gewährt werden soll.

So gewähren Sie Zugriff auf eine bestimmte Lieferpipeline:

  1. Erstellen Sie eine Richtliniendatei mit folgendem Code: Bindung:

    bindings:
    - role: roles/clouddeploy.developer
      members:
      - user:fatima@example.com
    

    Im obigen Beispiel wird die Rolle einem Nutzer zugewiesen, aber Sie können die Rolle auch zuweisen. an eine Gruppe oder ein Dienstkonto.

  2. Rufen Sie folgenden Befehl auf, um die Richtliniendatei auf eine bestimmte Lieferpipeline anzuwenden:

    gcloud deploy delivery-pipelines set-iam-policy --delivery-pipeline=PIPELINE_NAME --region=REGION POLICY_FILE
    

Zugriff zum Konfigurieren eines bestimmten Ziels gewähren

Wenn Sie einem Hauptkonto Zugriff auf ein bestimmtes Ziel gewähren möchten, können Sie Folgendes verwenden: Rollenbindungen Binden Sie dazu die roles/clouddeploy.operator mit diesem Hauptkonto, wenn Sie das Richtlinie (mit setIamPolicy), für welches Ziel der Zugriff gewährt wird.

Mit Zugriff auf das spezifische Ziel kann das Hauptkonto Änderungen vornehmen und löschen Sie dieses Ziel.

  1. Erstellen Sie eine Richtliniendatei mit folgendem Code: Bindung:

    bindings:
    - role: roles/clouddeploy.operator
      members:
      - group:cd_operators@example.com
    

    Im obigen Beispiel wird die Rolle einer Gruppe zugewiesen. Sie können die Rolle aber auch einem Nutzer oder einem Dienstkonto zuweisen.

  2. Rufen Sie folgenden Befehl auf, um die Richtliniendatei auf ein bestimmtes Ziel anzuwenden:

    gcloud deploy targets set-iam-policy TARGET --region=REGION POLICY_FILE
    

Berechtigungen zum Hochstufen eines Releases auf ein bestimmtes Ziel erteilen

Bei diesem Verfahren wird davon ausgegangen, dass bereits eine Richtlinie vorhanden ist, die die Rolle an für das Prinzipal. Hier fügen wir eine Bedingung hinzu, die das Ziel angibt:

  1. Erstellen Sie eine Richtliniendatei mit folgender Bindung:

    bindings:
    - role: roles/clouddeploy.operator
      members:
      - serviceAccount:prod_operator@project-12345.iam.gserviceaccount.com
      condition:
        expression: api.getAttribute("clouddeploy.googleapis.com/rolloutTarget", "") == "prod"
        title: Deploy to prod
    

    In dieser Rollenbindung nimmt condition ein Schlüssel/Wert-Paar auf, wobei der Schlüssel expression und der Wert ein CEL-Ausdruck ist. Dieser Ausdruck verweist auf eine Reihe kontextbezogener Attribute zur Anfrage und wird als boolescher Wert ausgewertet.

    In diesem Fall wird der Ausdruck ausgewertet, sobald das Hauptkonto versucht, die Version hochzustufen, um zu bestätigen, dass das Hochstufungsziel mit dem Ziel im Ausdruck übereinstimmt.

    Der Ausdruck verwendet das API-Attribut clouddeploy.googleapis.com/rolloutTarget. Dies ist das Ziel, zu dem das Hauptkonto hochstufen möchte. Der Ausdruck vergleicht es mit dem Ziel, für das das Hauptkonto Hochstufungszugriff erhalten hat.

  2. Legen Sie die Bindung für eine bestimmte Lieferpipeline fest:

    gcloud deploy delivery-pipelines set-iam-policy PIPELINE_NAME --region=REGION POLICY_FILE
    

    Wenn Sie diese Bindung für alle Lieferpipelines festlegen möchten, legen Sie sie auf der Projektebene fest:

    gcloud projects set-iam-policy PROJECT POLICY_FILE
    

Berechtigungen zum Genehmigen von Rollouts für ein bestimmtes Ziel erteilen

Die Bindung in diesem Abschnitt gewährt einem Hauptkonto die Berechtigung zum Genehmigen von Rollouts für eine Pipeline und enthält eine Bedingung, die die Berechtigung für das prod-Ziel anwendet.

  1. Erstellen Sie eine Richtliniendatei mit folgender Bindung:

    bindings:
    - role: roles/clouddeploy.approver
      members:
      - serviceAccount:prod_operator@project-12345.iam.gserviceaccount.com
      condition:
        expression: api.getAttribute("clouddeploy.googleapis.com/rolloutTarget", "") == "prod"
        title: Deploy to prod
    

    In dieser Rollenbindung nimmt condition ein Schlüssel/Wert-Paar auf, wobei der Schlüssel expression und der Wert ein CEL-Ausdruck ist. Der Ausdruck verweist auf eine Reihe kontextbezogener Attribute zur Anfrage und wird als boolescher Wert ausgewertet.

    In diesem Fall wird der Ausdruck ausgewertet, sobald das Hauptkonto versucht, den Rollout zu genehmigen, um zu bestätigen, dass das Ziel mit dem Ziel im Ausdruck übereinstimmt.

    Der Ausdruck verwendet das API-Attribut clouddeploy.googleapis.com/rolloutTarget, das Ziel des Rollouts, und vergleicht es mit dem Ziel, für das das Hauptkonto Zugriff hat. Das clouddeploy.googleapis.com/rolloutTarget-Attribut ist das einzige API-Attribut, das von Cloud Deploy unterstützt wird.

  2. Legen Sie die Bindung für eine bestimmte Lieferpipeline fest:

    gcloud deploy delivery-pipelines set-iam-policy PIPELINE_NAME --region=REGION POLICY_FILE
    

    Wenn Sie diese Bindung für alle Lieferpipelines festlegen möchten, legen Sie sie auf der Projektebene fest:

    gcloud projects set-iam-policy PROJECT POLICY_FILE
    

Berechtigungen zum Hochstufen eines Releases während eines bestimmten Zeitfensters erteilen

Die Bindung in diesem Abschnitt gewährt einem Hauptkonto die Berechtigung zum Hochstufen von Releases für eine Pipeline und enthält eine Bedingung, die das Zeitfenster angibt, während dem die Bindung wirksam ist.

  1. Erstellen Sie eine Richtliniendatei mit folgender Bindung:

    bindings:
    - role: roles/clouddeploy.operator
      members:
      - serviceAccount:prod_operator@project-12345.iam.gserviceaccount.com
      condition:
        expression: request.time.getDayOfWeek("America/Los_Angeles") > 0 && request.time.getDayOfWeek("America/Los_Angeles") < 6
        title: Promote during safe window
    

    In dieser Rollenbindung nimmt condition ein Schlüssel/Wert-Paar auf, wobei der Schlüssel expression und der Wert ein CEL-Ausdruck ist. Der Ausdruck verweist auf eine Reihe kontextbezogener Attribute zur Anfrage und wird als boolescher Wert ausgewertet. Mit diesem Ausdruck wird überprüft, die Anfragezeit von Montag bis Freitag liegt.

    In diesem Fall wird der Ausdruck ausgewertet, sobald das Hauptkonto versucht, den Release hochzustufen, um zu bestätigen, dass das Hochstufungsziel mit dem Ziel im Ausdruck übereinstimmt.

  2. Legen Sie die Bindung für eine bestimmte Lieferpipeline fest:

    gcloud deploy delivery-pipelines set-iam-policy PIPELINE_NAME --region=REGION POLICY_FILE
    

    Wenn Sie diese Bindung für alle Lieferpipelines festlegen möchten, legen Sie sie auf der Projektebene fest:

    gcloud projects set-iam-policy PROJECT POLICY_FILE
    

Berechtigungen zum Genehmigen von Rollouts während eines bestimmten Zeitfensters erteilen

Die Bindung in diesem Abschnitt gewährt einem Hauptkonto die Berechtigung zur Genehmigung von Rollouts und enthält eine Bedingung, die das Zeitfenster angibt, während dem die Bindung wirksam ist.

  1. Erstellen Sie eine Richtliniendatei mit folgender Bindung:

    bindings:
    - role: roles/clouddeploy.approver
      members:
      - serviceAccount:prod_operator@project-12345.iam.gserviceaccount.com
      condition:
        expression: request.time.getDayOfWeek("America/Los_Angeles") > 0 && request.time.getDayOfWeek("America/Los_Angeles") < 6
        title: Approve during safe window
    

    In dieser Rollenbindung nimmt condition ein Schlüssel/Wert-Paar, auf wobei der Schlüssel expression und der Wert ein CEL-Ausdruck ist, der auf eine Reihe kontextualer Attribute zur Anfrage verweist. Die Ausgabe ist ein boolescher Wert. Mit diesem Ausdruck wird überprüft, die Anfragezeit von Montag bis Freitag liegt.

    In diesem Fall wird der Ausdruck ausgewertet, sobald das Hauptkonto versucht, den Rollout zu genehmigen, um zu bestätigen, dass das Rollout-Ziel mit dem Ziel im Ausdruck übereinstimmt.

  2. Legen Sie die Bindung für eine bestimmte Lieferpipeline fest:

    gcloud deploy delivery-pipelines set-iam-policy PIPELINE_NAME --region=REGION POLICY_FILE
    

    Wenn Sie diese Bindung für alle Lieferpipelines festlegen möchten, legen Sie sie auf der Projektebene fest:

    gcloud projects set-iam-policy PROJECT POLICY_FILE
    

Berechtigungen zum Wiederholen eines Jobs basierend auf dem Jobtyp gewähren

Die Bindung in diesem Abschnitt gewährt einem Hauptkonto die Berechtigung, einen Cloud Deploy-Job auf Basis des Jobtyps

  1. Erstellen Sie eine Richtliniendatei mit folgender Bindung:

    bindings:
    - role: roles/clouddeploy.operator
      members:
      - serviceAccount:prod_operator@project-12345.iam.gserviceaccount.com
      condition:
        expression: api.getAttribute("clouddeploy.googleapis.com/jobType", "") == "deploy"
        title: Retry deploy job
    

    In dieser Rollenbindung nimmt condition ein Schlüssel/Wert-Paar auf, wobei der Schlüssel expression und der Wert ein CEL-Ausdruck ist. Der Ausdruck verweist auf eine Reihe kontextbezogener Attribute zur Anfrage und wird als boolescher Wert ausgewertet.

    In diesem Fall wird der Ausdruck ausgewertet, wenn das Hauptkonto versucht, es noch einmal zu versuchen. des Jobs, um zu bestätigen, dass die Arten von Dienstleistungen mit der Art der Dienstleistung in der Ausdruck.

    Der Ausdruck verwendet das API-Attribut clouddeploy.googleapis.com/jobType, das kann entweder deploy oder verify sein.

  2. Legen Sie die Bindung für eine bestimmte Lieferpipeline fest:

    gcloud deploy delivery-pipelines set-iam-policy PIPELINE_NAME --region=REGION POLICY_FILE
    

    Wenn Sie diese Bindung für alle Lieferpipelines festlegen möchten, legen Sie sie auf der Projektebene fest:

    gcloud projects set-iam-policy PROJECT POLICY_FILE