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: articles/operator-service-manager/configuration-guide.md
+23-22Lines changed: 23 additions & 22 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -8,21 +8,22 @@ ms.topic: best-practice
8
8
ms.service: azure-operator-service-manager
9
9
---
10
10
11
-
# Best practices for configuration groups
11
+
# Configuration best practices
12
12
13
-
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.
13
+
This article provides guidelines to best manage network function configuration requirements using Azure Operator Service Manager. This includes designing optimal configuration group schemas (CGSs), configuration group values (CGVs) and networkFunctions (NFs) resource templates. Keep these practices in mind when onboarding and deploying NFs.
14
14
15
-
## Configuration group approach
15
+
## Configuration 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
-
* A rule of thumb is to expose parameters backed by direct operation, such as a helm value.
20
+
* A rule of thumb is to expose parameters backed by direct operation, such as a `helm value`.
21
21
* Suppress parameters backed by another agent, such as `cloudinit userdata`.
22
22
* Sort the parameters into site-specific, instance-specific, and security-specific sets.
23
23
* Ensure that parameters don't overlap between sets.
24
24
* Define required versus optional parameters.
25
-
* For optional parameters, define a reasonable default value.
25
+
* For optional parameters, define a reasonable default value.
26
+
* To prevent exposing secrets, ensure proper configuration of security-specific parameters.
26
27
27
28
## One-CGS approach
28
29
@@ -47,7 +48,7 @@ We now recommend that you use at least three CGS/CGV sets, organizing parameters
47
48
* Uses CGS/CGV with secrets.
48
49
* Store values in Azure Key Vault (AKV) to obscure during deployments.
49
50
50
-
> [!NOTE]
51
+
> [!WARNING]
51
52
> * When using secrets, consider restricting access to the role based access control (RBAC) scope `Microsoft.Resources/deployments/exportTemplate/action`.
52
53
53
54
## CGS without secrets
@@ -99,7 +100,7 @@ This example shows the rendered CGV resource created after the CGV deployment co
99
100
Where AKV isn't being used, consider the following Azure Resource Manager (ARM) template requirements to properly obscure secret values throughout CGV resource lifecycle.
100
101
101
102
* To contain all secrets, define an object parameter with `"type": "secureObject"`.
102
-
*Before a CGV is deployed, this configuration obscures the display of secrets as template parameters.
103
+
*This configuration obscures the display of secrets as template parameters.
103
104
104
105
This example shows how to define an object parameter `secretCgvContent`.
105
106
@@ -112,10 +113,10 @@ This example shows how to define an object parameter `secretCgvContent`.
112
113
```
113
114
114
115
> [!NOTE]
115
-
> * Don't hydrate `secretCgvContent` using the bicep loadJsonContent() function as it forces the use of insecure variables.
116
+
> * Don't hydrate `secretCgvContent` using the bicep loadJsonContent() function.
116
117
117
118
* Under CGV resource properties, use `configurationType: 'Secret'` and `"secretConfigurationValue": "[string(parameters('secretCgvContent'))]"`.
118
-
*Once a CGV is deployed, this configuration prevents displaying the secret data via most Azure user interfaces.
119
+
*This configuration prevents displaying the secret data via most Azure user interfaces.
119
120
120
121
This example shows how to pass all secrets in the object `secretCgvContent` to the CGV resource.
121
122
@@ -131,46 +132,46 @@ This example shows how to pass all secrets in the object `secretCgvContent` to t
131
132
132
133
## CGV with secrets with AKV
133
134
134
-
Where AKV is being used, consider the following Azure Resource Manager (ARM) template requirements to properly obscure secret values throughout CGV resource lifecycle.
135
+
Where AKV is being used, consider the following ARM template requirements to properly obscure secret values throughout CGV resource lifecycle.
135
136
136
137
* Define a string `parameter` for each secret and one object `variable` to collect all secret values.
137
-
* The object variable contains only a reference to the parameter string and exposes no secrets.
138
+
* The object variable contains only a reference to the parameter string.
138
139
139
-
This example shows how to define a parameter `secretPassword` contained within the object variable `secretVal.configurationValue`.
140
+
This example shows how to define a parameter `secretPassword1` contained within the object variable `secretVal.configurationValue`.
140
141
141
142
```json
142
143
"parameters": {
143
-
"secretPassword": {
144
+
"secretPassword1": {
144
145
"type": "string"
145
146
}
146
147
}
147
148
"variables": {
148
149
"configurationValue": {
149
150
"secretVal": {
150
-
"elastic_passwd": "secretPassword"
151
+
"elastic_passwd": "secretPassword1"
151
152
}
152
153
}
153
154
}
154
155
```
155
156
156
157
* Use a template reference to AKV in place of the plain-text secret.
157
-
*Before the CGV is deployed, this configuration obscures the display of the secrets as template variables.
158
+
*This configuration obscures the display of the secrets as template variables.
158
159
159
-
This example shows how to hydrate the secret `secretPassword` using AKV secret and key.
160
+
This example shows how to hydrate the secret `secretPassword1` using AKV secret and key.
* Under CGV resource properties, use `configurationType: 'Secret'` and `"secretConfigurationValue": "string(secretVal.configurationValue)"`.
173
-
*Once a CGV is deployed, this configuration prevents displaying the secret data via most Azure user interfaces.
174
+
*This configuration prevents displaying the secret data via most Azure user interfaces.
174
175
175
176
This example shows how to pass all secrets in the object `secretVal.configurationValue` to the new CGV.
176
177
@@ -186,9 +187,9 @@ This example shows how to pass all secrets in the object `secretVal.configuratio
186
187
]
187
188
```
188
189
189
-
## networkFunction with secrets
190
+
## networkFunctions with secrets
190
191
191
-
Consider the following Azure Resource Manager (ARM) template requirements to properly obscure secret values throughout network function (NF) resource lifecycle.
192
+
Consider the following ARM template requirements to properly obscure secret values throughout networkFunctions resource lifecycle.
192
193
193
194
* Use `"type": "secureObject"` in the template for the `secretValues` and `config` parameter
194
195
* This configuration obscures the display of the secrets as template parameters.
@@ -212,7 +213,7 @@ Consider the following Azure Resource Manager (ARM) template requirements to pro
212
213
```
213
214
214
215
> [!NOTE]
215
-
> * Don't hydrate `secretCgvContent` using the bicep loadJsonContent() function as it forces the use of insecure variables.
216
+
> * Don't hydrate `secretValues` using the bicep loadJsonContent() function.
216
217
217
218
* Under networkFunctions resource properties, use `configurationType: 'Secret'` and `"secretDeploymentValues": "[string(parameters('config'))]"`.
218
219
* Once a network function is deployed, this configuration prevents displaying the secret data via most Azure user interfaces.
0 commit comments