Skip to content

Commit ffae190

Browse files
authored
Merge pull request #108579 from yossi-y/patch-60
update due to APIs changes
2 parents 2281d75 + 2066d72 commit ffae190

File tree

1 file changed

+115
-42
lines changed

1 file changed

+115
-42
lines changed

articles/azure-monitor/platform/customer-managed-keys.md

Lines changed: 115 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ ms.subservice: logs
55
ms.topic: conceptual
66
author: yossi-y
77
ms.author: yossiy
8-
ms.date: 02/24/2020
8+
ms.date: 03/22/2020
99

1010
---
1111
# Azure Monitor customer-managed key configuration
@@ -106,10 +106,10 @@ For Application Insights CMK configuration, follow the Appendix content for step
106106
1. Subscription whitelisting -- this is required for this early access
107107
feature
108108
2. Creating Azure Key Vault and storing key
109-
3. Create a *Cluster* resource
109+
3. Creating a *Cluster* resource
110110
4. Azure Monitor data-store (ADX cluster) provisioning
111-
5. Grant permissions to your Key Vault
112-
6. Log Analytics workspaces association
111+
5. Granting permissions to your Key Vault
112+
6. Associating Log Analytics workspaces
113113

114114
The procedure is not supported in the UI currently and the provisioning process is performed via REST API.
115115

@@ -142,13 +142,13 @@ You can acquire the token using one of these methods:
142142
CMK capability is an early access feature. The subscriptions where you plan to create *Cluster* resources must be whitelisted beforehand by the Azure product group. Use your contacts into Microsoft to provide your Subscriptions IDs.
143143

144144
> [!IMPORTANT]
145-
> CMK capability is regional. Your Azure Key Vault, Storage Account, *Cluster* resource and associated Log Analytics workspaces must be in the same region, but they can be in different subscriptions.
145+
> CMK capability is regional. Your Azure Key Vault, *Cluster* resource and associated Log Analytics workspaces must be in the same region, but they can be in different subscriptions.
146146
147147
### Storing encryption key (KEK)
148148

149-
Create an Azure Key Vault resource, then generate or import a key to be used for data encryption.
149+
Create or use an Azure Key Vault that you already have, to generate or import a key to be used for data encryption.
150150

151-
The Azure Key Vault must be configured as recoverable to protect your key and the access to your Azure Monitor data.
151+
The Azure Key Vault must be configured as recoverable to protect your key and the access to your data in Azure Monitor.
152152

