Skip to content

Commit ca04f99

Browse files
authored
feat: Removed support for "WriteRequestBodies" from the audit_log_policy input. Allowed values are now "default" and "verbose". This is because patching the Kube Audit Profile in APIServer Custom Resource is not possible in version 4.18 and onwards because a newly introduced validatingadmissionpolicy named config prevents it. Audit logs are enabled in the backend and completely managed by IBM Cloud. (#954)
1 parent 2608390 commit ca04f99

File tree

14 files changed

+25
-85
lines changed

14 files changed

+25
-85
lines changed

examples/add_rules_to_sg/main.tf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -158,7 +158,7 @@ locals {
158158
pool_name = "default" # ibm_container_vpc_cluster automatically names standard pool "standard" (See https://github.com/IBM-Cloud/terraform-provider-ibm/issues/2849)
159159
machine_type = "bx2.4x16"
160160
workers_per_zone = 2
161-
operating_system = "REDHAT_8_64"
161+
operating_system = "RHCOS"
162162
labels = {}
163163
resource_group_id = module.resource_group.resource_group_id
164164
}

examples/advanced/main.tf

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@ locals {
113113
pool_name = "default" # ibm_container_vpc_cluster automatically names default pool "default" (See https://github.com/IBM-Cloud/terraform-provider-ibm/issues/2849)
114114
machine_type = "mx2.4x32"
115115
workers_per_zone = 1
116-
operating_system = "REDHAT_8_64"
116+
operating_system = "RHEL_9_64"
117117
enableAutoscaling = true
118118
minSize = 1
119119
maxSize = 6
@@ -125,15 +125,15 @@ locals {
125125
machine_type = "bx2.4x16"
126126
workers_per_zone = 1
127127
secondary_storage = "300gb.5iops-tier"
128-
operating_system = "REDHAT_8_64"
128+
operating_system = "RHEL_9_64"
129129
boot_volume_encryption_kms_config = local.boot_volume_encryption_kms_config
130130
},
131131
{
132132
subnet_prefix = "zone-3"
133133
pool_name = "zone-3"
134134
machine_type = "bx2.4x16"
135135
workers_per_zone = 1
136-
operating_system = "REDHAT_8_64"
136+
operating_system = "RHEL_9_64"
137137
boot_volume_encryption_kms_config = local.boot_volume_encryption_kms_config
138138
}
139139
]
@@ -157,7 +157,7 @@ locals {
157157
subnet_prefix = "zone-1"
158158
pool_name = "workerpool"
159159
machine_type = "bx2.4x16"
160-
operating_system = "REDHAT_8_64"
160+
operating_system = "RHEL_9_64"
161161
workers_per_zone = 2
162162
}
163163
]
@@ -223,7 +223,7 @@ module "kube_audit" {
223223
# version = "X.Y.Z" # Replace "X.Y.Z" with a release version to lock into a specific release
224224
cluster_id = module.ocp_base.cluster_id
225225
cluster_resource_group_id = module.resource_group.resource_group_id
226-
audit_log_policy = "WriteRequestBodies"
226+
audit_log_policy = "verbose"
227227
region = var.region
228228
ibmcloud_api_key = var.ibmcloud_api_key
229229
}

examples/cross_kms_support/main.tf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ locals {
6868
pool_name = "default" # ibm_container_vpc_cluster automatically names default pool "default" (See https://github.com/IBM-Cloud/terraform-provider-ibm/issues/2849)
6969
machine_type = "bx2.4x16"
7070
workers_per_zone = 2 # minimum of 2 is allowed when using single zone
71-
operating_system = "REDHAT_8_64"
71+
operating_system = "RHCOS"
7272
boot_volume_encryption_kms_config = local.boot_volume_encryption_kms_config
7373
}
7474
]

