Benutzerdefinierte Einschränkungen für Organisationsrichtlinien

Auf dieser Seite erfahren Sie, wie Sie benutzerdefinierte Einschränkungen des Organisationsrichtliniendienstes von Google Cloud verwenden, um bestimmte Vorgänge für die folgenden Cloud Storage for Firebase-Ressourcen einzuschränken:

  • firebasestorage.googleapis.com/DefaultBucket

Weitere Informationen zu Organisationsrichtlinien finden Sie unter Benutzerdefinierte Organisationsrichtlinien.

Informationen zu Organisationsrichtlinien und Einschränkungen

Mit dem Organisationsrichtliniendienst von Google Cloud können Sie die Ressourcen Ihrer Organisation zentral und programmatisch steuern. Als Administrator für Organisationsrichtlinien können Sie eine Organisationsrichtlinie definieren, also eine Reihe von Beschränkungen, die für Ressourcen von Google Cloud und nachfolgende Elemente dieser Ressourcen in der Ressourcenhierarchie von Google Cloud gelten. Sie können Organisationsrichtlinien auf Organisations-, Ordner- oder Projektebene erzwingen.

Die Organisationsrichtlinie bietet integrierte verwaltete Beschränkungen für verschiedene Dienste vonGoogle Cloud. Wenn Sie jedoch eine detailliertere, anpassbare Steuerung der spezifischen Felder wünschen, die in Ihren Organisationsrichtlinien beschränkt werden, können Sie auch benutzerdefinierte Beschränkungen erstellen und diese benutzerdefinierten Beschränkungen in einer Organisationsrichtlinie verwenden.

Übernahme von Richtlinien

Standardmäßig werden Organisationsrichtlinien von den Nachfolgerelementen der Ressourcen übernommen, für die Sie die Richtlinie erzwingen. Wenn Sie beispielsweise eine Richtlinie für einen Ordner erzwingen, erzwingt Google Cloud die Richtlinie für alle Projekte in dem Ordner. Weitere Informationen zu diesem Verhalten und zu dessen Änderung finden Sie unter Regeln für die Evaluierung der Hierarchie.

Da Cloud Storage for Firebase Dateien in zugrunde liegenden Cloud Storage-Buckets speichert, gelten alle Organisationsrichtlinien oder benutzerdefinierten Einschränkungen, die für Cloud Storage-Ressourcen erzwungen werden, auch für Ihre Cloud Storage for Firebase-Buckets.

Vorteile

  • Sicherheit und Governance: Erzwingen Sie eine zentrale organisatorische Kontrolle über die Bereitstellung von Cloud Storage-Buckets, um die Einhaltung von Datenstandort- und Kostenmanagement-Leitlinien zu gewährleisten.
  • Detaillierte Attributsteuerung: Schränken Sie die Erstellung von Standard-Buckets basierend auf bestimmten Ressourcenattributen wie storageClass oder location ein.

Beschränkungen

Bei der Verwendung benutzerdefinierter Organisationsrichtlinien mit Cloud Storage for Firebase gelten die folgenden Einschränkungen:

  • Keine rückwirkende Erzwingung: Neu erzwungene benutzerdefinierte Einschränkungen gelten nicht für vorhandene Ressourcen. Vorhandene Standard-Buckets werden nur ausgewertet, wenn sie aktualisiert werden. Wenn Sie vorhandene Ressourcen identifizieren möchten, die möglicherweise gegen eine Einschränkung verstoßen, können Sie Richtlinien im Probelaufmodus testen.
  • Einschränkungen der Zugriffssteuerung: Benutzerdefinierte Einschränkungen können keine Zugriffssteuerungslisten (ACLs) oder IAM-Richtlinien für Buckets einschränken.

Hinweis

  1. Wählen Sie in der Firebase-Konsole ein Firebase-Projekt aus oder erstellen Sie eines.

    Ihr Projekt muss Teil einer Organisation sein und Sie müssen Ihre Organisations-ID kennen.

  2. Wenn Sie benutzerdefinierte Einschränkungen über die Befehlszeile einrichten und erzwingen möchten, installieren Sie die Google Cloud CLI (gcloud). Benutzerdefinierte Organisationsrichtlinien können nicht mit der Firebase CLI verwaltet werden.

Erforderliche Rollen

Bitten Sie Ihren Administrator, Ihnen die IAM-Rolle Organization Policy Administrator (roles/orgpolicy.policyAdmin) für die Organisation zu gewähren, um die Berechtigungen zu erhalten, die Sie zum Verwalten von benutzerdefinierten Organisationsrichtlinien benötigen.

Cloud Storage for Firebase unterstützte Ressourcen

