Quando crei un controllo cloud personalizzato , utilizzi le espressioni CEL (Common Expression Language) per creare le regole che valutano le proprietà della risorsa sottoposta a scansione.
Le espressioni possono essere controlli di un singolo valore o espressioni composte più complesse che controllano più valori o condizioni. In ogni caso, l'espressione deve restituire un valore booleano false per attivare un risultato.
Le espressioni CEL che valutano le proprietà delle risorse devono rispettare le seguenti regole:
Le proprietà specificate in un'espressione CEL devono essere proprietà della risorsa sottoposta a scansione, come definito nella definizione API del tipo di risorsa.
Tutti gli enum in un'espressione CEL devono essere rappresentati come stringhe. Ad esempio, la seguente è un'espressione valida per il tipo di risorsa
cloudkms.googleapis.com/CryptoKeyVersion:resource.data.state = "PENDING_GENERATION"
Il risultato delle espressioni CEL definite nella proprietà
conditiondeve essere un valore booleano. Un risultato viene attivato solo se il risultato èfalse.
Per trovare il nome di una risorsa, consulta Tipi di asset.
Per ulteriori informazioni su CEL, consulta le seguenti risorse:
Esempi di espressioni CEL
La seguente tabella elenca alcune espressioni CEL che puoi utilizzare per valutare le proprietà delle risorse.
| Tipo di risorsa | Descrizione | Espressione CEL |
|---|---|---|
cloudkms.googleapis.com/CryptoKey |
Controlla il periodo di rotazione della chiave Cloud KMS | has(resource.data.rotationPeriod) && resource.data.rotationPeriod < duration('60h') |
compute.googleapis.com/Network |
Abbina la regola di peering Virtual Private Cloud ai peer di rete | resource.data.selfLink.matches('https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/default') || resource.data.peerings.exists(p, p.network.matches('https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/shared$')) |
cloudfunctions.googleapis.com/CloudFunction |
Consenti solo il traffico in entrata interno per una funzione Cloud Run | has(resource.data.ingressSettings) && resource.data.ingressSettings.matches('ALLOW_INTERNAL_ONLY') |
compute.googleapis.com/Instance |
Il nome della risorsa corrisponde al pattern | resource.data.name.matches('^gcp-vm-(linux|windows)-v\\\\d+$') |
serviceusage.googleapis.com/Service |
Consenti l'attivazione solo delle API correlate allo spazio di archiviazione | resource.data.state == 'ENABLED' && !( resource.data.name.matches('storage-api.googleapis.com') || resource.data.name.matches('bigquery-json.googleapis.com') || resource.data.name.matches('bigquery.googleapis.com') || resource.data.name.matches('sql-component.googleapis.com') || resource.data.name.matches('spanner.googleapis.com'))
|
sqladmin.googleapis.com/Instance
|
Consenti solo gli indirizzi IP pubblici presenti nella lista consentita | (resource.data.instanceType == 'CLOUD_SQL_INSTANCE' && resource.data.backendType == 'SECOND_GEN' && resource.data.settings.ipConfiguration.ipv4Enabled ) && (resource.data.ipAddresses.all(ip, ip.type != 'PRIMARY' || ip.ipAddress.matches('IP_ADDRESS')))
|
dataproc.googleapis.com/Cluster |
Controlla se gli ID progetto in un cluster Managed Service per Apache Spark contengono
le sottostringhe testing o development |
has(resource.data.projectId) && !resource.data.projectId.contains('testing') || !resource.data.projectId.contains('development') |