RBAC(Role Based Access Control)는 기업 내 사용자의 역할에 따라 액세스를 제한하는 방법입니다. 기본 역할을 사용할 수 있으며 기본 권한을 선택하고 이러한 역할을 사용자 그룹에 매핑하여 새 역할을 만들 수 있습니다. 사용자 그룹에 역할을 매핑하면 해당 사용자 그룹의 모든 사용자가 역할과 관련된 작업을 수행할 수 있습니다.
이 섹션에서는 마이크로서비스가 자체 RBAC 권한 집합을 정의하는 방법에 대해 설명합니다.
정적 권한을 정의하려면
{
"service":"service-name",
"permissions": [
{
"group": "group-name",
"actions": [
{"name":"action-name","displayName":"Display name to be shown in roles page"}
]
}
]
}
자격 증명 그룹 내에서 보기, 관리 및 사용 권한을 만들려면 다음 예를 참조하십시오.
권한을 등록하려면
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();
사용자는 Create Role(역할 생성) 및 Edit Role(역할 수정) 페이지에서 등록된 권한을 볼 수 있습니다.
이전 섹션에서 만든 권한은 기본적으로 역할에 매핑하거나 역할과의 매핑을 정의하여 역할에 매핑할 수 있습니다.
정의된 권한을 기본 역할에 매핑하려면 microservice/src/config/device-role-permissions-mapping-spec.json 경로에 새 JSON 파일을 만듭니다.
아래 예에서 3개의 권한은 BPA 수퍼 관리자 역할에 매핑되고, 2개는 테넌트 관리자 역할에 매핑되며, 1개는 네트워크 운영자 역할에 매핑됩니다.
{
"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"}
]
}
]
}
권한 매핑을 갱신하려면
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');
}
}
| 개정 | 게시 날짜 | 의견 |
|---|---|---|
1.0 |
23-Sep-2025
|
최초 릴리스 |