- はじめに

- 新しいアクセス許可

- 静的なアクセス許可の定義

- BPAへの権限の登録

- マッピング権限

- 権限マッピングの定義

- 権限マッピングの更新

はじめに

ロールベースアクセスコントロール(RBAC)は、企業内のユーザのロールに基づいてアクセスを制限する方法です。デフォルトのロールを使用できます。新しいロールを作成するには、適切な権限を選択し、これらのロールをユーザグループにマッピングします。ユーザグループにロールをマッピングすると、そのユーザグループ内のすべてのユーザが、ロールに関連付けられた操作を実行できるようになります。

新しいアクセス許可

ここでは、マイクロサービスが独自のRBACアクセス許可セットを定義する方法について説明します。

静的なアクセス許可の定義

静的な権限を定義するには、次の手順に従います。

1. microservice/src/config/device-permissions-spec.jsonパスにあるすべての権限をリストするJSONファイルを作成します。

2. 次のJSONコードを実行して、権限を一覧表示します。

{

"service":"service-name",

"permissions": [

{

"group": "group-name",

"actions": [

{"name":"action-name","displayName":"Display name to be shown in roles page"}

]

}

]

}

次の例を参照して、認証情報グループ内の権限の表示、管理、および削除を行います。

権限の作成例

BPAへの権限の登録

権限を登録するには、次の手順に従います。

1. rbacSpecProcessorHelperを@cisco-bpa-platform/mw-util-common-appからインポートします。

const { rbacHelper, rbacSpecProcessorHelper } = require('@cisco-bpa-platform/mw-util-common-app');

2. 次のコマンドを実行して、rbacSpecProcessorHelperを使用し、JSONファイルに一覧表示されている権限を処理します。

let resources = require('./config/asset-manager-permissions-spec');

let rbacSpecProcessorObj = rbacSpecProcessorHelper.getRbacSpecProcessorUtil();

rbacSpecProcessorObj.setSpec(resources);

await rbacSpecProcessorObj.process();

注：ユーザは@cisco-bpa-platform/mw-util-common-appで共有されているメソッドを参照して、ビューの登録、権限の管理、権限の削除を行うこともできます。

ユーザは、ロールの作成ページとロールの編集ページで登録済みの権限を表示できます。

ロールの作成

マッピング権限

前のセクションで作成した権限は、デフォルトでロールにマッピングすることも、ロールを使用したマッピングを定義してマッピングすることもできます。

権限マッピングの定義

定義された権限をデフォルトロールにマップするには、microservice/src/config/device-role-permissions-mapping-spec.jsonパスに新しいJSONファイルを作成します。

次の例では、3つの権限がBPAスーパー管理者ロールに、2つの権限がテナント管理者ロールに、1つの権限がネットワークオペレータロールにマッピングされています。

注：サービス名、グループ名、およびアクション名は、JSONファイルと同じように定義する必要があります。

{

"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"}

]

}

]

}

権限マッピングの更新

権限マッピングを更新するには、次の手順に従います。

1. rbacHelper、rbacPermissionMappingHelperを@cisco-bpa-platform/mw-util-common-appからインポートします。

const { rbacHelper, rbacPermissionMappingHelper } = require('@cisco-bpa-platform/mw-util-common-app');

2. 次のコマンドを実行して、権限のマッピングをロールで更新します。

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');

}

3. 次のコマンドを実行して、ファイルの処理、権限リストの作成、権限とロールのマッピングを行います。

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');

}

}

注：ユーザは@cisco-bpa-platform/mw-util-common-appで共有されているメソッドを参照して、権限のマッピングをロールに更新することもできます。