Esta sección incluye todo lo que está fuera del código fuente pero aun así es importante para la seguridad del producto que se está creando. Dado que todas las cuestiones incluidas en esta sección no están directamente relacionadas con el código fuente, las hemos separado de las demás secciones.
username
y la password
en valores no vacíos en el bloque master_auth
.
resource "google_container_cluster" "container_cluster_demo" {
...
master_auth {
username = "foo"
password = "bar"
}
...
}
enable_legacy_abac
en true
.
resource "google_container_cluster" "container_cluster_demo" {
...
enable_legacy_abac = true
...
}
auto_repair
como false
en el bloque management
.
resource "google_container_node_pool" "node-pool-demo" {
...
management {
auto_repair = false
...
}
...
}
enable_private_nodes
y enable_private_endpoint
se establecen como false
.
resource "google_container_cluster" "cluster-demo" {
...
private_cluster_config {
enable_private_endpoint = false
enable_private_nodes = false
}
...
}
image_type
está configurado como una imagen que no es COS en el bloque node_config
.
resource "google_container_node_pool" "node_pool_demo" {
...
node_config {
image_type = "UBUNTU"
...
}
...
}
auto_upgrade
en false
en el bloque management
.
resource "google_container_node_pool" "node_pool_demo" {
...
management {
auto_upgrade = false
...
}
...
}
auto_create_network
en true
.
resource "google_project" "project-demo" {
...
auto_create_network = true
...
}
cloud-platform
, lo que permite el acceso a la mayoría de las API de Google Cloud. Esto amplía, en gran medida, la superficie de ataque accesible para cualquier instancia de Compute Engine comprometida y viola el principio de privilegio mínimo.scopes
) de la cuenta de servicio en cloud-platform
.
resource "google_compute_instance" "compute-instance-demo" {
name = "name-demo"
machine_type = "e2-micro"
...
service_account {
email = "foobar.service.account@example.com"
scopes = ["cloud-platform"]
}
}
ssl_settings
para el dominio denominado example.com
. Como resultado, el dominio personalizado de la aplicación App Engine no es compatible con HTTPS.
resource "google_app_engine_domain_mapping" "domain_mapping" {
domain_name = "example.com"
}
https_trigger_security_level
en SECURE_OPTIONAL
.
resource "google_cloudfunctions_function" "demo_function" {
...
trigger_http = true
https_trigger_security_level = "SECURE_OPTIONAL"
...
}
require_ssl
en false
.
resource "google_sql_database_instance" "database_instance_demo" {
...
settings {
ip_configuration {
require_ssl = false
...
}
...
}
}
require_tls
en false
.
resource "google_network_services_edge_cache_service" "srv_demo" {
...
require_tls = false
...
}
profile
en COMPATIBLE
.Ejemplo 2: El siguiente ejemplo de configuración de Terraform define una política SSL personalizada, que permite específicamente que el equilibrador de carga del proxy permita el uso de un conjunto de cifrado SSL débil denominado
resource "google_compute_ssl_policy" "policy-demo" {
...
profile = "COMPATIBLE"
...
}
TLS_RSA_WITH_AES_128_CBC_SHA
.
resource "google_compute_ssl_policy" "policy-demo" {
...
profile = "CUSTOM"
min_tls_version = "TLS_1_2"
custom_features = ["TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256", "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256", "TLS_RSA_WITH_AES_128_CBC_SHA"]
...
}
log_bucket
.
resource "google_storage_bucket" "bucket-demo" {
name = "name-demo"
location = "US"
}
logging_service
en none
.
resource "google_container_cluster" "cluster-demo" {
name = "name-demo"
location = "us-central1-a"
logging_service = "none"
...
}
monitoring_service
en none
.
resource "google_container_cluster" "cluster-demo" {
name = "name-demo"
location = "us-central1-a"
monitoring_service = "none"
...
}