Commit d6be488
feat: Workload identity federation support for Fabric using STS (#908)
This pull request introduces support for Workload Identity Federation
(WIF) using Equinix STS, along with updates to documentation, provider
configuration, and acceptance testing. The changes enable authentication
via OIDC tokens, enhance the Equinix Terraform provider, and improve
testing capabilities.
### Workload Identity Federation (WIF) Support:
*
[`docs/guides/sts_wif_setup.md`](diffhunk://#diff-3863d4c3c06fdf2fd239a5ce5ecec057e3fb08e8d6a1036537fe4a344a72fafdR1-R113):
Added a comprehensive guide for setting up Workload Identity Federation
using Equinix STS, including steps for obtaining authentication tokens,
establishing trust with an identity provider, and authorizing workloads.
*
[`docs/index.md`](diffhunk://#diff-b4d68dc855d0f9476d3f2ee343853bd21bf82ea9960d0cf06661baa244439dd6R11-R12):
Updated documentation to include details about using Workload Identity
Tokens for authentication with Equinix Fabric, including alpha feature
limitations and configuration examples.
[[1]](diffhunk://#diff-b4d68dc855d0f9476d3f2ee343853bd21bf82ea9960d0cf06661baa244439dd6R11-R12)
[[2]](diffhunk://#diff-b4d68dc855d0f9476d3f2ee343853bd21bf82ea9960d0cf06661baa244439dd6R49-R61)
[[3]](diffhunk://#diff-b4d68dc855d0f9476d3f2ee343853bd21bf82ea9960d0cf06661baa244439dd6R103-R105)
*
[`examples/example_4.tf`](diffhunk://#diff-d7c9284d94752cdab597259337b94de85088016938d348fb88450621b2c6112dR1-R8):
Added an example Terraform configuration demonstrating the use of
Workload Identity Federation with `sts_auth_scope` and
`sts_source_token`.
### Provider Enhancements:
*
[`equinix/provider.go`](diffhunk://#diff-17a1d27f648a15532c90c0ed8e7b143adde23b59dec5bbe4222db41a0a94ea0aR86-R104):
Added new provider arguments (`sts_auth_scope`, `sts_endpoint`,
`sts_source_token`) for configuring STS authentication. Updated the
`configureProvider` function to support STS-based authentication.
[[1]](diffhunk://#diff-17a1d27f648a15532c90c0ed8e7b143adde23b59dec5bbe4222db41a0a94ea0aR86-R104)
[[2]](diffhunk://#diff-17a1d27f648a15532c90c0ed8e7b143adde23b59dec5bbe4222db41a0a94ea0aR140-R142)
*
[`internal/config/config.go`](diffhunk://#diff-54c7c1af5fa8d5db4dc49f0e8e80e93ba2b1183ba4d5c9e2e5729e6deae6a3cdR20):
Introduced STS-related environment variables and default values.
Enhanced the `Config` struct and authentication logic to support STS
tokens. Refactored client creation methods for improved modularity.
[[1]](diffhunk://#diff-54c7c1af5fa8d5db4dc49f0e8e80e93ba2b1183ba4d5c9e2e5729e6deae6a3cdR20)
[[2]](diffhunk://#diff-54c7c1af5fa8d5db4dc49f0e8e80e93ba2b1183ba4d5c9e2e5729e6deae6a3cdR39-R41)
[[3]](diffhunk://#diff-54c7c1af5fa8d5db4dc49f0e8e80e93ba2b1183ba4d5c9e2e5729e6deae6a3cdR78-R80)
[[4]](diffhunk://#diff-54c7c1af5fa8d5db4dc49f0e8e80e93ba2b1183ba4d5c9e2e5729e6deae6a3cdR100-R112)
[[5]](diffhunk://#diff-54c7c1af5fa8d5db4dc49f0e8e80e93ba2b1183ba4d5c9e2e5729e6deae6a3cdL110-R139)
[[6]](diffhunk://#diff-54c7c1af5fa8d5db4dc49f0e8e80e93ba2b1183ba4d5c9e2e5729e6deae6a3cdR197-R205)
[[7]](diffhunk://#diff-54c7c1af5fa8d5db4dc49f0e8e80e93ba2b1183ba4d5c9e2e5729e6deae6a3cdL177-R219)
[[8]](diffhunk://#diff-54c7c1af5fa8d5db4dc49f0e8e80e93ba2b1183ba4d5c9e2e5729e6deae6a3cdL187-R232)
### Acceptance Testing Improvements:
*
[`internal/acceptance/acceptance.go`](diffhunk://#diff-a7084a87154a2249e8cc364137ada5573520dc434b8138618a749ac4f41d545eR1-R4):
Updated acceptance testing utilities to include checks for STS
authentication credentials. Enhanced pre-check methods to validate STS
setup alongside existing authentication mechanisms.
[[1]](diffhunk://#diff-a7084a87154a2249e8cc364137ada5573520dc434b8138618a749ac4f41d545eR1-R4)
[[2]](diffhunk://#diff-a7084a87154a2249e8cc364137ada5573520dc434b8138618a749ac4f41d545eR27-R33)
[[3]](diffhunk://#diff-a7084a87154a2249e8cc364137ada5573520dc434b8138618a749ac4f41d545eR57-R59)
[[4]](diffhunk://#diff-a7084a87154a2249e8cc364137ada5573520dc434b8138618a749ac4f41d545eR68-R101)
### Dependency Updates:
*
[`go.mod`](diffhunk://#diff-33ef32bf6c23acb95f5902d7097b7a1d5128ca061167ec0716715b0b9eeaa5f6L6-L8):
Upgraded `github.com/equinix/equinix-sdk-go` to version `v0.54.0` to
support new STS features. Removed unused dependencies.
### Documentation Improvements:
*
[`internal/provider/provider.go`](diffhunk://#diff-58d6a027753b50994deb7e11e4a99dde423f35844986019bd9cea5e0c94aba22R1-R2):
Added package-level documentation for the Terraform provider
implementation.
---------
Signed-off-by: rrajagopalan-equinix <[email protected]>
Co-authored-by: Copilot <[email protected]>
Co-authored-by: Charles Treatman <[email protected]>1 parent dfd8929 commit d6be488
File tree
13 files changed
+618
-79
lines changed- .github/workflows
- docs
- equinix
- examples
- internal
- acceptance
- config
- planmodifiers
- provider
- sts
- templates
13 files changed
+618
-79
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
26 | 26 | | |
27 | 27 | | |
28 | 28 | | |
| 29 | + | |
29 | 30 | | |
30 | 31 | | |
| 32 | + | |
31 | 33 | | |
32 | 34 | | |
33 | 35 | | |
| |||
44 | 46 | | |
45 | 47 | | |
46 | 48 | | |
| 49 | + | |
| 50 | + | |
47 | 51 | | |
48 | 52 | | |
49 | 53 | | |
| |||
85 | 89 | | |
86 | 90 | | |
87 | 91 | | |
88 | | - | |
89 | 92 | | |
90 | 93 | | |
91 | 94 | | |
| |||
161 | 164 | | |
162 | 165 | | |
163 | 166 | | |
164 | | - | |
165 | 167 | | |
166 | 168 | | |
167 | 169 | | |
| |||
223 | 225 | | |
224 | 226 | | |
225 | 227 | | |
| 228 | + | |
| 229 | + | |
| 230 | + | |
| 231 | + | |
| 232 | + | |
| 233 | + | |
| 234 | + | |
| 235 | + | |
| 236 | + | |
| 237 | + | |
| 238 | + | |
| 239 | + | |
| 240 | + | |
| 241 | + | |
| 242 | + | |
| 243 | + | |
| 244 | + | |
| 245 | + | |
| 246 | + | |
| 247 | + | |
| 248 | + | |
| 249 | + | |
| 250 | + | |
| 251 | + | |
| 252 | + | |
| 253 | + | |
| 254 | + | |
| 255 | + | |
| 256 | + | |
| 257 | + | |
| 258 | + | |
| 259 | + | |
| 260 | + | |
| 261 | + | |
| 262 | + | |
| 263 | + | |
| 264 | + | |
| 265 | + | |
| 266 | + | |
| 267 | + | |
| 268 | + | |
| 269 | + | |
| 270 | + | |
| 271 | + | |
| 272 | + | |
| 273 | + | |
| 274 | + | |
| 275 | + | |
| 276 | + | |
| 277 | + | |
| 278 | + | |
| 279 | + | |
| 280 | + | |
| 281 | + | |
| 282 | + | |
| 283 | + | |
| 284 | + | |
| 285 | + | |
| 286 | + | |
| 287 | + | |
| 288 | + | |
| 289 | + | |
| 290 | + | |
| 291 | + | |
| 292 | + | |
| 293 | + | |
| 294 | + | |
| 295 | + | |
| 296 | + | |
| 297 | + | |
| 298 | + | |
| 299 | + | |
| 300 | + | |
| 301 | + | |
| 302 | + | |
226 | 303 | | |
227 | 304 | | |
228 | 305 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
8 | 8 | | |
9 | 9 | | |
10 | 10 | | |
| 11 | + | |
| 12 | + | |
11 | 13 | | |
12 | 14 | | |
13 | 15 | | |
| |||
44 | 46 | | |
45 | 47 | | |
46 | 48 | | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
47 | 63 | | |
48 | 64 | | |
49 | 65 | | |
| |||
85 | 101 | | |
86 | 102 | | |
87 | 103 | | |
| 104 | + | |
88 | 105 | | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
83 | 83 | | |
84 | 84 | | |
85 | 85 | | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
86 | 111 | | |
87 | 112 | | |
88 | 113 | | |
| |||
109 | 134 | | |
110 | 135 | | |
111 | 136 | | |
112 | | - | |
113 | | - | |
114 | | - | |
115 | | - | |
116 | | - | |
117 | | - | |
118 | | - | |
119 | | - | |
120 | | - | |
| 137 | + | |
| 138 | + | |
| 139 | + | |
| 140 | + | |
| 141 | + | |
| 142 | + | |
| 143 | + | |
| 144 | + | |
| 145 | + | |
| 146 | + | |
| 147 | + | |
| 148 | + | |
| 149 | + | |
121 | 150 | | |
122 | 151 | | |
123 | 152 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
1 | 5 | | |
2 | 6 | | |
3 | 7 | | |
| |||
20 | 24 | | |
21 | 25 | | |
22 | 26 | | |
23 | | - | |
24 | | - | |
25 | | - | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
26 | 34 | | |
27 | 35 | | |
28 | 36 | | |
| |||
46 | 54 | | |
47 | 55 | | |
48 | 56 | | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
49 | 60 | | |
50 | 61 | | |
51 | 62 | | |
| |||
54 | 65 | | |
55 | 66 | | |
56 | 67 | | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
57 | 81 | | |
58 | 82 | | |
59 | 83 | | |
60 | 84 | | |
61 | 85 | | |
62 | 86 | | |
63 | 87 | | |
64 | | - | |
65 | | - | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
66 | 92 | | |
| 93 | + | |
67 | 94 | | |
68 | 95 | | |
| 96 | + | |
| 97 | + | |
69 | 98 | | |
70 | 99 | | |
71 | 100 | | |
72 | 101 | | |
73 | 102 | | |
74 | 103 | | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
75 | 107 | | |
76 | 108 | | |
77 | 109 | | |
| |||
0 commit comments