Organisationsrichtlinie mit Tags festlegen

Mit Tags können Sie Richtlinien auf Basis der Bedingung festlegen, ob eine Ressource ein bestimmtes Tag hat. Mit Tags und der bedingten Erzwingung von Organisationsrichtlinien können Sie die Ressourcen in Ihrer Hierarchie zentral steuern.

Hinweis

Weitere Informationen zu Tags und ihrer Funktionsweise finden Sie in der Übersicht zu Tags.

Eine ausführliche Anleitung zur Verwendung von Tags finden Sie unter Tags erstellen und verwalten.

Organisationsrichtlinie mit Tags festlegen

Mithilfe von Tags können Sie bestimmen, wo eine Organisationsrichtlinie wirksam werden soll. Dazu müssen Sie eine Bedingung in der YAML-Datei der Organisationsrichtlinie angeben. Sie können die Bedingung so festlegen, dass sie mit einem bestimmten Tag-Schlüssel/Wert-Paar übereinstimmt. Dies setzt voraus, dass ein bestimmter Tag-Wert festgelegt wird, damit die Organisationsrichtlinie erzwungen wird.

Beispiel einer Listenrichtlinie

Das folgende Beispiel zeigt, wie Sie eine Organisationsrichtliniendatei festlegen, die die Einschränkung gcp.resourceLocations erzwingt. Diese Organisationsrichtlinie verwendet sowohl bedingte als auch bedingungsfreie Werte, die in derselben Richtliniendatei festgelegt sind.

Console

So legen Sie die Organisationsrichtlinie fest:

  1. Öffnen Sie in der Cloud Console die Seite Organisationsrichtlinien.

    Zur Seite „Organisationsrichtlinien“

  2. Klicken Sie oben auf der Seite auf Projektauswahl.

  3. Wählen Sie in der Projektauswahl das Projekt aus, für das Sie die Organisationsrichtlinie festlegen möchten.

  4. Wählen Sie auf der Seite Organisationsrichtlinien eine Einschränkung aus der Liste aus. Die Seite Richtliniendetails für diese Einschränkung sollte angezeigt werden.

  5. Zum Anpassen der Organisationsrichtlinie für diese Ressource klicken Sie auf Bearbeiten.

  6. Wählen Sie auf der Seite Bearbeiten die Option Anpassen aus.

  7. Wählen Sie unter Richtlinienerzwingung eine Erzwingungsoption aus:

    • Wählen Sie Mit übergeordneter Ressource zusammenführen aus, um die Organisationsrichtlinien zusammenzuführen und zu evaluieren. Weitere Informationen zur Übernahme und zur Ressourcenhierarchie finden Sie unter Informationen zu Evaluierungen der Hierarchie.

    • Wählen Sie Ersetzen aus, um Richtlinien zu überschreiben, die von einer übergeordneten Ressource übernommen wurden.

  8. Klicken Sie auf Regel hinzufügen.

  9. Wählen Sie unter Richtlinienwerte aus, ob diese Organisationsrichtlinie alle Werte zulassen, alle Werte ablehnen oder einen benutzerdefinierten Satz von Werten angeben soll.

    • Welche spezifischen Werte von der Richtlinie akzeptiert werden, hängt vom Dienst ab, für den die Richtlinie gilt. Eine Liste der Einschränkungen und der akzeptierten Werte finden Sie unter Einschränkungen für Organisationsrichtlinien.
  10. Klicken Sie optional auf Bedingung hinzufügen, um die Organisationsrichtlinie von einem Tag abhängig zu machen.

    1. Geben Sie im Feld Titel einen Namen für die Bedingung ein.

    2. Geben Sie im Feld Beschreibung eine Beschreibung für die Bedingung ein. Die Beschreibung enthält Kontext zu den erforderlichen Tags und deren Auswirkungen auf Ressourcen.

    3. Sie können den Builder für IAM-Bedingungen verwenden, um eine Bedingung zu erstellen, für die ein bestimmtes Tag erforderlich ist, damit die Einschränkung wirksam wird.

      1. Wählen Sie im Drop-down-Menü Bedingungstyp die Option Tag aus.

      2. Wählen Sie den Operator für Ihre Bedingung aus. Um ein ganzes Tag abzugleichen, verwenden Sie den Operator Matches. Verwenden Sie zum Abgleich eines Tag-Schlüssels und eines Tag-Werts den Operator Matches ID

      3. Wenn Sie den Operator Übereinstimmungen ausgewählt haben, geben Sie den Namen des Tags mit dem Wert ein. Wenn Sie den Operator Übereinstimmungs-ID ausgewählt haben, geben Sie die Schlüssel- und Wert-IDs ein.

      4. Sie können mehrere Bedingungen erstellen, indem Sie auf Hinzufügen klicken. Wenn Sie eine weitere Bedingung hinzufügen, können Sie die bedingte Logik so einstellen, dass sie alle erfordert, indem Sie auf Und umschalten. Sie können die bedingte Logik festlegen, dass nur eine der Bedingungen erfüllt sein muss, indem Sie auf Oder umschalten.

      5. Sie können einen Ausdruck löschen, indem Sie auf das große X rechts neben den Bedingungsfeldern klicken.

      6. Wenn Sie mit der Bearbeitung der Bedingungen fertig sind, klicken Sie auf Speichern.

      Die folgende Abbildung zeigt eine Beispielkonfiguration einer Organisationsrichtlinie, die Bedingungen enthält.

      Beispiel für die UI der Organisationsrichtlinienbedingungen.

    4. Mit dem Bedingungseditor können Sie einen bedingten Ausdruck programmatisch erstellen. Außerdem wird ein programmatisches Rendering Ihrer aktuellen Bedingungen dargestellt.

      1. Mit dem Bedingungseditor können Sie den logischen Operator ! anwenden. Mit der Abfrage !resource.matchTag('ORGANIZATION_ID/location', 'us-west1') würde die Einschränkung der Organisationsrichtlinie beispielsweise auf jede Ressource angewendet werden, die nicht das Tag us-west1 hat.
  11. Klicken Sie auf Speichern, um den Vorgang abzuschließen und die Organisationsrichtlinie anzuwenden.

