이 섹션에는 소스 코드 외부에 있지만 제작 중인 제품의 보안에는 여전히 중요한 내용이 모두 포함되어 있습니다. 이 섹션에서 다루는 문제들은 소스 코드와 직접적으로 관련이 없기 때문에 나머지 섹션과 분리했습니다.
dnssec_config
블록에서 state
를 off
로 설정하여 Cloud DNS 도메인에서 DNSSEC를 비활성화하는 Terraform 구성을 보여줍니다.
resource "google_dns_managed_zone" "zone-demo" {
...
dnssec_config {
state = "off"
...
}
...
}
allUsers
또는 allAuthenticatedUsers
에 Cloud KMS CryptoKey 역할을 부여하면 누구나 민감한 데이터에 액세스할 수 있습니다.enabled
를 false
로 설정하여 데이터베이스 인스턴스 백업 구성을 비활성화하는 Terraform 구성을 보여줍니다.
resource "google_sql_database_instance" "database_instance_demo" {
...
settings {
backup_configuration {
enabled = false
...
}
}
}
authorized_networks
블록에서 value
을 0.0.0.0/0
로 설정합니다. CIDR 블록 /0
은 0.0.0.0에서 255.255.255.255 사이의 모든 IP 주소에서 시작되는 연결을 수락합니다.
resource "google_sql_database_instance" "db-demo" {
...
settings {
...
ip_configuration {
...
authorized_networks {
name = "any ip"
value = "0.0.0.0/0"
}
...
}
...
}
...
}
allUsers
또는 allAuthenticatedUsers
에 Cloud Storage 역할을 부여하면 누구나 민감한 데이터에 액세스할 수 있게 됩니다.uniform_bucket_level_access
를 false
로 설정하여 ACL과 IAM을 함께 사용해 스토리지 버킷 액세스 권한을 부여하도록 허용합니다.
resource "google_storage_bucket" "bucket-demo" {
...
uniform_bucket_level_access = false
...
}
metadata
인수에서 enable-oslogin
을 false
로 설정하여 SSH 액세스를 관리하기 위해 IAM 역할을 사용하지 않도록 설정하는 Terraform 구성을 보여줍니다.
resource "google_compute_instance" "compute-instance-demo" {
...
metadata = {
enable-oslogin = false
...
}
...
}
service_account
블록이 없습니다.
resource "google_compute_instance" "instance-demo" {
name = "name-demo"
machine_type = "e2-micro"
boot_disk {
...
}
network_interface {
...
}
}
can_ip_forward
를 true
로 설정하여 IP 전달을 활성화합니다.
resource "google_compute_instance" "compute_instance_demo" {
...
can_ip_forward = true
...
}
enable_confidential_compute
를 false
로 설정하여 Confidential VM을 비활성화하는 Terraform 구성이 나와 있습니다.
resource "google_compute_instance" "default" {
...
confidential_instance_config {
enable_confidential_compute = false
}
...
}
disk_encryption_key
블록이 없으므로 데이터 암호화 키를 보호하기 위한 CSEK가 없습니다.
resource "google_compute_disk" "compute-disk-demo" {
name = "test-disk"
type = "pd-ssd"
}
metadata
인수에서 block-project-ssh-keys
를 false
로 설정하여 프로젝트 전체 SSH 로그인을 허용하는 Terraform 구성을 보여줍니다.
resource "google_compute_instance" "compute_instance_demo" {
...
metadata = {
block-project-ssh-keys = false
...
}
...
}
metadata
인수에서 serial-port-enable
을 true
로 설정하여 대화형 직렬 콘솔 액세스를 허용합니다.
resource "google_compute_instance" "compute_instance_demo" {
...
metadata = {
serial-port-enable = true
...
}
...
}
shielded_instance_config
블록에서 enable_integrity_monitoring
을 false
로 설정합니다. 그러므로 권장 Shield VM 옵션 중 일부만 활성화됩니다.
resource "google_compute_instance" "compute_instance_demo" {
...
shielded_instance_config {
enable_integrity_monitoring = false
enable_secure_boot = true
enable_vtpm = true
}
...
}
https_redirect
를 false
로 설정하여 클라이언트가 통신에 HTTP를 상둉하도록 허용합니다.
resource "google_network_services_edge_cache_service" "srv_demo" {
...
routing {
...
path_matcher {
...
route_rule {
...
url_redirect {
https_redirect = false
}
}
}
}
}
master_authorized_networks_config
블록에서 승인된 네트워크를 정의하지 않고 공용 클러스터를 설정합니다. 따라서, GKE 제어 영역 API 끝점에 공개적으로 액세스할 수 있습니다.
resource "google_container_cluster" "cluster_demo" {
name = "name-demo"
}
master_auth
블록에서 issue_client_certificate
를 true
로 설정하여 GKE 클라이언트 인증서 기반 인증을 활성화합니다.
resource "google_container_cluster" "container_cluster_demo" {
...
master_auth {
client_certificate_config {
issue_client_certificate = true
...
}
...
}
...
}