Las políticas de la organización te brindan un control centralizado y programático sobre los recursos de tu organización. Como administrador de políticas de la organización, puedes configurar políticas en toda tu organización.
En esta versión de Google Distributed Cloud (GDC) con aislamiento de aire, no hay IU ni CLI para las políticas de la organización. Debes usar la API o la CLI de kubectl
para administrarlos.
Beneficios
Configurar políticas de la organización proporciona varios beneficios:
- Centraliza el control para configurar restricciones sobre cómo usar los recursos de tu organización.
- Define y establece barreras de seguridad para que tus equipos de desarrollo se mantengan dentro de los límites de cumplimiento.
- Ayuda a los propietarios de proyectos y sus equipos a moverse con rapidez sin romper el cumplimiento.
Diferencias con Identity and Access Management
Identity and Access Management se enfoca en quién y permite que el administrador autorice quién puede realizar acciones en recursos específicos en función de los permisos.
Las políticas de la organización se enfocan en el qué y permiten que el administrador establezca restricciones en recursos específicos para determinar cómo configurarlos.
Lista de tipos de políticas de la organización disponibles
En esta versión de GDC, puedes usar el siguiente tipo de política.
GDCHRestrictedService
El tipo de política GDCHRestrictedService
te permite restringir qué servicio puedes usar en GDC. Cuando se aplica, la política impide el uso de las APIs a las que hace referencia. Por ejemplo, puedes usar este tipo de política para restringir el uso de un servicio determinado a ciertos proyectos. También puedes usar la política para restringir por completo el acceso a un nuevo servicio de GDC en el que quieras ejecutar pruebas antes de permitir que tus equipos lo usen.
Crea esta política en el mismo clúster que los recursos del servicio. Puedes crear varias instancias de esta política para diferentes servicios o proyectos.
A continuación, se muestra una plantilla para esta política:
apiVersion: constraints.gatekeeper.sh/v1beta1
kind: GDCHRestrictedService
metadata:
name: POLICY_NAME
spec:
match:
MATCH_SCHEMA
parameters:
disabledOperations:
- DISABLED_OPERATION
Reemplaza lo siguiente:
POLICY_NAME
: Es el nombre de la política de la organización.MATCH_SCHEMA
: Son los recursos que se deben hacer coincidir para esta restricción. Consulta la sección Cómo definir el alcance de una política de la organización dentro de un clúster para obtener más información.DISABLED_OPERATION
: Son los grupos de operaciones que bloquea esta política. Los valores permitidos sonCREATE
yUPDATE
. El valor predeterminado del campodisabledOperations
es*
.
La política GDCHRestrictedService
solo admite las operaciones UPDATE
y CREATE
. Para restringir las operaciones GET
, LIST
y DELETE
, te recomendamos que uses IAM para asignar roles.
La política GDCHRestrictedService
solo admite el siguiente subconjunto de los servicios disponibles en GDC.
Servicio | Grupo de API | kinds |
---|---|---|
Marketplace | marketplace.gdc.goog |
MarketplaceService
|
Vertex AI Workbench | aiplatform.gdc.goog |
Notebook
|
Servicio de base de datos: Postgres | postgresql.dbadmin.gdc.goog |
|
Servicio de base de datos: Oracle | oracle.dbadmin.gdc.goog |
|
Transfer Appliance | system.gpc.gke.io |
TransferApplianceRequest |
Copia de seguridad | backup.gdc.goog |
BackupRepositoryManager |
Dataproc Container for Spark (servicio de Marketplace) | sparkoperator.k8s.io |
SparkApplication |
No es necesario que especifiques todos los tipos para un servicio determinado. Puedes restringir el uso de un subconjunto de las funciones de un servicio especificando solo los tipos correspondientes.
Por ejemplo, para restringir las actualizaciones a los servicios del mercado, crea la siguiente política:
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"
Esta política impide cualquier operación UPDATE
en cualquier grupo de APIs de marketplace.gdc.goog
con el valor de MarketplaceService
para su tipo. En efecto, esta política impide que cualquier persona modifique cualquier servicio de Marketplace.
Para inhabilitar por completo un servicio, incluye CREATE
y UPDATE
en el parámetro disabledOperations
, y enumera todos los tipos que se documentan aquí.
Otorga roles de IAM para administrar políticas de la organización
Cada política de la organización tiene un rol de IAM asociado. Otorga el rol de IAM a los usuarios y grupos que quieras que administren esa política de la organización específica. Para permitir que un usuario o grupo cree, actualice o borre políticas de tipo GDCHRestrictedService
, asígnale el rol de IAM gdchrestrictedservice-policy-manager
.
Cómo definir el alcance de una política de la organización dentro de un clúster
Cuando definas una política de la organización, decide si debe afectar a todos los espacios de nombres, solo a espacios de nombres específicos o a todos los espacios de nombres, excepto a una lista determinada. Para lograrlo, usa una combinación de los parámetros .spec.match.excludedNamespaces
, .spec.match.namespaceSelector
, .spec.match.namespaces
y .spec.match.scope
de la definición de la política.
Lee la página de la sección sobre la coincidencia de políticas de la organización para obtener más información sobre estos parámetros. Por ejemplo, para permitir la creación de bases de datos solo en los espacios de nombres que tienen la etiqueta owner: dba-team
, crea la siguiente política:
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"
Cómo revertir una política existente
Para dejar de aplicar una política existente, bórrala con la CLI de kubectl
. Usa un archivo kubeconfig que te brinde acceso al clúster en el que se define la política y al rol de IAM gdchrestrictedservice-policy-manager
.
Para borrar una política de la organización, ejecuta el siguiente comando:
kubectl --kubeconfig CLUSTER_KUBECONFIG delete \
GDCHRestrictedService/POLICY_NAME
Reemplaza lo siguiente:
CLUSTER_KUBECONFIG
: Es el archivo kubeconfig del clúster en el que reside la política de la organización.POLICY_NAME
: Es el nombre de la política de la organización que se borrará.
Prueba una política en modo de auditoría
Puedes probar una política sin aplicarla. Prueba una política para asegurarte de que no interrumpa los sistemas existentes antes de implementarla o para obtener una estimación de qué tan extendido está un comportamiento. Para agregar una prueba, agrega un enforcementAction
a la definición de tu política. Este parámetro tiene tres valores posibles:
deny
: Se aplica la política. Esta es la configuración predeterminada.dryrun
: Se permite la acción, pero puedes ver que hay un incumplimiento de política en los registros de auditoría y en el estado de la política. Examina el incumplimiento conkubectl --kubeconfig CLUSTER_KUBECONFIG get POLICY_TYPE/POLICY_NAME
.warn
: Es equivalente adryrun
, excepto que la prueba también muestra una advertencia en respuesta a la solicitud que activó un incumplimiento de política.
Por ejemplo, para probar una política que inhabilita Marketplace, crea la siguiente política:
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"]