153153
These settings are available via CLI and PowerShell:
154154
- [Soft Delete](https://docs.microsoft.com/azure/key-vault/key-vault-ovw-soft-delete)
@@ -157,9 +157,11 @@ These settings are available via CLI and PowerShell:
157157

158158
### Create *Cluster* resource
159159

160-
This resource is used as intermediate identity connection between your Key Vault and your workspaces. After you receive confirmation that your subscriptions were whitelisted, create a Log Analytics *Cluster* resource at the region where your workspaces are located. Application Insights and Log Analytics require separate Cluster resources. The type of the *Cluster* resource is defined at creation time by setting the clusterType property to either LogAnalytics, or ApplicationInsights. The Cluster resource type can’t be altered.
160+
This resource is used as an intermediate identity connection between your Key Vault and your workspaces. After you receive confirmation that your subscriptions were whitelisted, create a Log Analytics *Cluster* resource at the region where your workspaces are located. Application Insights and Log Analytics require separate *Cluster* resources types. The type of the *Cluster* resource is defined at creation time by setting the "clusterType" property to either "LogAnalytics", or "ApplicationInsights". The Cluster resource type can’t be altered after.
161161

162-
For Application Insights CMK configuration, follow the Appendix content for this step.
162+
For Application Insights CMK configuration, follow the Appendix content.
163+
164+
You must specify the capacity reservation level (sku) for the *Cluster* resource. The capacity reservation level can be in the range of 1000 to 2000 and in steps of 100. If you need capacity reservation level higher than 2000, reach your Microsoft contact to enable it. This property doesn’t affect billing currently -- once pricing model for dedicated cluster is introduced, billing will apply to any existing CMK deployments.
163165

164166
**Create**
165167

@@ -171,15 +173,18 @@ Content-type: application/json
171173
{
172174
"location": "<region-name>",
173175
"properties": {
174-
"clusterType": "LogAnalytics"
176+
"clusterType": "LogAnalytics",
177+
"sku": {
178+
"name": "CapacityReservation",
179+
"capacityReservationLevel": 1000
180+
}
175181
},
176182
"identity": {
177183
"type": "systemAssigned"
178184
}
179185
}
180186
```
181187
The identity is assigned to the *Cluster* resource at creation time.
182-
"clusterType" value is "ApplicationInsights" for Application Insights CMK.
183188

184189
**Response**
185190

@@ -194,7 +199,11 @@ https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<res
194199

195200
### Azure Monitor data-store (ADX cluster) provisioning
196201

197-
During the early access period of the feature, the ADX cluster is provisioned manually by the product team once the previous steps are completed. Use your Microsoft channel to provide the *Cluster* resource details. Copy the JSON response from the *Cluster* resource GET REST API:
202+
During the early access period of the feature, the ADX cluster is provisioned manually by the product team once the previous steps are completed. Use your Microsoft channel to provide the *Cluster* resource details.
203+
204+
> [!IMPORTANT]
205+
> Copy and provide the JSON response of the *Cluster* resource GET REST API
206+
> You will need details from this response for later steps too
198207
199208
```rst
200209
GET https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.OperationalInsights/clusters/<cluster-name>?api-version=2019-08-01-preview
@@ -210,10 +219,15 @@ Authorization: Bearer <token>
210219
"principalId": "principal-id"
211220
},
212221
"properties": {
213-
"provisioningState": "Succeeded",
222+
"provisioningState": "ProvisioningAccount",
214223
"clusterType": "LogAnalytics",
215224
"clusterId": "cluster-id"
216-
},
225+
"sku": {
226+
"name": "CapacityReservation",
227+
"capacityReservationLevel": 1000,
228+
"lastSkuUpdate": "Sun, 22 Mar 2020 15:39:29 GMT"
229+
}
230+
},
217231
"id": "/subscriptions/subscription-id/resourceGroups/resource-group-name/providers/Microsoft.OperationalInsights/clusters/cluster-name",
218232
"name": "cluster-name",
219233
"type": "Microsoft.OperationalInsights/clusters",
@@ -223,17 +237,9 @@ Authorization: Bearer <token>
223237

224238
"principal-id" is a GUID generated by the managed identity service for the *Cluster* resource.
225239

226-
> [!IMPORTANT]
227-
> Copy and keep the "principal-id" value since you will need it in next steps.
228-
229-
230240
### Grant Key Vault permissions
231241

232-
> [!IMPORTANT]
233-
> This step should be carried after you received confirmation from the product group through your Microsoft channel that the Azure Monitor data-store (ADX cluster) provisioning was fulfilled. Updating the Key Vault access policy prior to this provisioning may fail.
234-
235-
Update your Key Vault with a new access policy that grant permissions to your *Cluster* resource. These permissions are used by the underlaying Azure Monitor Storage for data encryption.
236-
Open your Key Vault in Azure portal and click "Access Policies" then "+ Add Access Policy" to create a new policy with these settings:
242+
Update your Key Vault with a new access policy that grants permissions to your *Cluster* resource. These permissions are used by the underlay Azure Monitor Storage for data encryption. Open your Key Vault in Azure portal and click "Access Policies" then "+ Add Access Policy" to create a policy with these settings:
237243

238244
- Key permissions: select 'Get', 'Wrap Key' and 'Unwrap Key' permissions.
239245
- Select principal: enter the principal-id value that returned in the response in the previous step.
@@ -244,7 +250,9 @@ The *Get* permission is required to verify that your Key Vault is configured as
244250

245251
### Update Cluster resource with Key identifier details
246252

247-
This step applies for future key version updates in your Key Vault. Update the *Cluster* resource with Key Vault *Key identifier* details, to allow Azure Monitor Storage to use the new key version. Select the current version of your key in Azure Key Vault to get the Key identifier details.
253+
This step applies per initial and future key version updates in your Key Vault. It informs Azure Monitor Storage about the new key version.
254+
255+
To update the *Cluster* resource with your Key Vault *Key identifier* details, select the current version of your key in Azure Key Vault to get the Key identifier details.
248256