examples/fscloud/main.tf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ module "vpc" {
6666
clean_default_sg_acl = true
6767
enable_vpc_flow_logs = true
6868
create_authorization_policy_vpc_to_cos = true
69-
existing_storage_bucket_name = module.flowlogs_bucket.bucket_configs[0].bucket_name
69+
existing_storage_bucket_name = module.flowlogs_bucket.buckets["${var.prefix}-vpc-flowlogs"].bucket_name
7070
security_group_rules = []
7171
existing_cos_instance_guid = module.cos_fscloud.cos_instance_guid
7272
subnets = {

ibm_catalog.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -953,8 +953,8 @@
953953
},
954954
{
955955
"description": "Detailed verbose logging.",
956-
"displayname": "Write Request Bodies",
957-
"value": "WriteRequestBodies"
956+
"displayname": "Verbose",
957+
"value": "verbose"
958958
}
959959
]
960960
},

modules/fscloud/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ module "ocp_base_fscloud" {
7878
pool_name = "default"
7979
machine_type = "bx2.4x16"
8080
workers_per_zone = 2
81-
operating_system = "REDHAT_8_64"
81+
operating_system = "RHCOS"
8282
}
8383
]
8484
import_default_worker_pool_on_create = false

modules/kube-audit/README.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,6 @@ No modules.
7171
|------|------|
7272
| [helm_release.kube_audit](https://registry.terraform.io/providers/hashicorp/helm/latest/docs/resources/release) | resource |
7373
| [null_resource.enable_https_traffic](https://registry.terraform.io/providers/hashicorp/null/latest/docs/resources/resource) | resource |
74-
| [null_resource.set_audit_log_policy](https://registry.terraform.io/providers/hashicorp/null/latest/docs/resources/resource) | resource |
7574
| [null_resource.set_audit_webhook](https://registry.terraform.io/providers/hashicorp/null/latest/docs/resources/resource) | resource |
7675
| [terraform_data.install_required_binaries](https://registry.terraform.io/providers/hashicorp/terraform/latest/docs/resources/data) | resource |
7776
| [time_sleep.wait_for_kube_audit](https://registry.terraform.io/providers/hashicorp/time/latest/docs/resources/sleep) | resource |
@@ -83,7 +82,7 @@ No modules.
8382
| Name | Description | Type | Default | Required |
8483
|------|-------------|------|---------|:--------:|
8584
| <a name="input_audit_deployment_name"></a> [audit\_deployment\_name](#input\_audit\_deployment\_name) | The name of log collection deployment and service. | `string` | `"ibmcloud-kube-audit"` | no |
86-
| <a name="input_audit_log_policy"></a> [audit\_log\_policy](#input\_audit\_log\_policy) | Specify the amount of information that is logged to the API server audit logs by choosing the audit log policy profile to use. Supported values are `default` and `WriteRequestBodies`. | `string` | `"default"` | no |
85+
| <a name="input_audit_log_policy"></a> [audit\_log\_policy](#input\_audit\_log\_policy) | Specify the amount of information that is logged to the API server audit logs by choosing the audit log policy profile to use. Supported values are `default` and `verbose`. | `string` | `"default"` | no |
8786
| <a name="input_audit_namespace"></a> [audit\_namespace](#input\_audit\_namespace) | The name of the namespace where log collection service and a deployment will be created. | `string` | `"ibm-kube-audit"` | no |
8887
| <a name="input_audit_webhook_listener_image"></a> [audit\_webhook\_listener\_image](#input\_audit\_webhook\_listener\_image) | The audit webhook listener image reference in the format of `[registry-url]/[namespace]/[image]`.The sub-module uses the `icr.io/ibm/ibmcloud-kube-audit-to-ibm-cloud-logs` image to forward logs to IBM Cloud Logs. This image is for demonstration purposes only. For a production solution, configure and maintain your own log forwarding image. | `string` | `"icr.io/ibm/ibmcloud-kube-audit-to-ibm-cloud-logs"` | no |
8988
| <a name="input_audit_webhook_listener_image_tag_digest"></a> [audit\_webhook\_listener\_image\_tag\_digest](#input\_audit\_webhook\_listener\_image\_tag\_digest) | The tag or digest for the audit webhook listener image to deploy. If changing the value, ensure it is compatible with `audit_webhook_listener_image`. | `string` | `"8309d2a56ef85a5c486f195178d68c616a5123b3@sha256:a484d3dfeeb8f021fd51ca54fcc8a6618e0d49eecd1ca8c520d73d51cbfbfdb4"` | no |

modules/kube-audit/main.tf

Lines changed: 2 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -38,20 +38,6 @@ locals {
3838
validate_existing_vpc_id = tonumber(regex("^([0-9]+\\.[0-9]+)", data.ibm_container_vpc_cluster.cluster.kube_version)[0]) > "4.14" ? true : tobool("Kubernetes API server audit logs forwarding is only supported in ocp versions 4.15 and later.")
3939
}
4040

41-
resource "null_resource" "set_audit_log_policy" {
42-
depends_on = [terraform_data.install_required_binaries]
43-
triggers = {
44-
audit_log_policy = var.audit_log_policy
45-
}
46-
provisioner "local-exec" {
47-
command = "${path.module}/scripts/set_audit_log_policy.sh ${var.audit_log_policy} ${local.binaries_path}"
48-
interpreter = ["/bin/bash", "-c"]
49-
environment = {
50-
KUBECONFIG = data.ibm_container_cluster_config.cluster_config.config_file_path
51-
}
52-
}
53-
}
54-
5541
#########################################################################################################################
5642
# Creates a log collection service and container
5743
########################################################################################################################
@@ -61,7 +47,7 @@ locals {
6147
}
6248

6349
resource "helm_release" "kube_audit" {
64-
depends_on = [terraform_data.install_required_binaries, null_resource.set_audit_log_policy, data.ibm_container_vpc_cluster.cluster]
50+
depends_on = [terraform_data.install_required_binaries, data.ibm_container_vpc_cluster.cluster]
6551
name = var.audit_deployment_name
6652
chart = local.kube_audit_chart_location
6753
timeout = 1200
@@ -139,7 +125,7 @@ resource "null_resource" "set_audit_webhook" {
139125
enable_https_traffic = var.enable_https_traffic
140126
}
141127
provisioner "local-exec" {
142-
command = "${path.module}/scripts/set_webhook.sh ${var.region} ${var.use_private_endpoint} ${var.cluster_config_endpoint_type} ${var.cluster_id} ${var.cluster_resource_group_id} ${var.audit_log_policy != "default" ? "verbose" : "default"} ${local.binaries_path}"
128+
command = "${path.module}/scripts/set_webhook.sh ${var.region} ${var.use_private_endpoint} ${var.cluster_config_endpoint_type} ${var.cluster_id} ${var.cluster_resource_group_id} ${var.audit_log_policy} ${local.binaries_path}"
143129
interpreter = ["/bin/bash", "-c"]
144130
environment = {
145131
IAM_API_KEY = var.ibmcloud_api_key

modules/kube-audit/scripts/set_audit_log_policy.sh

Lines changed: 0 additions & 46 deletions
This file was deleted.

modules/kube-audit/variables.tf

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -64,12 +64,12 @@ variable "cluster_config_endpoint_type" {
6464

6565
variable "audit_log_policy" {
6666
type = string
67-
description = "Specify the amount of information that is logged to the API server audit logs by choosing the audit log policy profile to use. Supported values are `default` and `WriteRequestBodies`."
67+
description = "Specify the amount of information that is logged to the API server audit logs by choosing the audit log policy profile to use. Supported values are `default` and `verbose`."
6868
default = "default"
6969

7070
validation {
71-
error_message = "Invalid Audit log policy Type! Valid values are 'default' or 'WriteRequestBodies'"
72-
condition = contains(["default", "WriteRequestBodies"], var.audit_log_policy)
71+
error_message = "Invalid Audit log policy Type! Valid values are 'default' or 'verbose'"
72+
condition = contains(["default", "verbose"], var.audit_log_policy)
7373
}
7474
}
7575

0 commit comments

Comments
 (0)