gcloud

Legen Sie die Organisationsrichtlinie mit dem folgenden Befehl fest:

gcloud org-policies set-policy POLICY_PATH

Dabei ist POLICY_PATH der vollständige Pfad zur JSON-Datei der Organisationsrichtlinie, die in etwa so aussehen sollte:

{
  "name":"RESOURCE_TYPE/RESOURCE_ID/policies/gcp.resourceLocations",
  "spec":{
    "rules":[
       {
        // As there is no condition specified, this allowedValue is enforced
        // unconditionally.
        "values":{
          "allowedValues": ["us-east1-locations"]
        },
      },
     {
        // This condition applies to the values block.
        "condition":{
          "expression":"resource.matchTag('ORGANIZATION_ID/location', 'us-west1')"
        },
        "values":{
          "allowedValues": ["us-west1-locations"]
        }
      }
    ]
  }
}

Wobei:

  • RESOURCE_TYPE ist organizations, folders oder projects.

  • RESOURCE_ID ist je nach Ressourcentyp, der in RESOURCE_TYPE angegeben ist, Ihre Organisations-ID, Ordner-ID, Projekt-ID oder Projektnummer.

  • ORGANIZATION_ID ist die übergeordnete Organisation Ihres Tag-Schlüssels.

Bei der obigen Organisationsrichtlinie wird für die Ressource und alle untergeordneten Ressourcen die Einschränkung gcp.resourceLocations erzwungen, wobei für allowedValues nur us-east1-locations zulässig ist. Für jede dieser Ressourcen mit dem Tag location: us-west1 wird die Einschränkung gcp.resourceLocations erzwungen, wobei allowedValues den Wert us-east1-locations und us-west1-locations hat.

Auf diese Weise können sowohl bedingte als auch bedingungsfreie Wertesätze für eine Einschränkung in einer einzigen Organisationsrichtlinie erzwungen werden.

Beispiel einer booleschen Richtlinie

Das folgende Beispiel zeigt, wie Sie eine Organisationsrichtliniendatei festlegen, die die Einschränkung compute.disableSerialPortAccess erzwingt. Diese Organisationsrichtlinie gibt an, dass alle seriellen Ports für Ressourcen zugänglich sind. Sie verwendet jedoch eine Bedingung, um den Zugriff auf die seriellen Ports nur auf Ressourcen mit dem entsprechenden Tag einzuschränken.

Console

