# Key Vault RBAC Migration

Microsoft is shifting Azure Key Vault toward Azure RBAC as the default access control model for all new Key Vaults starting with API version **2026‑02‑01**. Read more [here](https://learn.microsoft.com/en-us/azure/key-vault/general/access-control-default?tabs=azure-cli).&#x20;

While RBAC isn’t strictly mandatory and **existing Key Vaults using access policies can continue operating as is,** tenants that create a new Key Vault after upgrading to the new API will get RBAC by default unless access policies are explicitly configured.

It may be a good idea to migrate to RBAC regardless, as it provides a more unified and scalable permission model aligned with Microsoft Entra ID and future-proofs your setup in the event Microsoft deprecates Key Vault access policies.

## Migration Guide

{% hint style="warning" %}
Account for downtime before proceeding. SCEPman will be unable to issue or verify certificates until permissions have migrated successfully.
{% endhint %}

{% stepper %}
{% step %}

### Navigate to your SCEPman Key Vault

Navigate to Azure > Key Vaults > *Your SCEPman Key Vault*&#x20;

<figure><img src="https://2535731700-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LoGejQeUQcw7lqnQ3WX%2Fuploads%2F9bKH9aF9Q6kydSEieT2V%2Fimage.png?alt=media&#x26;token=23dcdccb-c2c5-4514-8372-ab21f4aacaee" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}

### Review your existing Access Policies

Navigate to **Access policies** and document your SCEPman's access policies under **Application***.* The SCEPman access policies should share the same name as your SCEPman App Service (and any geo-redundant SCEPman App Services).&#x20;

*User* access policies do not need to be migrated as they won't affect SCEPman functionality. Users that require continued access should have their access policies reviewed and migrated to Azure roles based on the following table: <https://learn.microsoft.com/en-us/azure/key-vault/general/rbac-migration?tabs=cli#access-policy-templates-to-azure-roles-mapping>

<figure><img src="https://2535731700-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LoGejQeUQcw7lqnQ3WX%2Fuploads%2F2UbFjoOgavF5Igu7miQm%2Fimage.png?alt=media&#x26;token=960b3d8d-bfe6-4b21-a333-bd76f1cec7f1" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}

### Change the Permission Model

Change the Permission Model from **Vault access policy** to **Azure role-based access control**

<figure><img src="https://2535731700-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LoGejQeUQcw7lqnQ3WX%2Fuploads%2FfyT4DqTi3pkfZxT1IgjI%2Fimage.png?alt=media&#x26;token=089ef0fd-77f7-46bc-8658-bff619006329" alt=""><figcaption></figcaption></figure>

Pressing **Apply** will disconnect your SCEPman instance from the Key Vault until Azure Roles are assigned. Previous access policies will also be removed.
{% endstep %}

{% step %}

### Assign Azure Roles

Navigate to Access control (IAM) and assign the following roles to the **managed identity** of your SCEPman App Service (and any geo-redundant SCEPman App Services):

* Key Vault Certificates Officer
* Key Vault Crypto Officer
* Key Vault Secrets User

<figure><img src="https://2535731700-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LoGejQeUQcw7lqnQ3WX%2Fuploads%2FFfkpt5imnAJVZrgVlbCt%2Fimage.png?alt=media&#x26;token=afdda1b3-6353-4f2c-90eb-d99c20c4d9a9" alt=""><figcaption></figcaption></figure>

Roles must be assigned one at a time, however multiple identities can be assigned to one role.

<figure><img src="https://2535731700-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LoGejQeUQcw7lqnQ3WX%2Fuploads%2FzHWUGaIvBJDlZLB1aNIV%2Fimage.png?alt=media&#x26;token=db111569-53c0-4c79-9b76-3d176b304733" alt=""><figcaption></figcaption></figure>

The Certificate Master's managed identity (with -cm in its name) **does not** require access to the Key Vault.
{% endstep %}

{% step %}

### Check Key Vault Connectivity

Restart your SCEPman App Service, then navigate to your SCEPman homepage and ensure your Key Vault is connected.

<figure><img src="https://2535731700-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LoGejQeUQcw7lqnQ3WX%2Fuploads%2F3a2szozK7DVq7CGIvzYL%2Fimage.png?alt=media&#x26;token=144cf4b0-e176-461c-8327-6836010d5d59" alt=""><figcaption></figcaption></figure>
{% endstep %}
{% endstepper %}
