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
This article provides Azure Operator Service Manager guidelines to optimize the design of configuration group schemas (CGSs) and the operation of configuration group values (CGVs). Network function (NF) vendors, telco operators, and their partners should keep these practices in mind when onboarding and deploying NFs.
14
14
15
-
## Configurarion group approach
15
+
## Configuration group approach
16
16
17
17
Consider the following meta-schema guidelines when you're designing configuration resources:
18
18
19
19
* First, choose which parameters to expose to the operator.
20
20
* A rule of thumb is to expose parameters backed by direct operation, such as a helm value.
21
-
* Suppress parameters backed by another agent, such as `cloudinit``userdata`.
21
+
* Suppress parameters backed by another agent, such as `cloudinituserdata`.
22
22
* Sort the parameters into site-specific, instance-specific, and security-specific sets.
23
-
* Ensure that parameters don't overlap between CGS resources.
23
+
* Ensure that parameters don't overlap between sets.
24
24
* Define required versus optional parameters.
25
25
* For optional parameters, define a reasonable default value.
26
26
27
27
## One-CGS approach
28
28
29
-
The original recommendation was to use only a single CGSfor the entire NF. This approach consolidated site-specific, instance-specific, and security-specific parameters into a single set of configuration group resources. This approach avoided multiple resource sets, except for rare cases where a service had multiple components. Many partners successfully onboarded services using this approach, and it remains supported. However, this approach doesn't obscure secrets. All configuration values are stored in resources as plain-text.
29
+
The original recommendation was to use only a single CGS/CGV set for the entire NF. This approach consolidated site-specific, instance-specific, and security-specific parameters together. Only in rare cases, where a service had multiple NFs, were multiple sets used. Many partners successfully onboarded using this approach, and it remains supported. However, this approach doesn't obscure secrets. All configuration values are stored in plain-text and are displayable via most Azure methods.
30
30
31
31
## Three-CGS approach
32
32
33
-
We now recommend that you use at least three CGSs for the entire NF, by organizing parameters into these sets of configuration resource groups:
33
+
We now recommend that you use at least three CGS/CGV sets, organizing parameters as follows:
34
34
35
35
* Site-specific parameters
36
36
* Examples include IP addresses and unique names.
37
-
* Uses CGS without secrets.
37
+
* Uses CGS/CGV without secrets.
38
38
* Stores values in plain-text during deployments.
39
39
40
40
* Instance-specific parameters
41
41
* Examples include timeouts and debug levels.
42
-
* Uses CGS without secrets.
42
+
* Uses CGS/CGV without secrets.
43
43
* Stores values in plain-text during deployment.
44
44
45
45
* Security-specific parameters
46
46
* Examples include passwords and certificates.
47
-
* Uses CGS with secrets.
47
+
* Uses CGS/CGV with secrets.
48
48
* Store values in Azure Key Vault to obscure during deployments.
49
49
50
50
## CGS without secrets
51
51
52
-
This example shows a sample CGS payload defining `abc`, `xyz`, and `qwe`as exposed parameters. Two of the parameters have default values and one is required.
52
+
This example shows a CGS exposing `abc`, `xyz`, and `qwe` parameters. Two of the parameters have default values and one is marked required.
53
53
54
54
```json
55
55
{
@@ -73,15 +73,15 @@ This example shows a sample CGS payload defining `abc`, `xyz`, and `qwe` as expo
73
73
74
74
## CGV without secrets
75
75
76
-
This example shows a corresponding CGV input that an operator uses with the prior CGS:
76
+
This example shows the CGV input provided by the operator during CGV deployment to satisfy the prior CGS.
77
77
78
78
```json
79
79
{
80
80
"qwe": 20
81
81
}
82
82
```
83
83
84
-
This example shows the resulting CGV resource that Azure Operator Service Manager generates:
84
+
This example shows the rendered CGV resource created after the CGV deployment completes.
85
85
86
86
```json
87
87
{
@@ -92,16 +92,43 @@ This example shows the resulting CGV resource that Azure Operator Service Manage
92
92
```
93
93
94
94
## CGS with secrets
95
-
Other then seperating secrets into a unique CGS, no special CGS requirements exist for secret support.
95
+
Other than separating secrets into a unique CGS, no special requirements exist for CGS secret support.
96
96
97
97
## CGV with secrets
98
-
Considering the following configuration reqiurements to properly obscure secret values:
99
-
* Use `configurationType: 'Secret'` in the resource properties.
100
-
* Once a CGV is deployed, this prevents the display of the resource in most Azure methods.
101
-
* Use a reference to Azure Key Vault (AKV) in place of the plain-text secret.
102
-
* This obscures the display of the secret in the CGV deployment template.
98
+
Consider the following Azure Resource Manager (ARM) template requirements to properly obscure secret values throughout the entire CGV resource lifecycle.
99
+
100
+
* Use `configurationType: 'Secret'` in the template under resource properties.
101
+
* Once a CGV is deployed, this configuration prevents displaying the secret data via most Azure methods.
102
+
103
+
```json
104
+
"parameters": {
105
+
"secretCgvContent": {
106
+
"type": "SecureObject"
107
+
}
108
+
}
109
+
```
110
+
111
+
* Use `"type": "secureObject"` in the template under parameter type
112
+
* This configuration obscures the display of the secrets as template parameters.
* Use a template reference to Azure Key Vault (AKV) in place of the plain-text secret.
125
+
* This configuration obscures the display of the secrets as template variables.
126
+
127
+
> [!NOTE]
128
+
> * ARM templates only support Azure Key Vault for secret reference substitution.
129
+
130
+
This example shows how to include an AKV reference to a secret named `secretName` in an ARM template.
103
131
104
-
The following example shows how to include an AKF reference in an ARM template:
105
132
```json
106
133
"password": {
107
134
"reference": {
@@ -112,7 +139,7 @@ The following example shows how to include an AKF reference in an ARM template:
112
139
}
113
140
```
114
141
115
-
To further secure resources restrict access to the following RBAC scope: `Microsoft.Resources/deployments/exportTemplate/action`
142
+
To further secure resources, consider restricting access to the role based access control (RBAC) scope `Microsoft.Resources/deployments/exportTemplate/action` to only roles that absolutely need to this access.
0 commit comments