Skip to content

Commit 9ee3bc3

Browse files
authored
feat: COS apikey has been replaced by s2s auth policy between atracker and cos. NOTE: If upgrading to this version, this will destroy the COS apikey which is expected. (#346)
1 parent 0991199 commit 9ee3bc3

File tree

8 files changed

+65
-17
lines changed

8 files changed

+65
-17
lines changed

atracker.tf

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,10 @@ resource "ibm_atracker_target" "atracker_target" {
2121
count = local.valid_atracker_region && var.atracker.add_route == true ? 1 : 0
2222

2323
cos_endpoint {
24-
endpoint = "s3.private.${var.region}.cloud-object-storage.appdomain.cloud"
25-
target_crn = local.bucket_to_instance_map[var.atracker.collector_bucket_name].id
26-
bucket = ibm_cos_bucket.buckets[replace(var.atracker.collector_bucket_name, var.prefix, "")].bucket_name
27-
api_key = local.bucket_to_instance_map[var.atracker.collector_bucket_name].bind_key
24+
endpoint = "s3.private.${var.region}.cloud-object-storage.appdomain.cloud"
25+
target_crn = local.bucket_to_instance_map[var.atracker.collector_bucket_name].id
26+
bucket = ibm_cos_bucket.buckets[replace(var.atracker.collector_bucket_name, var.prefix, "")].bucket_name
27+
service_to_service_enabled = true
2828
}
2929
name = "${var.prefix}-atracker"
3030
target_type = "cloud_object_storage"

dynamic_values.tf

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ module "dynamic_values" {
3232
f5_template_data = var.f5_template_data
3333
secrets_manager = var.secrets_manager
3434
add_kms_block_storage_s2s = var.add_kms_block_storage_s2s
35+
atracker_cos_bucket = var.atracker.add_route == true ? var.atracker.collector_bucket_name : null
3536
}
3637

3738
##############################################################################

dynamic_values/config_modules/service_authorizations/service_authorizations.tf

Lines changed: 35 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,10 @@ variable "add_kms_block_storage_s2s" {
2626
description = "Add kms to block storage s2s"
2727
}
2828

29+
variable "atracker_cos_bucket" {
30+
description = "Add atracker to cos s2s"
31+
}
32+
2933
##############################################################################
3034

3135
##############################################################################
@@ -106,6 +110,35 @@ module "secrets_manager_to_cos" {
106110

107111
##############################################################################
108112

113+
##############################################################################
114+
# Atracker to COS
115+
##############################################################################
116+
117+
locals {
118+
atracker_cos_instance = var.atracker_cos_bucket == null ? null : flatten([
119+
for instance in var.cos :
120+
[
121+
for bucket in instance.buckets :
122+
[instance.name] if bucket.name == var.atracker_cos_bucket
123+
]
124+
])[0]
125+
}
126+
127+
module "atracker_to_cos" {
128+
source = "../list_to_map"
129+
list = [
130+
for instance in(var.atracker_cos_bucket != null ? ["atracker-to-cos"] : []) :
131+
{
132+
name = instance
133+
source_service_name = "atracker"
134+
description = "Allow atracker to write to COS"
135+
roles = ["Object Writer"]
136+
target_service_name = "cloud-object-storage"
137+
target_resource_instance_id = split(":", var.cos_instance_ids[local.atracker_cos_instance])[7]
138+
}
139+
]
140+
}
141+
109142
##############################################################################
110143
# Outputs
111144
##############################################################################
@@ -116,7 +149,8 @@ output "authorizations" {
116149
module.kms_to_block_storage.value,
117150
module.cos_to_key_management.value,
118151
module.flow_logs_to_cos.value,
119-
module.secrets_manager_to_cos.value
152+
module.secrets_manager_to_cos.value,
153+
module.atracker_to_cos.value
120154
)
121155
}
122156

dynamic_values/service_authorizations.tf

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ module "service_authorizations" {
1010
cos_instance_ids = local.cos_instance_ids
1111
use_secrets_manager = var.secrets_manager.use_secrets_manager
1212
add_kms_block_storage_s2s = var.add_kms_block_storage_s2s
13+
atracker_cos_bucket = var.atracker_cos_bucket
1314
}
1415

1516
##############################################################################

dynamic_values/variables.tf

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -204,4 +204,7 @@ variable "add_kms_block_storage_s2s" {
204204
description = "Direct reference to kms block storage variable"
205205
}
206206

207+
variable "atracker_cos_bucket" {
208+
description = "Direct reference to atracker to cos variable"
209+
}
207210
##############################################################################

module-metadata.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,8 @@
5151
"description": "atracker variables",
5252
"required": true,
5353
"source": [
54-
"ibm_atracker_route.atracker_route.count"
54+
"ibm_atracker_route.atracker_route.count",
55+
"module.dynamic_values"
5556
],
5657
"pos": {
5758
"filename": "variables.tf",
@@ -1701,6 +1702,7 @@
17011702
"access_groups": "access_groups",
17021703
"add_kms_block_storage_s2s": "add_kms_block_storage_s2s",
17031704
"appid": "appid",
1705+
"atracker_cos_bucket": "atracker",
17041706
"bastion_vsi": "teleport_vsi",
17051707
"clusters": "clusters",
17061708
"cos": "cos",

patterns/dynamic_values/config_modules/cloud_object_storage/cos.tf

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -63,12 +63,7 @@ output "value" {
6363
force_delete = true
6464
}
6565
]
66-
# Key is needed to initialize actibity tracker
67-
keys = [{
68-
name = "cos-bind-key"
69-
role = "Writer"
70-
enable_HMAC = false
71-
}]
66+
keys = []
7267
random_suffix = var.use_random_cos_suffix
7368
},
7469
# COS instance for everything else

tests/pr_test.go

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,16 +23,16 @@ const vsiPatternTerraformDir = "patterns/vsi"
2323
const resourceGroup = "geretain-test-resources"
2424

2525
// Temp: the atracker_target ignore is being tracked in https://github.ibm.com/GoldenEye/issues/issues/4302
26-
// The ACL ignores can be removed once we merge this PR (https://github.com/terraform-ibm-modules/terraform-ibm-landing-zone/pull/315)
2726
var ignoreUpdates = []string{
28-
"module.landing_zone.module.landing_zone.module.vpc[\"management\"].ibm_is_network_acl.network_acl[\"management-acl\"]",
29-
"module.landing_zone.module.vpc[\"management\"].ibm_is_network_acl.network_acl[\"management-acl\"]",
30-
"module.landing_zone.module.landing_zone.module.vpc[\"workload\"].ibm_is_network_acl.network_acl[\"workload-acl\"]",
31-
"module.landing_zone.module.vpc[\"workload\"].ibm_is_network_acl.network_acl[\"workload-acl\"]",
3227
"module.landing_zone.module.landing_zone.ibm_atracker_target.atracker_target[0]",
3328
"module.landing_zone.ibm_atracker_target.atracker_target[0]",
3429
}
3530

31+
// TODO: Remove after https://github.com/terraform-ibm-modules/terraform-ibm-landing-zone/pull/346 is merged
32+
var ignoreDestroys = []string{
33+
"module.landing_zone.ibm_resource_key.key[\"cos-bind-key\"]",
34+
}
35+
3636
var sharedInfoSvc *cloudinfo.CloudInfoService
3737

3838
// TestMain will be run before any parallel tests, used to set up a shared InfoService object to track region usage
@@ -74,6 +74,9 @@ func setupOptions(t *testing.T, prefix string, dir string) *testhelper.TestOptio
7474
IgnoreUpdates: testhelper.Exemptions{
7575
List: ignoreUpdates,
7676
},
77+
IgnoreDestroys: testhelper.Exemptions{
78+
List: ignoreDestroys,
79+
},
7780
CloudInfoService: sharedInfoSvc,
7881
})
7982