In der folgenden Tabelle sind die Cloud Storage for Firebase-Ressourcen aufgeführt, auf die Sie in benutzerdefinierten Einschränkungen verweisen können. Sie können auch auf unterstützte Cloud Storage-Ressourcen verweisen, da benutzerdefinierte Einschränkungen für diese Ressourcen auch für Cloud Storage for Firebase-Buckets gelten.

Ressource Unterstützte Felder
firebasestorage.googleapis.com/DefaultBucket
  • resource.location
  • resource.storageClass

Benutzerdefinierte Einschränkung einrichten

Eine benutzerdefinierte Beschränkung wird in einer YAML-Datei durch die Ressourcen, Methoden, Bedingungen und Aktionen definiert, die von dem Dienst unterstützt werden, für den Sie die Organisationsrichtlinie erzwingen. Bedingungen für Ihre benutzerdefinierten Einschränkungen werden mithilfe der Common Expression Language (CEL) definiert. Weitere Informationen zum Erstellen von Bedingungen in benutzerdefinierten Einschränkungen mit CEL finden Sie im Abschnitt „CEL“ unter Benutzerdefinierte Einschränkungen erstellen und verwalten.

Console

So erstellen Sie eine benutzerdefinierte Einschränkung:

  1. Rufen Sie in der Google Cloud Console die Seite Organisationsrichtlinien auf.

    Zu den Organisationsrichtlinien

  2. Wählen Sie in der Projektauswahl das Projekt aus, für das Sie die Organisationsrichtlinie festlegen möchten.
  3. Klicken Sie auf Benutzerdefinierte Einschränkung.
  4. Geben Sie im Feld Anzeigename einen menschenlesbaren Namen für die Einschränkung ein. Dieser Name wird in Fehlermeldungen verwendet und kann zur Identifizierung und Fehlerbehebung verwendet werden. Verwenden Sie keine personenidentifizierbaren Informationen oder vertraulichen Daten in Anzeigenamen, da diese in Fehlermeldungen angezeigt werden können. Dieses Feld kann bis zu 200 Zeichen enthalten.
  5. Geben Sie im Feld Einschränkungs-ID die gewünschte ID für die neue benutzerdefinierte Einschränkung ein. Eine benutzerdefinierte Einschränkung darf nur Buchstaben (einschließlich Groß- und Kleinbuchstaben) oder Ziffern enthalten, z. B. custom.restrictStorageClass. Dieses Feld kann bis zu 70 Zeichen enthalten, wobei das Präfix (custom.) nicht mitgezählt wird, z. B. organizations/123456789/customConstraints/custom.restrictStorageClass. Beziehen Sie weder personenidentifizierbare Informationen noch sensible Daten in die ID der Einschränkung ein, da sie in Fehlermeldungen preisgegeben werden könnten.
  6. Geben Sie im Feld Beschreibung eine menschenlesbare Beschreibung der Einschränkung ein. Diese Beschreibung wird als Fehlermeldung verwendet, wenn gegen die Richtlinie verstoßen wird. Geben Sie Details dazu an, warum der Richtlinienverstoß aufgetreten ist und wie er behoben werden kann. Beziehen Sie weder personenidentifizierbare Informationen noch sensible Daten in die Beschreibung ein, da sie in Fehlermeldungen preisgegeben werden könnten. Dieses Feld kann bis zu 2.000 Zeichen enthalten.
  7. Wählen Sie im Feld Ressourcentyp den Namen der REST-Ressource aus, die das Objekt und das Feld enthält, das Sie einschränken möchten, zum Beispiel firebasestorage.googleapis.com/DefaultBucket. Die meisten Ressourcentypen unterstützen bis zu 20 benutzerdefinierte Einschränkungen. Wenn Sie versuchen, weitere benutzerdefinierte Einschränkungen zu erstellen, schlägt der Vorgang fehl.
  8. Wählen Sie unter Methode erzwingen aus, ob die Einschränkung für eine REST-Methode CREATE oder sowohl für die Methoden CREATE als auch UPDATE erzwungen werden soll. (Hinweis: DefaultBucket unterstützt nur CREATE).
  9. Klicken Sie zum Definieren einer Bedingung auf Bedingung bearbeiten.
    1. Erstellen Sie im Bereich Bedingung hinzufügen eine CEL-Bedingung, die auf eine unterstützte Dienstressource verweist, z. B. resource.storageClass == 'STANDARD'. Dieses Feld kann bis zu 1.000 Zeichen enthalten. Weitere Informationen zur Verwendung von CEL finden Sie unter Common Expression Language.
    2. Klicken Sie auf Speichern.
  10. Wählen Sie unter Aktion aus, ob die ausgewertete Methode zugelassen oder abgelehnt werden soll, wenn die Bedingung erfüllt ist.

    Die Aktion „Ablehnen“ bedeutet, dass der Vorgang zum Erstellen oder Aktualisieren der Ressource blockiert wird, wenn die Bedingung als wahr ausgewertet wird.

    Die Aktion „Zulassen“ bedeutet, dass der Vorgang zum Erstellen oder Aktualisieren der Ressource nur zulässig ist, wenn die Bedingung als wahr ausgewertet wird. Alle anderen Fälle, die nicht explizit in der Bedingung aufgeführt sind, werden blockiert.

  11. Klicken Sie auf Einschränkung erstellen.