249257
![Grant Key Vault permissions](media/customer-managed-keys/key-identifier-8bit.png)
250258

@@ -284,11 +292,11 @@ Content-type: application/json
284292
"principalId": "principle-id"
285293
},
286294
"properties": {
287-
"KeyVaultProperties": {
288-
KeyVaultUri: "https://key-vault-name.vault.azure.net",
289-
KeyName: "key-name",
290-
KeyVersion: "current-version"
291-
},
295+
"KeyVaultProperties": {
296+
KeyVaultUri: "https://key-vault-name.vault.azure.net",
297+
KeyName: "key-name",
298+
KeyVersion: "current-version"
299+
},
292300
"provisioningState": "Succeeded",
293301
"clusterType": "LogAnalytics",
294302
"clusterId": "cluster-id"
@@ -302,20 +310,48 @@ Content-type: application/json
302310

303311
### Workspace association to *Cluster* resource
304312

305-
> [!NOTE]
306-
> This step should be carried **ONLY** after you received confirmation
307-
> from the product group through your Microsoft channel that the
308-
> **Azure Monitor data-store (ADX cluster) provisioning** was
309-
> fulfilled. If you associate workspaces and ingest data prior to this
310-
> **provisioning**, the data will be dropped and won't be recoverable.
313+
> [!IMPORTANT]
314+
> This step should be carried after the ADX cluster provisioning. If you associate workspaces and ingest data prior to the provisioning, ingested data before the provisioning will be dropped and won't be recoverable.
315+
> To verify that the ADX cluster is provisioned and you can start associating workspaces to it, execute the this REST API and check that "provisioningState" value in the response is "Succeeded".
316+
317+
```rst
318+
GET https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.OperationalInsights/clusters/<cluster-name>?api-version=2019-08-01-preview
319+
Authorization: Bearer <token>
320+
```
321+
322+
**Response**
323+
```json
324+
{
325+
"identity": {
326+
"type": "SystemAssigned",
327+
"tenantId": "tenant-id",
328+
"principalId": "principal-id"
329+
},
330+
"properties": {
331+
"provisioningState": "Succeeded",
332+
"clusterType": "LogAnalytics",
333+
"clusterId": "cluster-id"
334+
"sku": {
335+
"name": "CapacityReservation",
336+
"capacityReservationLevel": 1000,
337+
"lastSkuUpdate": "Sun, 22 Mar 2020 15:39:29 GMT"
338+
}
339+
},
340+
"id": "/subscriptions/subscription-id/resourceGroups/resource-group-name/providers/Microsoft.OperationalInsights/clusters/cluster-name",
341+
"name": "cluster-name",
342+
"type": "Microsoft.OperationalInsights/clusters",
343+
"location": "region-name"
344+
}
345+
```
311346

312347
For Application Insights CMK configuration, follow the Appendix content for this step.
313348

314-
You need to have write permissions on both your workspace and *Cluster* resource to perform this operation, which include these actions:
349+
You need to have 'write' permissions to both your workspace and *Cluster* resource to perform this operation, which include these actions:
315350

316351
- In workspace: Microsoft.OperationalInsights/workspaces/write
317352
- In *Cluster* resource: Microsoft.OperationalInsights/clusters/write
318353

354+
**Associate a workspace**
319355
```rst
320356
PUT https://management.azure.com/subscriptions/<subscription-id>/resourcegroups/<resource-group-name>/providers/microsoft.operationalinsights/workspaces/<workspace-name>/linkedservices/cluster?api-version=2019-08-01-preview
321357
Authorization: Bearer <token>
@@ -414,7 +450,7 @@ All your data is accessible after the key rotation operation including data inge
414450

415451
- CMK encryption applies to newly ingested data after the CMK
416452
configuration. Data that was ingested prior to the CMK
417-
configuration, remaines encrypted with Microsoft key. You can query
453+
configuration, remains encrypted with Microsoft key. You can query
418454
data before and after the CMK configuration seamlessly.
419455

420456
- Once workspace is associated to a *Cluster* resource, it cannot be
@@ -455,7 +491,7 @@ All your data is accessible after the key rotation operation including data inge
455491

456492
- If you try to delete a *Cluster* resource that is associated to a workspace, the delete operation will fail.
457493

458-
- Use this API to get all *Cluster* resources for a resource group:
494+
- Get all *Cluster* resources for a resource group:
459495

460496
```rst
461497
GET https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.OperationalInsights/clusters?api-version=2019-08-01-preview
@@ -492,7 +528,7 @@ All your data is accessible after the key rotation operation including data inge
492528
}
493529
```
494530

495-
- Use this API call to Get all *Cluster* resources for a subscription:
531+
- Get all *Cluster* resources for a subscription:
496532

497533
```rst
498534
GET https://management.azure.com/subscriptions/<subscription-id>/providers/Microsoft.OperationalInsights/clusters?api-version=2019-08-01-preview
@@ -503,8 +539,7 @@ All your data is accessible after the key rotation operation including data inge
503539

