Esta página le muestra cómo habilitar y usar restricciones personalizadas dentro de su entorno de GKE en AWS. Google CloudEl servicio de políticas de la organización le ayuda a administrar las configuraciones de recursos y a crear barreras de protección en su entorno de nube.
Descripción general
Con políticas de organización personalizadas, puede crear políticas de recursos granulares en entornos multicloud de GKE para satisfacer los requisitos específicos de seguridad y cumplimiento normativo de su organización. También puede crear políticas de organización en modo de prueba para probar nuevas políticas sin afectar sus cargas de trabajo de producción.
Para obtener más información sobre las políticas de la organización, consulte Introducción al Servicio de políticas de la organización .
Antes de empezar
Antes de comenzar, asegúrese de comprender los siguientes temas.
Herencia de políticas
De forma predeterminada, las políticas de la organización las heredan los descendientes de los recursos en los que se aplican. Por ejemplo, si se aplica una política en una organización, Google Cloud Aplica la política a todos los proyectos de la organización. Para obtener más información sobre la herencia de políticas y cómo cambiar las reglas de evaluación, consulte Reglas de evaluación de la jerarquía .
Limitaciones
Antes de crear restricciones personalizadas, tenga en cuenta las siguientes limitaciones:
- Las restricciones personalizadas solo se pueden aplicar en los métodos
CREATE
oUPDATE
para los recursos de GKE en AWS. - Las restricciones personalizadas recién implementadas no se aplican automáticamente a los recursos existentes. Debe actualizar los recursos existentes para que se apliquen. Para encontrar recursos existentes que deban actualizarse, puede implementar una política de organización de prueba .
- Para crear restricciones y aplicar políticas de la organización, necesita el rol de IAM de Administrador de políticas de la organización (
roles/orgpolicy.policyAdmin
) en su Google Cloud Organización. Para obtener más información sobre los permisos necesarios para administrar políticas de la organización con restricciones personalizadas, consulte Roles requeridos .
Precios
Las políticas organizativas y las restricciones personalizadas se ofrecen sin cargo.
Crear restricciones personalizadas
Las restricciones personalizadas se deben especificar mediante los campos en las especificaciones de recursos de API de AwsCluster y AwsNodepool , excluyendo los campos que se describen como "Solo salida".Crear una restricción personalizada
Para crear una restricción personalizada, defínala en un archivo YAML y aplíquela en su organización mediante la CLI de Google Cloud. Esta restricción debe encapsular la política específica que desea implementar en sus recursos de GKE en AWS.
Cree un archivo YAML para definir una restricción personalizada en su clúster:
name: organizations/ORGANIZATION_ID/customConstraints/CONSTRAINT_NAME
resourceTypes:
- gkemulticloud.googleapis.com/AwsCluster
methodTypes:
- CREATE
condition: CONDITION
actionType: ACTION
displayName: DISPLAY_NAME
description: DESCRIPTION
Para definir una restricción personalizada en su grupo de nodos, utilice la siguiente configuración YAML:
name: organizations/ORGANIZATION_ID/customConstraints/CONSTRAINT_NAME
resourceTypes:
- gkemulticloud.googleapis.com/AwsNodePool
methodTypes:
- CREATE
condition: CONDITION
actionType: ACTION
displayName: DISPLAY_NAME
description: DESCRIPTION
Reemplace lo siguiente:
ORGANIZATION_ID
: el ID de su organización, como por ejemplo123456789
.CONSTRAINT_NAME
: el nombre de la nueva restricción personalizada. Una restricción personalizada debe empezar porcustom.
" y solo puede incluir mayúsculas, minúsculas o números. Por ejemplo,custom.allowClusterCreateIfAnnotationPresent
. La longitud máxima de este campo es de 70 caracteres, sin contar el prefijo; por ejemplo,organizations/123456789/customConstraints/custom
.CONDITION
: una condición que se escribe contra una representación de un Google Cloud Recurso. Las condiciones se escriben en Lenguaje de Expresión Común (CEL) . Este campo tiene una longitud máxima de 1000 caracteres. Por ejemplo, condition:"key" in resource.annotations && resource.annotations.key == "created-by"
.ACTION
: la acción a tomar si se cumple la condición. Puede serALLOW
oDENY
.DISPLAY_NAME
: nombre para mostrar de la restricción. Este campo tiene una longitud máxima de 200 caracteres.DESCRIPTION
: Descripción de la restricción que se mostrará como mensaje de error cuando se infrinja la política; por ejemplo,"Allow new clusters only when certain annotations are set."
Este campo tiene una longitud máxima de 2000 caracteres.
Para obtener más información sobre cómo crear una restricción personalizada, consulte Definición de restricciones personalizadas .
Asocie la restricción con sus recursos
Después de haber creado el archivo YAML para una nueva restricción personalizada, debe configurarlo para que la restricción esté disponible para las políticas de la organización.
Para configurar una restricción personalizada, utilice el comando
gcloud org-policies set-custom-constraint
:gcloud org-policies set-custom-constraint PATH_TO_FILE
Reemplace
PATH_TO_FILE
con la ruta de su definición YAML de restricción personalizada.Para verificar que se haya creado la restricción personalizada, utilice el comando
gcloud org-policies list-custom-constraints
:gcloud org-policies list-custom-constraints --organization=ORGANIZATION_ID
La salida enumera las políticas creadas:
CUSTOM_CONSTRAINT: custom.allowClusterCreateIfAnnotationPresent ACTION_TYPE: ALLOW METHOD_TYPES: CREATE RESOURCE_TYPES: gkemulticloud.googleapis.com/AwsCluster DISPLAY_NAME: Allow new clusters only when certain annotations are set.
Aplicar la restricción personalizada
Para aplicar la nueva restricción personalizada, cree una política de organización que haga referencia a la restricción y luego aplique la política de organización.
Cree un archivo YAML para la política de la organización:
name: RESOURCE_HIERARCHY/policies/POLICY_NAME spec: rules: - enforce: true
Reemplace lo siguiente:
RESOURCE_HIERARCHY
: la ubicación de la nueva política, que afecta el alcance de la aplicación. Utilice Google Cloud Jerarquía de recursos como guía. Por ejemplo, si desea aplicar la política en un proyecto específico, utiliceprojects/
PROJECT_ID
. Para aplicar la política en una organización específica, utiliceorganizations/
ORGANIZATION_ID
.POLICY_NAME
: el nombre de la nueva política.
Hacer cumplir la política:
gcloud org-policies set-policy PATH_TO_POLICY
Reemplace
PATH_TO_POLICY
con la ruta a su archivo de definición de política.Verifique que la política exista:
gcloud org-policies list --RESOURCE_FLAG=RESOURCE_ID
Reemplace lo siguiente:
RESOURCE_FLAG
: el Google Cloud Recurso donde se aplicó la política. Por ejemplo, un proyecto u organización.RESOURCE_ID
: el ID del recurso donde se aplicó la política. Por ejemplo, el ID del proyecto o el ID de la organización.
La salida es similar a la siguiente:
CONSTRAINT: custom.allowClusterCreateIfAnnotationPresent LIST_POLICY: - BOOLEAN_POLICY: SET ETAG: CPjb27wGEOijhL4B-
Poner a prueba la política
Pruebe la política de la organización creando un nuevo clúster de AWS en un proyecto restringido.Cree un clúster de AWS en un proyecto restringido.
gcloud container aws clusters create CLUSTER_NAME \ --aws-region AWS_REGION \ --location GOOGLE_CLOUD_LOCATION \ --cluster-version CLUSTER_VERSION \ --fleet-project FLEET_PROJECT \ --vpc-id VPC_ID \ --subnet-ids CONTROL_PLANE_SUBNET_1,CONTROL_PLANE_SUBNET_2,CONTROL_PLANE_SUBNET_3 \ --pod-address-cidr-blocks POD_ADDRESS_CIDR_BLOCKS \ --service-address-cidr-blocks SERVICE_ADDRESS_CIDR_BLOCKS \ --role-arn API_ROLE_ARN \ --database-encryption-kms-key-arn DB_KMS_KEY_ARN \ --admin-users ADMIN_USERS_LIST \ --config-encryption-kms-key-arn CONFIG_KMS_KEY_ARN \ --iam-instance-profile CONTROL_PLANE_PROFILE \ --tags "Name=CLUSTER_NAME-cp"
La salida es similar a la siguiente:
FAILED_PRECONDITION: Operation denied by org policy on resource 'projects/PROJECT_NUMBER/locations/GOOGLE_CLOUD_REGION': ["customConstraints/custom.allowClusterCreateIfAnnotationPresent": "Allow new clusters only when certain annotations are set."] '@type': type.googleapis.com/google.rpc.ErrorInfo domain: googleapis.com metadata: customConstraints: customConstraints/custom.allowClusterCreateIfAnnotationPresent service: gkemulticloud.googleapis.com reason: CUSTOM_ORG_POLICY_VIOLATION