Comprendre les contraintes

Une contrainte est un type de restriction appliqué à un service Google Cloud ou à une liste de services Google Cloud. On peut la considérer comme un modèle définissant les comportements à contrôler. Ce modèle est ensuite appliqué à un nœud de hiérarchie des ressources en tant que règle d'administration, qui met en œuvre les règles définies dans la contrainte. Le service Google Cloud mappé sur cette contrainte et associé à ce nœud de hiérarchie de ressources applique alors les restrictions configurées dans la règle d'administration.

Une contrainte est assortie d'un type, qui détermine les valeurs de la règle d'administration pouvant être saisies et utilisées afin de vérifier son application. Le service Google Cloud responsable de l'application de la contrainte évalue le type et les valeurs qui lui sont associés pour déterminer les restrictions.

La règle d'administration définie pour le nœud de hiérarchie de ressources actuel prend effet lors de l'évaluation de la hiérarchie. Si inheritFromParent est défini sur TRUE, la fusion de l'héritage prend effet.

Attributs de contrainte

Chaque contrainte est définie par les attributs suivants :

  • Nom : nom unique de la contrainte
  • Par exemple : constraints/compute.disableSerialPortAccess
  • Nom à afficher : nom convivial de la contrainte
  • Description : détails sur les mesures d'application mises en place et par quels services Google Cloud
  • Comportement par défaut : comportement en l'absence de configuration définie par l'utilisateur dans la règle

  • Types de contraintes

    Contrainte de liste

    Une contrainte de liste autorise ou refuse une liste de valeurs définie dans la règle d'administration. Cette liste de valeurs est exprimée sous forme de chaîne de sous-arborescence hiérarchique. La chaîne de sous-arborescence spécifie le type de ressource auquel elle s'applique. Par exemple, une liste d'ID de projet sous la forme projects/PROJECT_ID pour constraints/compute.trustedImageProjects.

    Le tableau suivant décrit quelques-unes des configurations courantes de contraintes pour l'application de la règle :

    Règle Configuration de la contrainte
    Autoriser un ensemble spécifique de valeurs Définissez le champ des valeurs autorisées (ListPolicy.allowed_values) sur une liste de chaînes
    Définissez ListPolicy.all_values sur ALL_VALUES_UNSPECIFIED
    Refuser un ensemble spécifique de valeurs Définissez le champ des valeurs refusées (ListPolicy.denied_values) sur une liste de chaînes
    Définissez ListPolicy.all_values sur ALL_VALUES_UNSPECIFIED
    Refuser une valeur et toutes ses valeurs enfants Définissez le champ des valeurs refusées (ListPolicy.denied_values) sur une chaîne de sous-arborescence, telle que organizations/1234
    Définissez ListPolicy.all_values sur ALL_VALUES_UNSPECIFIED
    Autoriser toutes les valeurs valides Définissez ListPolicy.all_values sur ALLOW
    Ne définissez pas ListPolicy.allowed_values ni ListPolicy.denied_values
    Refuser toutes les valeurs Définissez ListPolicy.all_values sur DENY
    Ne définissez pas ListPolicy.allowed_values ni ListPolicy.denied_values

    Les valeurs peuvent également recevoir un préfixe sous la forme "préfixe:valeur", ce qui confère à la valeur un sens supplémentaire, par exemple :

    • is: - applique une comparaison par rapport à la valeur exacte. Ce comportement est le même que celui applicable en l'absence de préfixe ; il est requis lorsque la valeur inclut le caractère deux-points.
    • under: - applique une comparaison à une valeur et à toutes ses valeurs enfants. Si une ressource est autorisée ou refusée via ce préfixe, ses ressources enfants le seront également. La valeur fournie doit être une chaîne de sous-arborescence hiérarchique, comme dans les exemples suivants :
      • organizations/ORGANIZATION_ID
      • folders/FOLDER_ID
      • projects/PROJECT_ID

    Certaines contraintes ne sont pas compatibles avec l'utilisation de chaînes de sous-arborescences hiérarchiques. Pour en savoir plus sur les contraintes compatibles avec l'utilisation de valeurs de sous-arborescence hiérarchique préfixées, consultez la page Contraintes de règle d'administration.

    L'ajout de préfixes aux valeurs de sous-arborescence hiérarchique est une fonctionnalité bêta. Cette dernière peut faire l'objet de modifications susceptibles d'affecter la rétrocompatibilité avec les versions antérieures. De plus, elle n'est sujette à aucun contrat de niveau de service ni aucun règlement d'obsolescence. Pour plus d'informations sur l'utilisation de valeurs préfixées dans les contraintes, consultez la section Configurer l'application de sous-arborescence hiérarchique.

    Si aucune liste de valeurs n'est spécifiée, la valeur par défaut qui prend effet, en fonction de la contrainte spécifique, peut être :

    • ALLOW - Toute valeur valide est autorisée.
    • DENY - Aucune valeur n'est autorisée.

    Contrainte booléenne

    Une contrainte booléenne peut être en application ou non. La règle est appliquée en définissant Policy.enforced sur True.

    Par exemple, constraints/compute.disableSerialPortAccess a deux états possibles :

    • TRUE - La contrainte disableSerialPortAccess est appliquée et l'accès au port série n'est pas autorisé.
    • FALSE - La contrainte disableSerialPortAccess n'est ni appliquée ni vérifiée, l'accès au port série est donc autorisé.

    Si aucune règle n'est définie ou si la règle est définie sur RestoreDefault, l'accès au port série est autorisé, car le comportement par défaut de la contrainte est d'autoriser.