So legen Sie die Organisationsrichtlinie fest:

  1. Öffnen Sie in der Cloud Console die Seite Organisationsrichtlinien.

    Zur Seite „Organisationsrichtlinien“

  2. Klicken Sie oben auf der Seite auf Projektauswahl.

  3. Wählen Sie in der Projektauswahl das Projekt aus, für das Sie die Organisationsrichtlinie festlegen möchten.

  4. Wählen Sie auf der Seite Organisationsrichtlinien eine Einschränkung aus der Liste aus. Die Seite Richtliniendetails für diese Einschränkung sollte angezeigt werden.

  5. Zum Anpassen der Organisationsrichtlinie für diese Ressource klicken Sie auf Bearbeiten.

  6. Wählen Sie auf der Seite Bearbeiten die Option Anpassen aus.

  7. Klicken Sie auf Regel hinzufügen.

  8. Wählen Sie unter Erzwingung aus, ob die Erzwingung dieser Organisationsrichtlinie aktiviert oder deaktiviert werden soll.

  9. Klicken Sie optional auf Bedingung hinzufügen, um die Organisationsrichtlinie von einem Tag abhängig zu machen. Wenn Sie einer Organisationsrichtlinie eine bedingte Regel hinzufügen, müssen Sie mindestens eine bedingungsfreie Regel hinzufügen oder die Richtlinie kann nicht gespeichert werden.

    1. Geben Sie im Feld Titel einen Namen für die Bedingung ein.

    2. Geben Sie im Feld Beschreibung eine Beschreibung für die Bedingung ein. Die Beschreibung enthält Kontext zu den erforderlichen Tags und deren Auswirkungen auf Ressourcen.

    3. Sie können den Builder für IAM-Bedingungen verwenden, um eine Bedingung zu erstellen, für die ein bestimmtes Tag erforderlich ist, damit die Einschränkung wirksam wird.

      1. Wählen Sie im Drop-down-Menü Bedingungstyp die Option Tag aus.

      2. Wählen Sie den Operator für Ihre Bedingung aus. Um ein ganzes Tag abzugleichen, verwenden Sie den Operator Matches. Verwenden Sie zum Abgleich eines Tag-Schlüssels und eines Tag-Werts den Operator Matches ID

      3. Wenn Sie den Operator Übereinstimmungen ausgewählt haben, geben Sie den Namen des Tags mit dem Wert ein. Wenn Sie den Operator Übereinstimmungs-ID ausgewählt haben, geben Sie die Schlüssel- und Wert-IDs ein.

      4. Sie können mehrere Bedingungen erstellen, indem Sie auf Hinzufügen klicken. Wenn Sie eine weitere Bedingung hinzufügen, können Sie die bedingte Logik so einstellen, dass sie alle erfordert, indem Sie auf Und umschalten. Sie können die bedingte Logik festlegen, dass nur eine der Bedingungen erfüllt sein muss, indem Sie auf Oder umschalten.

      5. Sie können einen Ausdruck löschen, indem Sie auf das große X rechts neben den Bedingungsfeldern klicken.

      6. Wenn Sie mit der Bearbeitung der Bedingungen fertig sind, klicken Sie auf Speichern.

      7. Eine Organisationsrichtlinie mit einer erzwungenen Bedingung muss mindestens eine bedingungsfreie Regel haben. Klicken Sie auf Regel hinzufügen und legen Sie fest, ob die Erzwingung dieser Organisationsrichtlinie standardmäßig aktiviert oder deaktiviert sein soll.

      Die folgende Abbildung zeigt eine Beispielkonfiguration einer Organisationsrichtlinie, die Bedingungen enthält.

      Beispiel für die UI der Organisationsrichtlinienbedingungen.

    4. Mit dem Bedingungseditor können Sie einen bedingten Ausdruck programmatisch erstellen. Außerdem wird ein programmatisches Rendering Ihrer aktuellen Bedingungen dargestellt.

      1. Mit dem Bedingungseditor können Sie den logischen Operator ! anwenden. Mit der Abfrage !resource.matchTag('ORGANIZATION_ID/location', 'us-west1') würde die Einschränkung der Organisationsrichtlinie beispielsweise auf jede Ressource angewendet werden, die nicht das Tag us-west1 hat.
  10. Klicken Sie auf Speichern, um den Vorgang abzuschließen und die Organisationsrichtlinie anzuwenden.

gcloud

Legen Sie die Organisationsrichtlinie mit dem folgenden Befehl fest:

gcloud org-policies set-policy POLICY_PATH

Dabei ist POLICY_PATH der vollständige Pfad zur JSON-Datei der Organisationsrichtlinie, die in etwa so aussehen sollte:

{
  "name": "RESOURCE_TYPE/RESOURCE_ID/policies/gcp.disableSerialPortAccess",
  "spec": {
    "rules": [
      {
        "condition": {
          "expression": "resource.matchTag(\"ORGANIZATION_ID/disableSerialAccess\", \"yes\")"
        },
        "enforce": true
      },
      {
        "enforce": false
      }
    ]
  }
}

