File YAML postura di sicurezza

Questa pagina fornisce una panoramica delle coppie chiave-valore nel file posture.yaml che crei per definire i criteri per la tua postura di sicurezza. Per creare un file YAML posture ed eseguirne il deployment nel tuo ambiente, consulta Gestire una postura di sicurezza.

Struttura del file YAML posture

Le posture sono file YAML che hanno la seguente struttura:

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

Descrizione delle coppie chiave/valore

La seguente tabella fornisce una descrizione delle coppie chiave-valore presenti nel file posture.yaml.

Coppia chiave-valore Descrizione
name: posture_name Il nome della postura, che inizia con una lettera. Questo valore è facoltativo perché specifichi il nome della posture quando esegui il comando gcloud scc postures create.
state: posture_state Un ENUM che puoi impostare su ACTIVE, DRAFT o DEPRECATED. Per ulteriori informazioni sugli stati della postura, consulta Modificare lo stato di una postura.
description: posture_description Una descrizione della norma. Questo valore è facoltativo.
policy_set_id: policy_set_ID Un identificatore univoco per il criterio impostato all'interno del file della postura. Un file di postura può includere più insiemi di criteri.
description: policy_set_description Una descrizione del criterio impostato. Questo valore è facoltativo.
policy_id: policy_id Un identificatore univoco del criterio all'interno del criterio impostato. Un insieme di criteri può includere più criteri.
standard: policy_compliance_standard Il nome dello standard di conformità supportato da questo criterio.
control: policy_compliance_control Gli specifici controlli all'interno dello standard di conformità supportati da questo criterio.
description: policy_compliance_description Una descrizione dello standard di conformità supportato da questo criterio.
canned_constraint_id: constraint_ID Il nome del vincolo del criterio dell'organizzazione. Ad esempio, cloudbuild.allowedWorkerPools. Non includere il prefisso constraints/ in constraint_ID.
org_policy_kind I valori per i criteri dell'organizzazione dell'elenco sono allow_all, deny_all, allowed_values e denied_values. Il valore dei criteri dell'organizzazione booleane è enforce.
org_policy_kind_value I valori del tipo allow_all, deny_all e enforce sono true o false. Il valore dei tipi allowed_values e denied_values è, rispettivamente, un elenco di valori consentiti o negati.
condition: Una condizione che determina se questa regola viene utilizzata nella valutazione del criterio. Se impostato, il campo expression in Expr deve includere da 1 a 10 sottoespressioni, unite dagli operatori || o && . Ogni sottoespressione deve essere nel formato resource.matchTag('ORG_ID/tag_key_short_name, 'tag_value_short_name') o resource.matchTagId('tagKeys/key_id', 'tagValues/value_id'), dove key_name e value_name sono i nomi delle risorse per le chiavi e i valori delle etichette. Questi nomi sono disponibili nel servizio Tag Manager. Un'espressione di esempio è: resource.matchTag('123456789/environment, 'prod') o resource.matchTagId('tagKeys/123', 'tagValues/456').
expression: org_policy_expression La rappresentazione testuale di un'espressione nella sintassi Common Expression Language. Questo valore è facoltativo.
title: org_policy_title La descrizione dello scopo dell'espressione. Questo valore è facoltativo.
description: org_policy_description La descrizione dell'espressione. Questo valore è facoltativo.
location: org_policy_location Una stringa che indica la posizione dell'espressione per la segnalazione di errori. ad esempio un nome e una posizione nel file. Questo valore è facoltativo.
name: custom_org_constraint_name Il nome del vincolo personalizzato nel formato organizations/ORGANIZATION_ID/customConstraints/CONSTRAINT_NAME. Ad esempio, organizations/3589215982/customConstraints/custom.disableGkeAutoUpgrade. Il campo CONSTRAINT_NAME non può contenere più di 62 caratteri. Il prefisso organizations/{organization_id}/customConstraints/custom non viene conteggiato. La definizione di un vincolo personalizzato nel file della postura crea un nuovo vincolo personalizzato.
resource_types: custom_org_resource_type Il nome completo della risorsa REST Google Cloud che contiene l'oggetto e il campo che vuoi limitare. È previsto un massimo di 20 vincoli personalizzati per tipo di risorsa.
method_types: custom_org_method_type L'elenco di metodi RESTful per cui applicare il vincolo.
condition: custom_org_condition La condizione CEL che fa riferimento alla risorsa di servizio supportata. Questo campo ha una lunghezza massima di 1000 caratteri.
action_type: custom_org_action_type L'azione da eseguire se la condizione è soddisfatta.
display_name: custom_org_constraint_display_name Un nome intuitivo per il vincolo. Questo campo ha una lunghezza massima di 200 caratteri.
description: custom_org_constraint_description La descrizione del vincolo da visualizzare come messaggio di errore quando il criterio viene violato. Questo campo ha una lunghezza massima di 2000 caratteri.
module_name: sha_detector_name Il nome di un rilevatore di Security Health Analytics. Ad esempio, BIGQUERY_TABLE_CMEK_DISABLED.
module_enablement_state: sha_detector_enabled Indica se il rilevatore di Security Health Analytics è abilitato. ENABLED o DISABLED.
display_name: sha_custom_detector_name Il nome del modulo personalizzato per Security Health Analytics. Il nome deve essere compreso tra 1 e 128 caratteri, iniziare con una lettera minuscola e contenere solo caratteri alfanumerici o trattini bassi.
expression: sha_custom_detector_expression Le espressioni CEL che controllano le proprietà dei tipi di risorse da scansionare.
title: sha_custom_detector_predicate_title Il nome della proprietà del predicato del modulo personalizzato per Security Health Analytics.
description: sha_custom_detector_predicate_description La descrizione della proprietà del predicato del modulo personalizzato per Security Health Analytics.
location: sha_custom_detector_predicate_location La località a cui si applica la proprietà del predicato.
name: sha_custom_detector_output_name Il nome della proprietà custom_output.
expression: sha_custom_detector_output_expression Quale espressione restituire nell'output.
title: sha_custom_detector_output_title Il titolo dell'output.
description: sha_custom_detector_output_description La descrizione dell'output del modulo personalizzato per Security Health Analytics.
location: sha_custom_detector_output_location La località a cui si applica l'output.
resource_types: sha_custom_detector_resource I tipi di risorse che il modulo personalizzato analizza.
severity: sha_custom_severity_level La gravità dei risultati creati da questo modulo.
description: sha_custom_detector_description La vulnerabilità o la configurazione errata rilevata dal modulo personalizzato.
recommendation: sha_custom_detector_recommendation Una descrizione di come risolvere il problema rilevato.

Posture.yaml di esempio

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

Esempi

Ad esempio, consulta i modelli di postura predefiniti.

Di seguito è riportato un file di postura che include i rilevatori di Security Health Analytics per AWS e 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.

Passaggi successivi