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.

Hinweise

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.

Die meisten Organisationsrichtlinien werden beim Erstellen oder Aktualisieren einer Ressource ausgewertet und erzwungen. Es ist nicht möglich, ein Tag an eine Ressource anzuhängen, bevor sie erstellt wurde. Daher können bedingte Organisationsrichtlinien keine Tags für eine Ressource während der Erstellung auswerten. Dies gilt nur für Tags, die von übergeordneten Ressourcen übernommen werden.

Tags werden für Organisations-, Ordner- und Projektressourcen ausgewertet. Die meisten Ressourcen in der Ressourcenhierarchie unterhalb von Projekten werden mit bestimmten Ausnahmen wie Cloud Run-Dienste nicht durch Organisationsrichtlinien ausgewertet. Informationen zu bestimmten Einschränkungen für Organisationsrichtlinien finden Sie unter Einschränkungen für Organisationsrichtlinien.

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. Wechseln Sie in der Google Cloud Console zur Seite Organisationsrichtlinien.

    Zu den Organisationsrichtlinien

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

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

  4. Klicken Sie zum Aktualisieren der Organisationsrichtlinie für diese Ressource auf Richtlinie verwalten.

  5. Wählen Sie auf der Seite Richtlinie bearbeiten die Option Richtlinie der übergeordneten Ressource überschreiben aus.

  6. 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.

  7. Klicken Sie auf Regel hinzufügen.

  8. 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.
  9. 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 Feld 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.
  10. Klicken Sie auf Richtlinie festlegen, um die Richtlinie zu erzwingen.

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. Wechseln Sie in der Google Cloud Console zur Seite Organisationsrichtlinien.

    Zu den Organisationsrichtlinien

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

  3. 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.

  4. Klicken Sie zum Aktualisieren der Organisationsrichtlinie für diese Ressource auf Richtlinie verwalten.

  5. Wählen Sie auf der Seite Richtlinie bearbeiten die Option Richtlinie der übergeordneten Ressource überschreiben aus.

  6. Klicken Sie auf Regel hinzufügen.

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

  8. 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, dürfen Sie nur eine unbedingte Regel hinzufügen. Andernfalls kann die Richtlinie 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 Feld 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 darf nur eine unbedingte 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.
  9. 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

Nicht getaggte Ressourcen einschränken

Sie können Tags und bedingte Organisationsrichtlinien verwenden, um Ressourcen einzuschränken, die ein bestimmtes Tag nicht verwenden. Wenn Sie eine Organisationsrichtlinie für eine Ressource festlegen, die Dienste einschränkt und an das Vorhandensein eines Tags gebunden ist, können keine untergeordneten Ressourcen, die von dieser Ressource abgeleitet sind, verwendet werden, es sei denn, sie wurden getaggt. Auf diese Weise müssen Ressourcen gemäß Ihrem Governanceplan eingerichtet werden, bevor sie verwendet werden können.

Wenn Sie nicht getaggte Organisations-, Ordner- oder Projektressourcen einschränken möchten, können Sie beim Erstellen Ihrer Organisationsrichtlinie den logischen Operator ! in einer bedingten Abfrage verwenden.

Wenn Sie beispielsweise die Verwendung von sqladmin.googleapis.com nur in Projekten mit dem Tag sqladmin=enabled zulassen möchten, können Sie eine Organisationsrichtlinie erstellen, die sqladmin.googleapis.com in Projekten ohne das Tag sqladmin=enabled ablehnt.

  1. Erstellen Sie ein Tag, das angibt, ob die Ressourcen ordnungsgemäß Governance wurden. Sie können beispielsweise ein Tag mit dem Schlüssel sqlAdmin und dem Wert enabled erstellen, um festzulegen, dass diese Ressource die Verwendung der Cloud SQL Admin API zulassen soll. Beispiel:

    Tag-Schlüssel und -Wert erstellen

  2. Klicken Sie auf den Namen des neu erstellten Tags. Sie benötigen den Namespace-Namen des Tag-Schlüssels, der in den nächsten Schritten unter Tag-Schlüsselpfad aufgeführt ist, um eine Bedingung zu erstellen.

  3. Erstellen Sie auf Ebene der Organisationsressource eine Organisationsrichtlinie für Ressourcendienstnutzung einschränken, um den Zugriff auf die Cloud SQL Admin API zu verweigern. Beispiel:

    Organisationsrichtlinie zum Einschränken von Ressourcen erstellen

  4. Fügen Sie der obigen Organisationsrichtlinie eine Bedingung hinzu und geben Sie an, dass die Richtlinie erzwungen wird, wenn das Governance-Tag nicht vorhanden ist. Der logische NOT-Operator wird vom Builder für Bedingungen nicht unterstützt. Daher muss diese Bedingung im Bedingungseditor erstellt werden. Beispiel:

    Bedingte Organisationsrichtlinie erstellen

    !resource.matchTag("012345678901/sqlAdmin", "enabled")

Jetzt muss das Tag sqlAdmin=enabled an ein Projekt angehängt oder von diesem übernommen werden, damit Ihre Entwickler die Cloud SQL Admin API mit diesem Projekt verwenden können.

Ü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.