Fichier YAML de stratégie de sécurité

Cette page présente les paires clé/valeur du fichier posture.yaml que vous créez pour définir les règles correspondant à votre stratégie de sécurité. Pour créer un fichier YAML de stratégie et le déployer dans votre environnement, consultez la page Gérer une stratégie de sécurité.

Structure du fichier YAML de stratégie

Les positions sont des fichiers YAML présentant la structure suivante:

name: posture_name
state: posture_state
description: posture_description
policy_sets:
- policy_set_id: policy_set_ID
  - description: policy_set_description
  policies:
  - policy_id: policy_id
    compliance_standards:
      - standard: policy_standards
      - control: policy_control
          - description: policy_description
    # Definition for a organization policy
    constraint:
      org_policy_constraint:
        canned_constraint_id: constraint_ID
        policy_rules:
          - org_policy_kind: org_policy_kind_value
          - condition:
              expression: org_policy_expression
              title: org_policy_title
              description: org_policy_description
              location: org_policy_location
    # Definition for a custom organization policy constraint
    constraint:
      org_policy_constraint_custom:
        custom_constraint:
          name: custom_org_constraint_name
          resource_types: custom_org_resource_type
          method_types: custom_org_method_type
          condition: custom_org_condition
          action_type: custom_org_action_type
          display_name: custom_org_constraint_display_name
          description: custom_org_constraint_description
        policy_rules:
          - org_policy_kind: org_policy_kind_value
          - condition:
              expression: org_policy_expression
              title: org_policy_title
              description: org_policy_description
              location: org_policy_location
      # Definition for a Security Health Analytics detector
      constraint:
        security_health_analytics_module:
            module_name: sha_detector_name
            module_enablement_state: sha_detector_enabled
      # Definition for a custom Security Health Analytics detector
      constraint:
        security_health_analytics_custom_module:
            display_name: sha_custom_detector_name
            config:
                predicate:
                    expression: sha_custom_detector_expression
                    title: sha_custom_detector_predicate_title
                    description: sha_custom_detector_predicate_description
                    location: sha_custom_detector_predicate_location
                - custom_output:
                    - property:
                        name: sha_custom_detector_output_name
                        value_expression:
                            expression: sha_custom_detector_output_expression
                            title: sha_custom_detector_output_title
                            description: sha_custom_detector_output_description
                            location: sha_custom_detector_output_location
                resource_selector:
                    - resource_types: sha_custom_detector_resource
            severity: sha_custom_severity_level
              description: sha_custom_detector_description
              recommendation: sha_custom_detector_recommendation
            module_enablement_state: sha_detector_enabled

Description des paires clé/valeur

Le tableau suivant fournit une description des paires clé/valeur du fichier posture.yaml.

