本节包括的所有内容均与源代码无关,但对所创建产品的安全性仍然至关重要。因为本节涉及的问题与源代码没有直接关系,所以我们将它与其他章节分开。
master_auth
块中将 username
和 password
设置为非空值,启用了 GKE 群集的 HTTP 基本身份验证。
resource "google_container_cluster" "container_cluster_demo" {
...
master_auth {
username = "foo"
password = "bar"
}
...
}
enable_legacy_abac
设置为 true
,启用了 GKE 群集上的传统 ABAC 授权。
resource "google_container_cluster" "container_cluster_demo" {
...
enable_legacy_abac = true
...
}
management
块中将 auto_repair
设置为 false
,禁用了节点池的节点自动修复。
resource "google_container_node_pool" "node-pool-demo" {
...
management {
auto_repair = false
...
}
...
}
enable_private_nodes
和 enable_private_endpoint
设置为 false
。
resource "google_container_cluster" "cluster-demo" {
...
private_cluster_config {
enable_private_endpoint = false
enable_private_nodes = false
}
...
}
node_config
块中的 image_type
被设置为非 COS 映像。
resource "google_container_node_pool" "node_pool_demo" {
...
node_config {
image_type = "UBUNTU"
...
}
...
}
management
块中将 auto_upgrade
设置为 false
,禁用了 Kubernetes 节点的自动升级。
resource "google_container_node_pool" "node_pool_demo" {
...
management {
auto_upgrade = false
...
}
...
}
auto_create_network
设置为 true
启用了项目级网络的自动创建。
resource "google_project" "project-demo" {
...
auto_create_network = true
...
}
cloud-platform
,允许访问大多数 Google Cloud API。这极大扩展了受损 Compute Engine 实例的攻击面,且违反了最小特权原则。scopes
) 设置为 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"]
}
}
example.com
的 ssl_settings
块。因此,App Engine 应用程序的自定义域不支持 HTTPS。
resource "google_app_engine_domain_mapping" "domain_mapping" {
domain_name = "example.com"
}
https_trigger_security_level
设置为 SECURE_OPTIONAL
,不要求强制使用 HTTPS 端点。
resource "google_cloudfunctions_function" "demo_function" {
...
trigger_http = true
https_trigger_security_level = "SECURE_OPTIONAL"
...
}
require_ssl
设置为 false
,不要求数据库实例对所有连接强制使用 SSL。
resource "google_sql_database_instance" "database_instance_demo" {
...
settings {
ip_configuration {
require_ssl = false
...
}
...
}
}
require_tls
设置为 false
,不要求客户端使用 TLS 进行通信。
resource "google_network_services_edge_cache_service" "srv_demo" {
...
require_tls = false
...
}
profile
设置为 COMPATIBLE
,允许代理负载平衡器使用弱 SSL 密码套件。示例 2:以下示例 Terraform 配置定义了一个自定义 SSL 策略,该策略专门允许代理负载平衡器使用名为
resource "google_compute_ssl_policy" "policy-demo" {
...
profile = "COMPATIBLE"
...
}
TLS_RSA_WITH_AES_128_CBC_SHA
的弱 SSL 密码套件。
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
设置为 none
禁用了 GKE 群集的日志记录服务。
resource "google_container_cluster" "cluster-demo" {
name = "name-demo"
location = "us-central1-a"
logging_service = "none"
...
}
monitoring_service
设置为 none
禁用了 GKE 群集的监控服务。
resource "google_container_cluster" "cluster-demo" {
name = "name-demo"
location = "us-central1-a"
monitoring_service = "none"
...
}