gcloud

  1. Zum Erstellen einer benutzerdefinierten Beschränkung erstellen Sie eine YAML-Datei im folgenden Format:
    name: organizations/ORGANIZATION_ID/customConstraints/custom.restrictStorageClass
    resourceTypes: firebasestorage.googleapis.com/DefaultBucket
    methodTypes:
      -   CREATE
    condition: "resource.storageClass == 'STANDARD'"
    actionType: DENY
    displayName: Restrict Standard Storage Class
    description: Deny creating buckets with STANDARD storage class.
  2. Nachdem Sie die YAML-Datei für eine neue benutzerdefinierte Beschränkung erstellt haben, müssen Sie sie einrichten, um sie für Organisationsrichtlinien in Ihrer Organisation verfügbar zu machen. Verwenden Sie zum Einrichten einer benutzerdefinierten Einschränkung den Befehl gcloud org-policies set-custom-constraint:
    gcloud org-policies set-custom-constraint CONSTRAINT_PATH

    Ersetzen Sie CONSTRAINT_PATH durch den vollständigen Pfad zu Ihrer benutzerdefinierten Einschränkungsdatei. Beispiel: /home/user/customconstraint.yaml.

  3. Prüfen Sie mit dem Befehl gcloud org-policies list-custom-constraints, ob die benutzerdefinierte Einschränkung vorhanden ist:
    gcloud org-policies list-custom-constraints --organization=ORGANIZATION_ID

Benutzerdefinierte Organisationsrichtlinie erzwingen

Sie können eine Beschränkung erzwingen, indem Sie eine Organisationsrichtlinie erstellen, die darauf verweist, und diese Organisationsrichtlinie dann auf eine Ressource vonGoogle Cloud anwenden.

Console

  1. Rufen Sie in der Google Cloud Console die Seite Organisationsrichtlinien auf.

    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 die gewünschte Einschränkung aus, um die Seite Richtliniendetails aufzurufen.
  4. Zum Konfigurieren der Organisationsrichtlinie für diese Ressource klicken Sie 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 im Abschnitt Erzwingung aus, ob diese Organisationsrichtlinie erzwungen werden soll oder nicht.
  8. Klicken Sie auf Probelaufrichtlinie festlegen, um die Organisationsrichtlinie im Probelaufmodus zu erzwingen. Weitere Informationen finden Sie unter Organisationsrichtlinien testen.
  9. Nachdem Sie geprüft haben, ob die Organisationsrichtlinie im Probelaufmodus wie vorgesehen funktioniert, legen Sie die Live-Richtlinie fest, indem Sie auf Richtlinie festlegen klicken.

gcloud

  1. Wenn Sie eine Organisationsrichtlinie mit booleschen Regeln erstellen möchten, erstellen Sie eine YAML-Richtliniendatei, die auf die Beschränkung verweist:
    name: projects/PROJECT_ID/policies/custom.restrictStorageClass
    spec:
      rules:
      -   enforce: true
    dryRunSpec:
      rules:
      -   enforce: true
  2. Führen Sie den folgenden Befehl mit dem Flag dryRunSpec aus, um die Organisationsrichtlinie im Probelaufmodus zu erzwingen:
    gcloud org-policies set-policy POLICY_PATH --update-mask=dryRunSpec
  3. Nachdem Sie überprüft haben, ob die Organisationsrichtlinie im Probelaufmodus wie vorgesehen funktioniert, legen Sie die Live-Richtlinie mit dem Befehl org-policies set-policy und dem Flag spec fest:
    gcloud org-policies set-policy POLICY_PATH --update-mask=spec

Benutzerdefinierte Organisationsrichtlinie testen

Im folgenden Beispiel werden eine benutzerdefinierte Einschränkung und eine Richtlinie erstellt, die verhindern, dass alle neu erstellten Standard-Buckets die Speicherklasse STANDARD verwenden. Sie können die Richtlinie testen, indem Sie versuchen, eine Aktion auszuführen, die durch die Richtlinie verhindert werden soll.