Paire clé-valeur Description
name: posture_name Nom de la posture, commençant par une lettre. Cette valeur est facultative, car vous spécifiez le nom de la position lorsque vous exécutez la commande gcloud scc postures create.
state: posture_state ENUM que vous pouvez définir sur ACTIVE, DRAFT ou DEPRECATED. Pour en savoir plus sur les états d'une position, consultez Modifier l'état d'une position.
description: posture_description Description de la règle. Cette valeur est facultative.
policy_set_id: policy_set_ID Identifiant unique de la règle définie dans le fichier de stratégie. Un fichier de stratégie peut inclure plusieurs ensembles de règles.
description: policy_set_description Description de l'ensemble de règles. Cette valeur est facultative.
policy_id: policy_id Identifiant unique de la règle dans le jeu de règles. Un ensemble de règles peut inclure plusieurs règles.
standard: policy_compliance_standard Nom de la norme de conformité acceptée par cette règle.
control: policy_compliance_control Les contrôles spécifiques de la norme de conformité compatibles avec ce règlement.
description: policy_compliance_description Description de la norme de conformité acceptée par ce règlement.
canned_constraint_id: constraint_ID Nom de la contrainte de règle d'administration. Par exemple, cloudbuild.allowedWorkerPools. N'incluez pas le préfixe constraints/ dans constraint_ID.
org_policy_kind Les valeurs des règles d'administration des listes sont allow_all, deny_all, allowed_values et denied_values. La valeur des règles d'administration booléennes est enforce.
org_policy_kind_value Les valeurs des genres allow_all, deny_all et enforce sont true ou false. La valeur des genres allowed_values et denied_values est une liste de valeurs autorisées ou refusées, respectivement.
condition: Une condition qui détermine si cette règle est utilisée ou non lors de son évaluation. Lorsqu'il est défini, le champ expression dans Expr doit inclure entre 1 et 10 sous-expressions, jointes par les opérateurs || ou && . Chaque sous-expression doit être au format resource.matchTag('ORG_ID/tag_key_short_name, 'tag_value_short_name') ou resource.matchTagId('tagKeys/key_id', 'tagValues/value_id'), où "key_name" et "value_name" correspondent aux noms de ressources des clés d'étiquette et des valeurs. Ces noms sont disponibles dans le service Tag Manager. Voici un exemple d'expression: resource.matchTag('123456789/environment, 'prod') ou resource.matchTagId('tagKeys/123', 'tagValues/456').
expression: org_policy_expression Représentation textuelle d'une expression dans la syntaxe Common Expression Language. Cette valeur est facultative.
title: org_policy_title Description de l'objet de l'expression. Cette valeur est facultative.
description: org_policy_description Description de l'expression. Cette valeur est facultative.
location: org_policy_location Chaîne qui indique l'emplacement de l'expression pour signaler les erreurs. Par exemple, un nom de fichier et une position dans le fichier. Cette valeur est facultative.
name: custom_org_constraint_name Nom de la contrainte personnalisée, au format organizations/ORGANIZATION_ID/customConstraints/CONSTRAINT_NAME. Exemple :organizations/3589215982/customConstraints/custom.disableGkeAutoUpgrade L'élément CONSTRAINT_NAME ne peut pas comporter plus de 62 caractères. Le préfixe organizations/{organization_id}/customConstraints/custom n'est pas pris en compte. Définir une contrainte personnalisée dans le fichier de posture crée une contrainte personnalisée.
resource_types: custom_org_resource_type Nom complet de la ressource REST Google Cloud contenant l'objet et le champ que vous souhaitez restreindre. Il existe un maximum de 20 contraintes personnalisées par type de ressource.
method_types: custom_org_method_type Liste des méthodes RESTful pour lesquelles vous devez appliquer la contrainte.
condition: custom_org_condition Condition CEL qui fait référence à la ressource de service compatible. Ce champ ne doit pas comporter plus de 1000 caractères.
action_type: custom_org_action_type Action à effectuer si la condition est remplie.
display_name: custom_org_constraint_display_name Nom convivial de la contrainte. Ce champ ne doit pas comporter plus de 200 caractères.
description: custom_org_constraint_description Description de la contrainte à afficher sous forme de message d'erreur en cas de non-respect de la règle. Ce champ ne doit pas comporter plus de 2 000 caractères.
module_name: sha_detector_name Nom d'un détecteur Security Health Analytics. Par exemple, BIGQUERY_TABLE_CMEK_DISABLED.
module_enablement_state: sha_detector_enabled Indique si le détecteur Security Health Analytics est activé. ENABLED ou DISABLED.
display_name: sha_custom_detector_name Nom du module personnalisé pour Security Health Analytics. Le nom doit comporter entre 1 et 128 caractères, commencer par une lettre minuscule et ne contenir que des caractères alphanumériques et des traits de soulignement.
expression: sha_custom_detector_expression Expressions CEL qui vérifient les propriétés des types de ressources à analyser.
title: sha_custom_detector_predicate_title Nom de la propriété de prédicat pour le module personnalisé de Security Health Analytics.
description: sha_custom_detector_predicate_description Description de la propriété de prédicat pour le module personnalisé de Security Health Analytics.
location: sha_custom_detector_predicate_location Emplacement auquel s'applique la propriété de prédicat.
name: sha_custom_detector_output_name Nom de la propriété custom_output.
expression: sha_custom_detector_output_expression Expression à renvoyer dans le résultat.
title: sha_custom_detector_output_title Titre de la sortie.
description: sha_custom_detector_output_description Description de la sortie du module personnalisé pour Security Health Analytics.
location: sha_custom_detector_output_location Emplacement auquel s'applique la sortie.
resource_types: sha_custom_detector_resource Types de ressources analysés par le module personnalisé.
severity: sha_custom_severity_level Gravité des résultats créés par ce module.
description: sha_custom_detector_description Faille ou erreur de configuration détectée par le module personnalisé.
recommendation: sha_custom_detector_recommendation Une description de la manière de résoudre le problème détecté

Exemple de posture.yaml

createTime: '2024-04-01T15:27:27.188366349Z'
etag: h5ulCqzUqOcaIjKjxHFrOrrZpmneG8A0K1mdO-uHsLM
name: organizations/123/locations/global/postures/mixedcasposture
policySets:
- policies:
  - constraint:
      securityHealthAnalyticsModule:
        moduleEnablementState: ENABLED
        moduleName: BIGQUERY_TABLE_CMEK_DISABLED
    description: enable BIGQUERY_TABLE_CMEK_DISABLED
    policyId: SHA module BIGQUERY_TABLE_CMEK_DISABLED
  - constraint:
      orgPolicyConstraint:
        cannedConstraintId: iam.allowServiceAccountCredentialLifetimeExtension
        policyRules:
        - allowAll: true
        - condition:
            expression: resource.matchTag("123/location", "us-east3")
            title: policy for us-east3
            description: apply policy to us-east3
    policyId: test/123/policies/iam.allowServiceAccountCredentialLifetimeExtension
  - constraint:
      orgPolicyConstraintCustom:
        customConstraint:
          actionType: ALLOW
          condition: resource.management.autoUpgrade == false
          description: Only allow GKE NodePool resource to be created or updated if
            AutoUpgrade is not enabled where this custom constraint is enforced.
          displayName: Disable GKE auto upgrade
          methodTypes:
          - CREATE
          name: organizations/123/customConstraints/custom.gke123
          resourceTypes:
          - container.googleapis.com/NodePool
        policyRules:
        - enforce: true
    policyId: orgPolicycustomconstraint
  - constraint:
      securityHealthAnalyticsModule:
        moduleEnablementState: DISABLED
        moduleName: PUBLIC_BUCKET_ACL
    description: PUBLIC_BUCKET_ACL disabled
    policyId: sha module PUBLIC_BUCKET_ACL
  - constraint:
      securityHealthAnalyticsCustomModule:
        config:
          customOutput: {}
          description: Test Custom Module
          predicate:
            expression: resource.rotationPeriod > duration('2592000s')
          recommendation: Testing custom modules
          resourceSelector:
            resourceTypes:
            - cloudkms.googleapis.com/CryptoKey
          severity: CRITICAL
        displayName: customSHA
        moduleEnablementState: ENABLED
    policyId: sha_custom_module
  - constraint:
      securityHealthAnalyticsCustomModule:
        config:
          customOutput: {}
          description: Test Custom Module
          predicate:
            expression: resource.rotationPeriod > duration('2592000s')
          recommendation: Testing custom modules
          resourceSelector:
            resourceTypes:
            - cloudkms.googleapis.com/CryptoKey
          severity: CRITICAL
        displayName: customSHA2
        moduleEnablementState: ENABLED
    policyId: sha_custom_module_2
  policySetId: PolicySetmix
- policy_set_id: BigQuery detective policy set
  description: SHA module that new customers can automatically enable.
  policies:
  - policy_id: Public dataset
    constraint:
      securityHealthAnalyticsModule:
        moduleEnablementState: ENABLED
        moduleName: PUBLIC_DATASET
state: ACTIVE

Examples

Pour obtenir des exemples, consultez les modèles de posture prédéfinis.

Voici un fichier de stratégie qui inclut les détecteurs de Security Health Analytics pour AWS et Google Cloud:

description: Posture to help make storage workloads more secure across Google Cloud and AWS.
state: ACTIVE
policy_sets:
- policy_set_id: Google Cloud policy set
  description: Policy set containing organization policies and Security Health Analytics modules for securing Cloud Storage.
  policies:
  - policy_id: Enforce Public Access Prevention
    compliance_standards:
    - standard: NIST SP 800-53
      control: AC-3
    - standard: NIST SP 800-53
      control: AC-17
    - standard: NIST SP 800-53
      control: AC-20
    constraint:
      org_policy_constraint:
        canned_constraint_id: storage.publicAccessPrevention
        policy_rules:
        - enforce: true
    description: This policy prevents access to existing and future resources via the public internet by disabling and blocking access control lists (ACLs) and IAM permissions that grant access to allUsers and allAuthenticatedUsers.
  - policy_id: Bucket IAM not monitored
    compliance_standards:
    - standard: NIST 800-53 R5
      control: AC-12
    - standard: NIST 800-53 R5
      control: AC-2
    - standard: NIST 800-53 R5
      control: AC-7
    constraint:
      securityHealthAnalyticsModule:
        moduleEnablementState: ENABLED
        moduleName: BUCKET_IAM_NOT_MONITORED
    description: This detector logs metric filter and creates alerts for Cloud Storage IAM permission changes. By monitoring changes to Cloud Storage bucket permissions, this detector can help you identify over-privileged users or suspicious activity at early stages.

- policy_set_id: AWS policy set
  description:  Policy set containing AWS built-in Security Health Analytics modules for securing S3 buckets.
  policies:
  - policy_id: S3 bucket replication enabled
    compliance_standards:
    - standard: NIST 800-53 R5
      control: SI-13(5)
    constraint:
      securityHealthAnalyticsModule:
        moduleEnablementState: ENABLED
        moduleName: S3_BUCKET_REPLICATION_ENABLED
    description: This control checks whether an Amazon S3 bucket has cross-region replication enabled. The control fails if the bucket doesn't have cross-region replication enabled or if same-region replication is also enabled.

  - policy_id: S3 bucket logging enabled
    compliance_standards:
    - standard: NIST 800-53 R5
      control: SI-13(5)
    - standard: PCI DSS 3.2.1
      control: 10.3.1
    constraint:
      securityHealthAnalyticsModule:
        moduleEnablementState: ENABLED
        moduleName: S3_BUCKET_LOGGING_ENABLED
    description: AWS S3 Server Access Logging feature records access requests to storage buckets which is useful for security audits. By default, server access logging is not enabled for S3 buckets.

Étapes suivantes