Wobei:

  • RESOURCE_TYPE ist organizations, folders oder projects.

  • RESOURCE_ID ist Ihre Organisations-ID, Ordner-ID, Projekt-ID oder Projektnummer.

  • ORGANIZATION_ID ist die übergeordnete Organisation Ihres Tag-Schlüssels.

Bei der obigen Organisationsrichtlinie wird für die Ressource und alle untergeordneten Ressourcen die Einschränkung gcp.disableSerialPortAccess erzwungen. Alle Ressourcen mit dem Tag disableSerialAccess: yes werden von der Organisationsrichtlinie abgelehnt. Für jede Ressource ohne das Tag disableSerialAccess: yes wird die Einschränkung nicht erzwungen.

Einschränkungen bedingt zu Organisationsrichtlinien hinzufügen

Sie können Tags verwenden, um Ressourcenrichtlinien basierend auf den angehängten Tags bedingt hinzuzufügen. Sie können innerhalb einer Organisationsrichtlinie mehrere Bedingungen hinzufügen. Damit können Sie genau steuern, auf welche Ressourcen die Organisationsrichtlinie angewendet werden soll.

Common Expression Language bzw. CEL ist die Ausdruckssprache, die zur Angabe bedingter Ausdrücke verwendet wird. Ein bedingter Ausdruck besteht aus einer oder mehreren Anweisungen, die mithilfe logischer Operatoren (&&, || oder !) verknüpft werden. Weitere Informationen finden Sie in der CEL-Spezifikation und der zugehörigen Sprachdefinition.

Mit einer Organisationsrichtlinie können Sie die Standorte einschränken, an denen Ressourcen basierend auf den auf diese Ressourcen angewendeten Tags erstellt werden können. Erstellen Sie dazu eine Organisationsrichtlinie, die die Einschränkung gcp.resourceLocations erzwingt und verwenden Sie Bedingungen, um die Erzwingung auf bestimmte Ressourcen zu beschränken.

Erstellen Sie zuerst die temporäre Datei /tmp/policy.yaml, die Ihre Organisationsrichtlinie enthält:

name: organizations/ORGANIZATION_ID/policies/gcp.resourceLocations
spec:
    rules:
    - condition:
        expression: resource.matchTag("ORGANIZATION_ID/location", "us-east")
      values:
        allowedValues:
        - in:us-east1-locations
    - condition:
        expression: resource.matchTag("ORGANIZATION_ID/location", "us-west")
      values:
        allowedValues:
        - in:us-west1-locations
    - values:
        deniedValues:
        - in:asia-south1-locations

Dabei ist ORGANIZATION_ID die übergeordnete Organisation des Tag-Schlüssels.

Im obigen Beispiel wird jede Ressource, an die das Tag location: us-east angehängt ist, auf Standorte innerhalb der Wertegruppe us-east1-locations beschränkt. Jede Ressource, an die das Tag location: us-west angehängt ist, ist auf Standorte innerhalb der Wertegruppe us-west1-locations beschränkt. Alle Ressourcen in der Organisation werden von Standorten innerhalb der Wertgruppe asia-south1-locations blockiert.

Legen Sie die Richtlinie dann mit dem Befehl set-policy fest:

gcloud org-policies set-policy /tmp/policy.yaml

Übernahme von Organisationsrichtlinien

Listeneinschränkungen der Organisationsrichtlinie, die mithilfe von Tags aktiviert werden, werden gemäß den normalen Regeln für die Übernahme mit der vorhandenen Organisationsrichtlinie zusammengeführt. Diese bedingten Regeln gelten nur, wenn die Bedingung erfüllt ist.

Boolesche Einschränkungen der Organisationsrichtlinie, die mithilfe von Tags aktiviert werden, überschreiben die vorhandene Organisationsrichtlinie. Da boolesche Richtlinien nur zwei Zustände haben können, wahr oder falsch, müssen alle bedingten Anweisungen das Gegenteil der nicht bedingten Anweisung sein, um zu verhindern, dass mehrere Tags miteinander im Konflikt stehen.

Stellen Sie sich beispielsweise eine Organisationsrichtlinie vor, die die Einschränkung disableSerialPortAccess erzwingt. Der bedingungsfreie Wert, der verwendet wird, wenn keine Bedingungen ihn überschreiben, ist wahr. Daher müssen alle anderen bedingten Anweisungen für diese Richtlinie auf falsch gesetzt werden, damit keine Konflikte auftreten.

Nächste Schritte

Weitere Informationen zur Verwendung von Tags finden Sie auf der Seite Tags erstellen und verwalten.

Weitere Informationen zum Erstellen und Verwalten von Einschränkungen für Organisationsrichtlinien finden Sie unter Einschränkungen verwenden.