Einschränkung erstellen

  1. Speichern Sie die folgende Datei als constraint-restrict-storage-class.yaml:

    name: organizations/ORGANIZATION_ID/customConstraints/custom.restrictStorageClass
    resourceTypes:
    -   firebasestorage.googleapis.com/DefaultBucket
    methodTypes:
    -   CREATE
    condition: "resource.storageClass == 'STANDARD'"
    actionType: DENY
    displayName: Restrict Standard Storage Class
    description: Deny creating buckets with STANDARD storage class.
    

    Ersetzen Sie ORGANIZATION_ID durch Ihre Organisations-ID.

  2. Wenden Sie die Einschränkung an:

    gcloud org-policies set-custom-constraint ~/constraint-restrict-storage-class.yaml
    
  3. Prüfen Sie, ob die Einschränkung vorhanden ist:

    gcloud org-policies list-custom-constraints --organization=ORGANIZATION_ID
    

    Die Ausgabe sieht etwa so aus:

    CUSTOM_CONSTRAINT            ACTION_TYPE   METHOD_TYPES   RESOURCE_TYPES                                 DISPLAY_NAME
    custom.restrictStorageClass  DENY          CREATE         firebasestorage.googleapis.com/DefaultBucket   Restrict Standard Storage Class
    ...
    

Richtlinie erstellen

  1. Speichern Sie die folgende Datei als policy-restrict-storage-class.yaml:

    name: projects/PROJECT_ID/policies/custom.restrictStorageClass
    spec:
      rules:
      -   enforce: true
    

    Ersetzen Sie PROJECT_ID durch Ihre Projekt-ID.

  2. Wenden Sie die Richtlinie an:

    gcloud org-policies set-policy ~/policy-restrict-storage-class.yaml
    
  3. Prüfen Sie, ob die Richtlinie vorhanden ist:

    gcloud org-policies list --project=PROJECT_ID
    

    Die Ausgabe sieht etwa so aus:

    CONSTRAINT                   LIST_POLICY    BOOLEAN_POLICY    ETAG
    custom.restrictStorageClass  -              SET               CIqktscGELiZn6cC-
    

Warten Sie nach dem Anwenden der Richtlinie etwa zwei Minuten, bis Google Cloud die Richtlinie durchgesetzt hat.

Richtlinie testen

Versuchen Sie, einen Standard-Bucket mit der Cloud Storage for Firebase REST API zu erstellen, ohne eine Speicherklasse anzugeben (standardmäßig STANDARD):

PROJECT_ID="PROJECT_ID"
TOKEN=$(gcloud auth print-access-token)

curl -X POST "https://firebasestorage.googleapis.com/v1beta/projects/${PROJECT_ID}/defaultBucket" \
  -H "Authorization: Bearer ${TOKEN}" \
  -H "Content-Type: application/json" \
  -d '{"location": "US-EAST1"}'

Die Anfrage schlägt mit einem Fehler wie dem folgenden fehl:

FAILED_PRECONDITION: Operation denied by org policy: ["customConstraints/custom.restrictStorageClass": "Deny creating buckets with STANDARD storage class."].
-   '@type': type.googleapis.com/google.rpc.ErrorInfo
  domain: iam.googleapis.com
  metadata:
    customConstraints: customConstraints/custom.restrictStorageClass
  reason: CUSTOM_ORG_POLICY_VIOLATION

Beispiele für benutzerdefinierte Organisationsrichtlinien für häufige Anwendungsfälle

In dieser Tabelle finden Sie Syntaxbeispiele für einige gängige benutzerdefinierte Beschränkungen.

Beschreibung Einschränkungssyntax
Erstellung von Standard-Buckets mit der Speicherklasse STANDARD einschränken
name: organizations/ORGANIZATION_ID/customConstraints/custom.restrictStorageClass
resourceTypes:
-   firebasestorage.googleapis.com/DefaultBucket
methodTypes:
-   CREATE
condition: "resource.storageClass == 'STANDARD'"
actionType: DENY
displayName: Restrict Standard Storage Class
description: Deny creating buckets with STANDARD storage class.
Standard-Buckets müssen an einem bestimmten Standort erstellt werden
name: organizations/ORGANIZATION_ID/customConstraints/custom.requireDefaultBucketLocation
resourceTypes:
-   firebasestorage.googleapis.com/DefaultBucket
methodTypes:
-   CREATE
condition: "resource.location != 'US-EAST1'"
actionType: DENY
displayName: Require US-EAST1 Location
description: Deny creating default buckets outside the US-EAST1 location.

Nächste Schritte