Esta seção contém tudo o que fica fora do código-fonte, porém que é essencial para a segurança do produto que está sendo criado. Como os problemas tratados neste domínio não são diretamente relacionados com o código-fonte, nós o separamos dos demais domínios.
username
e password
como valores não vazios no bloco master_auth
.
resource "google_container_cluster" "container_cluster_demo" {
...
master_auth {
username = "foo"
password = "bar"
}
...
}
enable_legacy_abac
como true
.
resource "google_container_cluster" "container_cluster_demo" {
...
enable_legacy_abac = true
...
}
auto_repair
como false
no bloco management
.
resource "google_container_node_pool" "node-pool-demo" {
...
management {
auto_repair = false
...
}
...
}
enable_private_nodes
e enable_private_endpoint
estão definidos como false
.
resource "google_container_cluster" "cluster-demo" {
...
private_cluster_config {
enable_private_endpoint = false
enable_private_nodes = false
}
...
}
image_type
está definido como uma imagem não COS no bloco node_config
.
resource "google_container_node_pool" "node_pool_demo" {
...
node_config {
image_type = "UBUNTU"
...
}
...
}
auto_upgrade
como false
no bloco management
.
resource "google_container_node_pool" "node_pool_demo" {
...
management {
auto_upgrade = false
...
}
...
}
auto_create_network
como true
.
resource "google_project" "project-demo" {
...
auto_create_network = true
...
}
cloud-platform
, que permite acesso à maioria das APIs do Google Cloud. Isso expande muito a superfície de ataque acessível a qualquer instância comprometida do Compute Engine e viola o princípio de privilégio mínimo.scopes
) da conta de serviço como 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 o domínio chamado example.com
. Como resultado, o domínio personalizado para o aplicativo do App Engine não é compatível com HTTPS.
resource "google_app_engine_domain_mapping" "domain_mapping" {
domain_name = "example.com"
}
https_trigger_security_level
como SECURE_OPTIONAL
.
resource "google_cloudfunctions_function" "demo_function" {
...
trigger_http = true
https_trigger_security_level = "SECURE_OPTIONAL"
...
}
require_ssl
como false
.
resource "google_sql_database_instance" "database_instance_demo" {
...
settings {
ip_configuration {
require_ssl = false
...
}
...
}
}
require_tls
como false
.
resource "google_network_services_edge_cache_service" "srv_demo" {
...
require_tls = false
...
}
profile
como COMPATIBLE
.Exemplo 2: O exemplo a seguir de configuração do Terraform que define uma política SSL personalizada que permite especificamente que o balanceador de carga do proxy autorize o uso de um conjunto de criptografia SSL fraco chamado
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
está ausente.
resource "google_storage_bucket" "bucket-demo" {
name = "name-demo"
location = "US"
}
logging_service
como none
.
resource "google_container_cluster" "cluster-demo" {
name = "name-demo"
location = "us-central1-a"
logging_service = "none"
...
}
monitoring_service
como none
.
resource "google_container_cluster" "cluster-demo" {
name = "name-demo"
location = "us-central1-a"
monitoring_service = "none"
...
}