504540
The same response as for '*Cluster* resources for a resource group', but in subscription scope.
505541

506-
- Use this API call to delete a *Cluster* resource -- You need to delete all the associated workspaces before you can delete
507-
your *Cluster* resource:
542+
- Delete a *Cluster* resource -- a soft-delete operation is performed to allow the recovery of your *Cluster* resource, your data and associated workspaces within 14 days, whether the deletion was accidental or intentional. After the soft-delete period, your *Cluster* resource and data are non-recoverable. The *Cluster* resource name remains reserved during the soft-delete period and you can’t create a new cluster with that name.
508543

509544
```rst
510545
DELETE
@@ -516,6 +551,8 @@ your *Cluster* resource:
516551

517552
200 OK
518553

554+
- Recover your *Cluster* resource and your data -- during the soft-delete period, create a *Cluster* resource with the same name and in the same subscription, resource group and region. Follow the **Create *Cluster* resource** step to recover your *Cluster* resource.
555+
519556

520557
## Appendix
521558

@@ -595,11 +632,47 @@ Identity is assigned to the *Cluster* resource at creation time.
595632
596633
### Associate a component to a *Cluster* resource using [Components - Create Or Update](https://docs.microsoft.com/rest/api/application-insights/components/createorupdate) API
597634

598-
You need to have write permissions on both your component and *Cluster* resource to perform this operation, which include these actions:
635+
You need to have 'write' permissions on both your component and *Cluster* resource to perform this operation, which include these actions:
599636

600637
- In component: Microsoft.Insights/component/write
601638
- In *Cluster* resource: Microsoft.OperationalInsights/clusters/write
602639

640+
> [!IMPORTANT]
641+
> This step should be carried after the ADX cluster provisioning. If you associate a component and ingest data prior to the provisioning, ingested data before the provisioning will be dropped and won't be recoverable.
642+
> To verify that the ADX cluster is provisioned and you can start associating component to it, execute the this REST API and check that "provisioningState" value in the response is "Succeeded".
643+
644+
```rst
645+
GET https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.OperationalInsights/clusters/<cluster-name>?api-version=2019-08-01-preview
646+
Authorization: Bearer <token>
647+
```
648+
649+
**Response**
650+
```json
651+
{
652+
"identity": {
653+
"type": "SystemAssigned",
654+
"tenantId": "tenant-id",
655+
"principalId": "principal-id"
656+
},
657+
"properties": {
658+
"provisioningState": "Succeeded",
659+
"clusterType": "ApplicationInsights",
660+
"clusterId": "cluster-id"
661+
"sku": {
662+
"name": "CapacityReservation",
663+
"capacityReservationLevel": 1000,
664+
"lastSkuUpdate": "Sun, 22 Mar 2020 15:39:29 GMT"
665+
}
666+
},
667+
"id": "/subscriptions/subscription-id/resourceGroups/resource-group-name/providers/Microsoft.OperationalInsights/clusters/cluster-name",
668+
"name": "cluster-name",
669+
"type": "Microsoft.OperationalInsights/clusters",
670+
"location": "region-name"
671+
}
672+
```
673+
674+
**Associate a component**
675+
603676
```rst
604677
PUT https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.Insights/components/<component-name>?api-version=2015-05-01
605678
Authorization: Bearer <token>

0 commit comments

Comments
 (0)