@@ -92,6 +95,9 @@ func setupOptions(t *testing.T, prefix string, dir string) *testhelper.TestOptio
9295
IgnoreUpdates: testhelper.Exemptions{
9396
List: ignoreUpdates,
9497
},
98+
IgnoreDestroys: testhelper.Exemptions{
99+
List: ignoreDestroys,
100+
},
95101
CloudInfoService: sharedInfoSvc,
96102
})
97103

@@ -157,6 +163,9 @@ func setupOptionsRoksPattern(t *testing.T, prefix string) *testhelper.TestOption
157163
IgnoreUpdates: testhelper.Exemptions{
158164
List: ignoreUpdates,
159165
},
166+
IgnoreDestroys: testhelper.Exemptions{
167+
List: ignoreDestroys,
168+
},
160169
CloudInfoService: sharedInfoSvc,
161170
})
162171

@@ -209,6 +218,9 @@ func setupOptionsVsiPattern(t *testing.T, prefix string) *testhelper.TestOptions
209218
IgnoreUpdates: testhelper.Exemptions{
210219
List: ignoreUpdates,
211220
},
221+
IgnoreDestroys: testhelper.Exemptions{
222+
List: ignoreDestroys,
223+
},
212224
CloudInfoService: sharedInfoSvc,
213225
})
214226

0 commit comments

Comments
 (0)