Il controllo degli accessi basato sui ruoli (RBAC, Role Based Access Control) è un metodo per limitare l'accesso in base ai ruoli degli utenti all'interno di un'organizzazione. Sono disponibili i ruoli predefiniti ed è possibile creare nuovi ruoli selezionando le autorizzazioni preferite e mappando questi ruoli ai gruppi di utenti. Il mapping dei ruoli ai gruppi di utenti consente a tutti gli utenti di tale gruppo di eseguire le operazioni associate al ruolo.
In questa sezione viene descritto come un microservizio può definire il proprio set di autorizzazioni RBAC.
Per definire le autorizzazioni statiche:
{
"service":"service-name",
"permissions": [
{
"group": "group-name",
"actions": [
{"name":"action-name","displayName":"Display name to be shown in roles page"}
]
}
]
}
Per creare, gestire e rimuovere le autorizzazioni all'interno di un gruppo di credenziali, fare riferimento all'esempio seguente.
Per registrare le autorizzazioni:
const { rbacHelper, rbacSpecProcessorHelper } = require('@cisco-bpa-platform/mw-util-common-app');
let resources = require('./config/asset-manager-permissions-spec');
let rbacSpecProcessorObj = rbacSpecProcessorHelper.getRbacSpecProcessorUtil();
rbacSpecProcessorObj.setSpec(resources);
await rbacSpecProcessorObj.process();
Gli utenti possono visualizzare le autorizzazioni registrate nelle pagine Crea ruolo e Modifica ruolo.
Le autorizzazioni create nella sezione precedente possono essere mappate ai ruoli per impostazione predefinita o mediante la definizione di mapping con i ruoli.
Per mappare le autorizzazioni definite ai ruoli predefiniti, creare un nuovo file JSON nel percorso microservice/src/config/device-role-permissions-mapping-spec.json.
Nell'esempio seguente vengono mappate tre (3) autorizzazioni al ruolo BPA Super Admin, due (2) al ruolo Tenant Admin e una (1) al ruolo Network Operator.
{
"service": "AssetManagerService",
"roles": [
{
"name": "BPA Super Admin",
"permissions": [
{"name":"view","displayName":"View Asset Credentials","group": "credential"},
{"name":"remove","displayName":"Remove Asset Credentials","group": "credential"},
{"name":"manage","displayName":"Manage Asset Credentials Add, Update and Delete Asset Credentials","group": "credential"}
]
},
{
"name": "Tenant Admin",
"permissions": [
{"name":"view","displayName":"View Asset Credentials","group": "credential"},
{"name":"remove","displayName":"Remove Asset Credentials","group": "credential"}
]
},
{
"name": "Network Operator",
"permissions": [
{"name":"view","displayName”:"View Asset Credentials","group": "credential"}
]
}
]
}
Per aggiornare il mapping delle autorizzazioni:
const { rbacHelper, rbacPermissionMappingHelper } = require('@cisco-bpa-platform/mw-util-common-app');
let rbacUtilObj = rbacHelper.getRbacUtilObj();
let registryDetails = await rbacUtilObj getRegistryByName({}, 'device-role-permissions-mapping-spec');
if (Array.isArray(registryDetails) && registryDetails.length === 0) {
let rbacPermissionMappingSpecProcessorObj = rbacPermissionMappingHelper.getRbacSpecProcessorUtil() ;
let rolePermissions = require('./config/device-role-permissions-mapping-spec');
rbacPermissionMappingSpecProcessorObj.setSpec(rolePermissions);
await rbacPermissionMappingSpecProcessorObj.process();
let rbacUtilObjRegister = rbacHelper.getRbacUtilObj();
await rbacUtilObjRegister addRegistry({}, 'device-role-permissions-mapping-spec');
}
async function permissionsSpecProcessor() {
let resources = require('./config/device-permissions-spec');
let rbacSpecProcessorObj = rbacSpecProcessorHelper.getRbacSpecProcessorlltil();
rbacSpecProcessorObj.setSpec(resources);
await rbacSpecProcessorObj.process();
let rbacUtilObj = rbacHelper.getRbacUtilObj();
let registryDetails = await rbacUtilObj.getRegistryByName({} 'device-role-permissions-mapping-spec');
if (Array.isArray(registryDetails) && registryDetails.length === 0) {
let rbacPermissionMappingSpecProcessorObj = rbacPermissionMappingHelper.getRbacSpecProcessorUtil();
let rolePermissions = require('./config/device-role-permissions-mapping-spec');
rbacPermissionMappingSpecProcessorObj.setSpec(rolePermissions);
await rbacPermissionMappingSpecProcessorObj.process();
let rbacUtilObjRegister = rbacHelper.getRbacUtilObj();
await rbacUtilObjRegister.addRegistry({}, 'device-role-permissions-mapping-spec');
}
}
| Revisione | Data di pubblicazione | Commenti |
|---|---|---|
1.0 |
23-Sep-2025
|
Versione iniziale |