Mit Organisationsrichtlinien können Sie die Ressourcen Ihrer Organisation zentral und programmatisch steuern. Als Administrator von Organisationsrichtlinien können Sie Richtlinien für Ihre gesamte Organisation konfigurieren.
In dieser Version von Google Distributed Cloud (GDC) Air-Gapped gibt es keine Benutzeroberfläche oder CLI für Organisationsrichtlinien. Sie müssen die API oder die kubectl
-Befehlszeile verwenden, um sie zu verwalten.
Vorteile
Das Konfigurieren von Organisationsrichtlinien bietet mehrere Vorteile:
- Sie zentralisieren die Kontrolle, um Einschränkungen für die Nutzung der Organisationsressourcen zu konfigurieren.
- Sie definieren und richten Leitlinien für die Entwicklungsteams ein, damit alle geltenden gesetzlichen Bestimmungen eingehalten werden.
- Sie unterstützen Projektinhaber und ihre Teams dabei, schnell zu agieren, ohne sich um Verstöße gegen geltende gesetzliche Bestimmungen sorgen zu müssen.
Unterschiede zur Identitäts- und Zugriffsverwaltung
Das Identitäts- und Zugriffsmanagement erfolgt auf Nutzerebene. Administratoren können Nutzer autorisieren, auf der Grundlage ihrer Berechtigungen Aktionen an bestimmten Ressourcen auszuführen.
Organisationsrichtlinien konzentrieren sich auf Ressourcen und ermöglichen es dem Administrator, Einschränkungen für bestimmte Ressourcen festzulegen, um zu bestimmen, wie diese konfiguriert werden können.
Liste der verfügbaren Organisationsrichtlinientypen
In dieser Version von GDC können Sie den folgenden Richtlinientyp verwenden.
GDCHRestrictedService
Mit dem Richtlinientyp GDCHRestrictedService
können Sie einschränken, welche Dienste Sie in GDC verwenden können. Wenn die Richtlinie angewendet wird, wird die Verwendung der APIs verhindert, auf die sie verweist. Mit diesem Richtlinientyp können Sie beispielsweise die Verwendung eines bestimmten Dienstes auf bestimmte Projekte beschränken. Sie können die Richtlinie auch verwenden, um den Zugriff auf einen neuen GDC-Dienst vollständig einzuschränken, den Sie testen möchten, bevor Ihre Teams ihn verwenden dürfen.
Erstellen Sie diese Richtlinie im selben Cluster wie die Dienstressourcen. Sie können mehrere Instanzen dieser Richtlinie für verschiedene Dienste oder Projekte erstellen.
Im Folgenden finden Sie eine Vorlage für diese Richtlinie:
apiVersion: constraints.gatekeeper.sh/v1beta1
kind: GDCHRestrictedService
metadata:
name: POLICY_NAME
spec:
match:
MATCH_SCHEMA
parameters:
disabledOperations:
- DISABLED_OPERATION
Ersetzen Sie Folgendes:
POLICY_NAME
: Der Name der Organisationsrichtlinie.MATCH_SCHEMA
: Die Ressourcen, die für diese Einschränkung abgeglichen werden sollen. Weitere Informationen finden Sie im Abschnitt Bereich einer Organisationsrichtlinie in einem Cluster definieren.DISABLED_OPERATION
: Die Gruppen von Vorgängen, die durch diese Richtlinie blockiert werden. Die zulässigen Werte sindCREATE
undUPDATE
. Der Standardwert für das FelddisabledOperations
ist*
.
Die GDCHRestrictedService
-Richtlinie unterstützt nur die Vorgänge UPDATE
und CREATE
. Um die Vorgänge GET
, LIST
und DELETE
einzuschränken, empfehlen wir, IAM zum Zuweisen von Rollen zu verwenden.
Die GDCHRestrictedService
-Richtlinie unterstützt nur die folgende Teilmenge der auf GDC verfügbaren Dienste.
Dienst | API-Gruppe | Arten |
---|---|---|
Marketplace | marketplace.gdc.goog |
MarketplaceService
|
Vertex AI Workbench | aiplatform.gdc.goog |
Notebook
|
Datenbankdienst – Postgres | postgresql.dbadmin.gdc.goog |
|
Database Service – Oracle | oracle.dbadmin.gdc.goog |
|
Transfer Appliance | system.gpc.gke.io |
TransferApplianceRequest |
Sicherung | backup.gdc.goog |
BackupRepositoryManager |
Dataproc-Container für Spark (Marketplace-Dienst) | sparkoperator.k8s.io |
SparkApplication |
Sie müssen nicht alle Arten für einen bestimmten Dienst angeben. Sie können die Nutzung einer Teilmenge der Funktionen eines Dienstes einschränken, indem Sie nur die entsprechenden Arten angeben.
Wenn Sie beispielsweise Aktualisierungen von Marketplace-Diensten einschränken möchten, erstellen Sie die folgende Richtlinie:
apiVersion: constraints.gatekeeper.sh/v1beta1
kind: GDCHRestrictedService
metadata:
name: no-update-to-marketplace-service
spec:
match:
kinds:
- apiGroups:
- "marketplace.gdc.goog"
kinds:
- MarketplaceService
parameters:
disabledOperations:
- "UPDATE"
Diese Richtlinie verhindert jeden UPDATE
-Vorgang für jede marketplace.gdc.goog
-API-Gruppe mit dem Wert MarketplaceService
für die Art. Diese Richtlinie verhindert, dass jemand einen Marketplace-Dienst ändert.
Wenn Sie einen Dienst vollständig deaktivieren möchten, listen Sie sowohl CREATE
als auch UPDATE
im Parameter disabledOperations
auf und listen Sie alle hier dokumentierten Arten auf.
IAM-Rollen zum Verwalten von Organisationsrichtlinien zuweisen
Jeder Organisationsrichtlinie ist eine IAM-Rolle zugeordnet. Weisen Sie die IAM-Rolle den Nutzern und Gruppen zu, die die jeweilige Organisationsrichtlinie verwalten sollen. Wenn Sie einem Nutzer oder einer Gruppe die Möglichkeit geben möchten, Richtlinien vom Typ GDCHRestrictedService
zu erstellen, zu aktualisieren oder zu löschen, weisen Sie dem Nutzer oder der Gruppe die IAM-Rolle gdchrestrictedservice-policy-manager
zu.
Umfang einer Organisationsrichtlinie in einem Cluster definieren
Wenn Sie eine Organisationsrichtlinie definieren, müssen Sie festlegen, ob sie sich auf alle Namespaces, nur auf bestimmte Namespaces oder auf alle Namespaces mit Ausnahme einer bestimmten Liste auswirken soll. Verwenden Sie dazu eine Kombination aus den Parametern .spec.match.excludedNamespaces
, .spec.match.namespaceSelector
, .spec.match.namespaces
und .spec.match.scope
der Richtliniendefinition.
Weitere Informationen zu diesen Parametern finden Sie im Abschnitt Übereinstimmung mit Organisationsrichtlinien. Wenn Sie beispielsweise das Erstellen von Datenbanken nur in Namespaces mit dem Label owner: dba-team
zulassen möchten, erstellen Sie die folgende Richtlinie:
apiVersion: constraints.gatekeeper.sh/v1beta1
kind: GDCHRestrictedService
metadata:
name: db-restricted-to-dbas
spec:
match:
scope: Namespaced
namespaceSelector:
matchExpressions:
# We are restricting the use of the service in namespaces that
# don't have the owner: dba-team label
- key: owner
operator: NotIn
values:
- dba-team
kinds:
- apiGroups:
- "postgresql.dbadmin.gdc.goog"
kinds:
- DBCluster
- BackupPlan
- Import
- Restore
- apiGroups:
- "oracle.dbadmin.gdc.goog"
kinds:
- DBCluster
- BackupPlan
- Import
parameters:
disabledOperations:
- "UPDATE"
- "CREATE"
Rollback einer vorhandenen Richtlinie durchführen
Wenn Sie die Erzwingung einer vorhandenen Richtlinie beenden möchten, löschen Sie sie mit der kubectl
CLI. Verwenden Sie eine kubeconfig-Datei, die Ihnen Zugriff auf den Cluster gewährt, in dem die Richtlinie definiert ist, und auf die IAM-Rolle gdchrestrictedservice-policy-manager
.
So löschen Sie eine Organisationsrichtlinie:
kubectl --kubeconfig CLUSTER_KUBECONFIG delete \
GDCHRestrictedService/POLICY_NAME
Ersetzen Sie Folgendes:
CLUSTER_KUBECONFIG
: die kubeconfig-Datei des Clusters, in dem sich die Organisationsrichtlinie befindet.POLICY_NAME
: der Name der zu löschenden Organisationsrichtlinie.
Richtlinie im Prüfmodus testen
Sie können eine Richtlinie testen, ohne sie zu erzwingen. Sie können eine Richtlinie testen, um sicherzugehen, dass sie keine vorhandenen Systeme beeinträchtigt, bevor Sie sie einführen. Außerdem können Sie so abschätzen, wie weit verbreitet ein Verhalten ist. Fügen Sie dazu Ihrer Richtliniendefinition ein enforcementAction
hinzu. Für diesen Parameter sind drei Werte möglich:
deny
: Die Richtlinie wird durchgesetzt. Dies ist die Standardeinstellung.dryrun
: Die Aktion ist zulässig, aber sowohl in den Audit-Logs als auch im Richtlinienstatus ist ein Richtlinienverstoß zu sehen. Sehen Sie sich den Verstoß mitkubectl --kubeconfig CLUSTER_KUBECONFIG get POLICY_TYPE/POLICY_NAME
an.warn
: Entsprichtdryrun
, aber beim Test wird auch eine Warnung als Reaktion auf die Anfrage angezeigt, die einen Richtlinienverstoß ausgelöst hat.
Wenn Sie beispielsweise eine Richtlinie testen möchten, mit der der Marketplace deaktiviert wird, erstellen Sie die folgende Richtlinie:
apiVersion: constraints.gatekeeper.sh/v1beta1
kind: GDCHRestrictedService
metadata:
name: disable-marketplace-service-project-alice
Spec:
enforcementAction: warn
match:
kinds:
- apiGroups: ["marketplace.gdc.goog"]
kinds: ["MarketplaceService"]