Cette page explique comment activer et utiliser des contraintes personnalisées dans votre environnement de clusters associés à GKE service de règles d'administration de Google Cloudvous aide à gérer les configurations de ressources et à créer des garde-fous dans votre environnement cloud.
Présentation
Les règles d'administration personnalisées vous permettent de créer des règles de ressources précises dans les environnements GKE Multi-Cloud afin de répondre aux exigences spécifiques de sécurité et de conformité de votre organisation. Vous pouvez également créer des règles d'administration en mode simulation pour tester de nouvelles règles sans affecter vos charges de travail de production.
Pour en savoir plus sur les règles d'administration, consultez la Présentation du service de règles d'administration.
Avant de commencer
Avant de commencer, assurez-vous de bien comprendre les sujets suivants:
Héritage des règles
Par défaut, les règles d'administration sont héritées par les descendants des ressources sur lesquelles vous les appliquez. Par exemple, si vous appliquez une stratégie à une organisation, Google Cloud l'applique à tous les projets de cette organisation. Pour en savoir plus sur l'héritage des stratégies et sur la modification des règles d'évaluation, consultez la section Règles d'évaluation hiérarchique.
Limites
Avant de créer des contraintes personnalisées, tenez compte des limitations suivantes:
- Les contraintes personnalisées ne peuvent être appliquées que sur les méthodes
CREATE
ouUPDATE
pour les ressources de clusters associés à GKE. - Les contraintes personnalisées nouvellement appliquées ne s'appliquent pas automatiquement aux ressources existantes. Vous devez mettre à jour les ressources existantes pour appliquer la contrainte. Pour trouver les ressources existantes qui doivent être mises à jour, vous pouvez appliquer une règle d'administration de simulation.
- Pour créer des contraintes et appliquer des règles d'administration, vous avez besoin du rôle IAM Administrateur des règles d'administration (
roles/orgpolicy.policyAdmin
) dans votre Google Cloud organisation. Pour en savoir plus sur les autorisations requises pour gérer les règles d'administration avec des contraintes personnalisées, consultez la section Rôles requis.
Tarifs
Les règles d'administration et les contraintes personnalisées sont proposées sans frais.
Créer des contraintes personnalisées
Les contraintes personnalisées doivent être spécifiées à l'aide des champs de la spécification de ressource de l'API AttachedCluster, à l'exception des champs décrits comme "uniquement en sortie".
Créer une contrainte personnalisée
Pour créer une contrainte personnalisée, vous la définissez dans un fichier YAML et vous l'appliquez dans votre organisation à l'aide de Google Cloud CLI. Cette contrainte doit encapsuler la règle spécifique que vous souhaitez appliquer à vos ressources de clusters associées à GKE.
Créez un fichier YAML pour la contrainte personnalisée :
name: organizations/ORGANIZATION_ID/customConstraints/CONSTRAINT_NAME resourceTypes: - gkemulticloud.googleapis.com/AttachedCluster methodTypes: - CREATE condition: \"CONDITION\" actionType: ACTION displayName: DISPLAY_NAME description: DESCRIPTION
Remplacez les éléments suivants :
ORGANIZATION_ID
: ID de votre organisation (par exemple,123456789
).CONSTRAINT_NAME
: nom de votre nouvelle contrainte personnalisée. Une contrainte personnalisée doit commencer parcustom.
et ne peut inclure que des lettres majuscules, minuscules ou des chiffres. Par exemple,custom.allowClusterCreateIfAnnotationPresent
. La longueur maximale de ce champ est de 70 caractères, sans compter le préfixe, comme par exempleorganizations/123456789/customConstraints/custom
.CONDITION
: condition écrite pour une représentation d'une ressource de cluster associée. Les conditions sont écrites en langage CEL (Common Expression Language). Ce champ ne doit pas comporter plus de 1 000 caractères. Par exemple, condition:"key" in resource.annotations && resource.annotations.key == "created-by"
.ACTION
: action à effectuer si la condition est remplie. Il peut être défini surALLOW
ouDENY
.DISPLAY_NAME
: nom à afficher pour la contrainte. Ce champ ne doit pas comporter plus de 200 caractères.DESCRIPTION
: description de la contrainte qui sera affichée dans un message d'erreur en cas de non-respect de la règle (par exemple,"Allow new clusters only when certain annotations are set."
Ce champ ne doit pas comporter plus de 2 000 caractères).
Pour en savoir plus sur la création d'une contrainte personnalisée, consultez Définir des contraintes personnalisées.
Associer la contrainte à vos ressources
Après avoir créé le fichier YAML pour une nouvelle contrainte personnalisée, vous devez le configurer de sorte qu'il soit disponible pour les règles d'administration.
Pour configurer une contrainte personnalisée, utilisez la commande
gcloud org-policies set-custom-constraint
:gcloud org-policies set-custom-constraint PATH_TO_FILE
Remplacez
PATH_TO_FILE
par le chemin d'accès de votre définition YAML de contrainte personnalisée.Pour vérifier que la contrainte personnalisée est créée, utilisez la commande
gcloud org-policies list-custom-constraints
:gcloud org-policies list-custom-constraints --organization=ORGANIZATION_ID
Le résultat affiche les règles créées:
CUSTOM_CONSTRAINT: custom.allowClusterCreateIfAnnotationPresent ACTION_TYPE: ALLOW METHOD_TYPES: CREATE RESOURCE_TYPES: gkemulticloud.googleapis.com/AttachedCluster DISPLAY_NAME: Allow new clusters only when certain annotations are set.
Appliquer la contrainte personnalisée
Pour appliquer la nouvelle contrainte personnalisée, créez une règle d'administration qui fait référence à la contrainte, puis appliquez-la.
Créez un fichier YAML pour la règle d'administration :
name: RESOURCE_HIERARCHY/policies/POLICY_NAME spec: rules: - enforce: true
Remplacez les éléments suivants :
RESOURCE_HIERARCHY
: emplacement de la nouvelle règle (affecte le champ d'application). Utilisez la hiérarchie des ressources Google Cloud comme guide. Par exemple, si vous souhaitez appliquer la règle dans un projet spécifique, utilisezprojects/
PROJECT_ID
. Pour appliquer la règle dans une organisation spécifique, utilisezorganizations/
ORGANIZATION_ID
.POLICY_NAME
: nom de la nouvelle stratégie.
Appliquez la règle :
gcloud org-policies set-policy PATH_TO_POLICY
Remplacez
PATH_TO_POLICY
par le chemin d'accès à votre fichier de définition de règle.Vérifiez que la règle existe :
gcloud org-policies list --RESOURCE_FLAG=RESOURCE_ID
Remplacez les éléments suivants :
RESOURCE_FLAG
: ressource Google Cloud dans laquelle vous avez appliqué la stratégie. (par exemple, un projet ou une organisation).RESOURCE_ID
: ID de la ressource dans laquelle vous avez appliqué la stratégie. Par exemple, votre ID de projet ou d'organisation.
Le résultat ressemble à ce qui suit :
CONSTRAINT: custom.allowClusterCreateIfAnnotationPresent LIST_POLICY: - BOOLEAN_POLICY: SET ETAG: CPjb27wGEOijhL4B-
Tester la stratégie
Testez la règle d'administration de l'organisation en enregistrant un cluster EKS dans un projet soumis à des restrictions.
Enregistrez un cluster EKS dans un projet restreint.
gcloud container attached clusters register CLUSTER_NAME \ --location=GOOGLE_CLOUD_REGION \ --fleet-project=PROJECT_NUMBER \ --platform-version=PLATFORM_VERSION \ --distribution=eks \ --issuer-url=ISSUER_URL \ --context=KUBECONFIG_CONTEXT \ --kubeconfig=KUBECONFIG_PATH
Le résultat ressemble à ce qui suit :
ERROR: (gcloud.container.attached.clusters.register) 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