You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+39-4Lines changed: 39 additions & 4 deletions
Original file line number
Diff line number
Diff line change
@@ -14,7 +14,7 @@ To run this module, you need the following:
14
14
15
15
-[Terraform installed](https://learn.hashicorp.com/tutorials/terraform/install-cli) (already installed in Azure Portal)
16
16
-[Azure CLI installed](https://docs.microsoft.com/en-us/cli/azure/install-azure-cli) (already installed in Azure Portal)
17
-
- Permissions on AAD level. If using Microsoft Customer Agreement, AAD level permissions must be set in the Tenant Directory that will create the subscriptions (*Source Tenant*) as well as the Tenant Directory that will receive the subscriptions (*Destination Tenant*). An Azure account with one of the following roles:
17
+
- Permissions on Entra ID level. If using Microsoft Customer Agreement, Entra ID level permissions must be set in the Tenant Directory that will create the subscriptions (*Source Tenant*) as well as the Tenant Directory that will receive the subscriptions (*Destination Tenant*). An Azure account with one of the following roles:
18
18
1. Global Administrator
19
19
2. Privileged Role Administrator AND (Cloud) Application Administrator
20
20
- Permissions on Azure Resource Level: User Access Administrator on the Management Group that should be managed by meshStack
@@ -83,11 +83,11 @@ To run this module, you need the following:
83
83
84
84
**Prerequisites**:
85
85
86
-
- Ensure you have permissions in the source AAD Tenant for granting access to the billing account used for subscription creation using the `Account Administrator` role
86
+
- Ensure you have permissions in the source Entra ID Tenant for granting access to the billing account used for subscription creation using the `Account Administrator` role
87
87
88
88
**Create MCA service principals**:
89
89
90
-
> With this module, you can create multiple MCA service principals by passing a list of `mca.service_principal_names`. This is useful for environments with restricted acceses to the AAD tenant holding the MCA license.
90
+
> With this module, you can create multiple MCA service principals by passing a list of `mca.service_principal_names`. This is useful for environments with restricted access to the Entra ID tenant holding the MCA license. A sample case would be to have one "source" Entra ID tenant in your organization in which you can create Azure subscriptions, and multiple "destination" tenants.
91
91
92
92
Add an `mca` block when calling this module.
93
93
@@ -107,6 +107,41 @@ module "meshplatform" {
107
107
}
108
108
```
109
109
110
+
## Workload Identity Federation for Multiple Environments
111
+
112
+
When using multiple MCA service principals with Workload Identity Federation (WIF), you can configure per-service-principal subjects to support different Kubernetes namespaces or environments.
113
+
114
+
### Single Subject (All MCA Service Principals)
115
+
116
+
Use `mca_subject` when all MCA service principals should use the same Kubernetes service account:
This approach allows each service principal to have its own custom subject when configuring WIF.
144
+
110
145
### Using Pre-provisioned Subscriptions
111
146
112
147
meshStack will need to be able to read subscriptions at the source location
@@ -218,7 +253,7 @@ Before opening a Pull Request, please do the following:
218
253
| <aname="input_sso_identity_provider_alias"></a> [sso\_identity\_provider\_alias](#input\_sso\_identity\_provider\_alias)| Identity provider alias. This value needs to be passed to meshcloud to configure the identity provider. |`string`|`"oidc"`| no |
219
254
| <aname="input_sso_meshstack_idp_domain"></a> [sso\_meshstack\_idp\_domain](#input\_sso\_meshstack\_idp\_domain)| meshStack identity provider domain that was provided by meshcloud. It is individual per meshStack. In most cases it is sso.<portal-domain> |`string`|`"replaceme"`| no |
220
255
| <aname="input_sso_service_principal_name"></a> [sso\_service\_principal\_name](#input\_sso\_service\_principal\_name)| Service principal for Entra ID SSO. Name must be unique per Entra ID. |`string`|`"meshcloud SSO"`| no |
221
-
| <aname="input_workload_identity_federation"></a> [workload\_identity\_federation](#input\_workload\_identity\_federation)| Enable workload identity federation by creating federated credentials for enterprise applications. Usually you'd receive the required settings when attempting to configure a platform with workload identity federation in meshStack. |`object({issuer = string, replicator_subject = string, kraken_subject = string })`|`null`| no |
256
+
| <aname="input_workload_identity_federation"></a> [workload\_identity\_federation](#input\_workload\_identity\_federation)| Enable workload identity federation by creating federated credentials for enterprise applications. Usually you'd receive the required settings when attempting to configure a platform with workload identity federation in meshStack. |<pre>object({<br> issuer = string<br> replicator_subject = string<br> kraken_subject = string<br> # For MCA service principals: can be either a single subject for all SPs or a map of SP name to subject<br> mca_subject = optional(string)<br> mca_subjects = optional(map(string))<br> })</pre>|`null`| no |
description="List of user principals that should be added as owners to the mca service principal."
20
20
default=[]
21
21
}
22
+
23
+
variable"create_password" {
24
+
type=bool
25
+
description="Create a password for the enterprise application."
26
+
default=true
27
+
}
28
+
29
+
variable"workload_identity_federation" {
30
+
default=null
31
+
description="Enable workload identity federation instead of using a password by providing these additional settings. Can be either a single configuration for all service principals, or a map with per-service-principal configuration."
32
+
type=object({
33
+
issuer =string
34
+
# subject can be either a single string (applied to all SPs) or a map of SP name to subject
error_message="If using workload_identity_federation for MCA, either 'subject' (for all service principals) or 'subjects' (per service principal) can be provided, but not both. Both can be null if MCA WIF is not needed."
description="Enable workload identity federation by creating federated credentials for enterprise applications. Usually you'd receive the required settings when attempting to configure a platform with workload identity federation in meshStack."
error_message="For MCA configuration, either 'mca_subject' (for all service principals) or 'mca_subjects' (per service principal) can be provided, but not both."
0 commit comments