本節包括原始程式碼之外的所有內容,但對於建立中產品的安全性仍至關重要。由於此領域所涵蓋的問題與原始程式碼沒有直接關係,因此我們將其與其他領域分開。
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
的 Terraform 組態。
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
來定義 HTTP 觸發程序,使其無法強制使用 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
來容許 Proxy 負載平衡器可以使用低強度 SSL 加密套件。範例 2:以下範例 Terraform 組態定義了一個自訂 SSL 原則,其特別容許 Proxy 負載平衡器可以使用名為
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"
...
}