このセクションには、ソース コード以外のものでも、作成中の製品のセキュリティにとって重要なものがすべて含まれています。この分野が対象とする問題は、ソース コードに直接関係しないため、この分野の他の部分と分けました。
master_auth
ブロックの username
と password
を空でない値に設定することにより、GKE クラスターで HTTP 基本認証を有効にする Terraform 構成を示しています。
resource "google_container_cluster" "container_cluster_demo" {
...
master_auth {
username = "foo"
password = "bar"
}
...
}
enable_legacy_abac
を true
に設定して GKE クラスターの ABAC 承認を有効にする Terraform 構成を示しています。
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
に設定されているため、任意の IP アドレスがクラスター ノードとコントロール プレーンにアクセスできます。
resource "google_container_cluster" "cluster-demo" {
...
private_cluster_config {
enable_private_endpoint = false
enable_private_nodes = false
}
...
}
node_config
ブロックで image_type
が COS 以外のイメージに設定されているため、COS を実行しない GKE ノードのプールをセットアップしています。
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
ブロックを含まない Terraform 構成を示しています。その結果、App Engine アプリケーションのカスタム ドメインは HTTPS をサポートしていません。
resource "google_app_engine_domain_mapping" "domain_mapping" {
domain_name = "example.com"
}
https_trigger_security_level
を SECURE_OPTIONAL
に設定することで、HTTPS エンドポイントの強制に失敗する HTTP トリガーを定義する Terraform 構成を示しています。
resource "google_cloudfunctions_function" "demo_function" {
...
trigger_http = true
https_trigger_security_level = "SECURE_OPTIONAL"
...
}
require_ssl
を false
に設定することで、すべての接続への SSL の強制をデータベース インスタンスに要求しない Terraform 構成を示しています。
resource "google_sql_database_instance" "database_instance_demo" {
...
settings {
ip_configuration {
require_ssl = false
...
}
...
}
}
require_tls
を false
に設定することで、通信での TLS の使用をクライアントに要求しない Edge Cache サービスを定義する Terraform 構成を示しています。
resource "google_network_services_edge_cache_service" "srv_demo" {
...
require_tls = false
...
}
profile
を COMPATIBLE
に設定することで、プロキシ ロード バランサーによる弱い SSL 暗号スイートの使用を許可する SSL ポリシーを定義しています。例 2: 次の Terraform 構成の例では、プロキシ ロード バランサーによる
resource "google_compute_ssl_policy" "policy-demo" {
...
profile = "COMPATIBLE"
...
}
TLS_RSA_WITH_AES_128_CBC_SHA
という名前の弱い SSL 暗号スイートの使用を具体的に許可するカスタム 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
引数がないため、使用状況ログとストレージ ログを有効にしないで Cloud Storage Bucket を作成する Terraform 構成を示しています。
resource "google_storage_bucket" "bucket-demo" {
name = "name-demo"
location = "US"
}
logging_service
を none
に設定して GKE クラスターのログ サービスを無効にする Terraform 構成を示しています。
resource "google_container_cluster" "cluster-demo" {
name = "name-demo"
location = "us-central1-a"
logging_service = "none"
...
}
monitoring_service
を none
に設定して GKE クラスターの監視サービスを無効にする Terraform 構成を示しています。
resource "google_container_cluster" "cluster-demo" {
name = "name-demo"
location = "us-central1-a"
monitoring_service = "none"
...
}