ロールベースのアクセス制御(RBAC)

ロールベースのアクセス制御(RBAC)は、割り当てられたロールに基づいて、許可されたユーザのみがリソースにアクセスできるようにするセキュリティ手法です。SUSE Multi-Linux Managerでは、RBACによりユーザは明示的に許可されたアクションやリソースへのアクセスのみを実行できるようになり、セキュリティが強化され、管理が簡素化されます。

RBACのコア原則は次のとおりです。

  • 最小権限の原則: ユーザがタスクを実行するために必要なアクセス権のみを付与する。

  • きめ細かな制御: 特定の機能に対してきめ細かな制御を提供する。

  • 職務の分離: 単一ユーザが重要なプロセスに対して過度に制御することを防止する。

  • 監査可能性: ユーザのアクションと許可を明確に追跡できるようにする。

1. Architectural scope

In SUSE Multi-Linux Manager, RBAC controls only the Web UI and the SUSE Multi-Linux Manager API (XML-RPC and JSON-RPC) layers. The RBAC engine controls access to these interfaces.

RBAC does not control the native authentication of the Salt API (salt-api or eauth) for external users. The Salt API is an internal service. The system permits access to the Salt API port (port 9080) only from the internal loopback interface of the SUSE Multi-Linux Manager Server. Only Tomcat and Taskomatic services on the server can use the Salt API. External users cannot log in to the Salt API directly. Instead, SUSE Multi-Linux Manager authenticates the user, checks their RBAC permissions, and then runs Salt commands on behalf of the user. For more information about native Salt authentication and command-line access controls, see Salt Access Control.

2. Key RBAC concepts

効果的なRBAC管理には、以下のコア概念を理解することが重要です。

  • Role: A collection of permissions defining a specific set of capabilities within SUSE Multi-Linux Manager.

    ロールはユーザに割り当てられ、ユーザに集約された許可を付与します。

  • 許可: SUSE Multi-Linux Manager内で特定のアクションを実行したり、特定のWebページにアクセスしたり、特定のAPIエンドポイントを呼び出したりするためのアトミック認可。SUSE Multi-Linux Managerでは、許可はネームスペースとそのアクセスモードによって表されます。

  • ユーザ: SUSE Multi-Linux Managerとやり取りする個々のアカウント。ユーザには1つ以上のロールが割り当てられます。

  • ネームスペース: ツリーのような構造で構成された、アクセス制御のきめ細かな単位。ほとんどのネームスペースには、明確な「表示」モードまたは「変更」モードがあります。

3. User roles in SUSE Multi-Linux Manager

SUSE Multi-Linux Managerでは、事前定義されたロールを提供し、オプションで、他のロールの組み合わせを継承して追加のカスタムロールを定義することもできます。

3.1. Predefined roles

事前定義済みロールとその説明の完全なリストについては、administration:users.adoc#administrator-rolesを参照してください。

3.2. Defining additional roles

追加のロールを定義するには、次の操作を実行できます。

  • 許可を継承する既存のロールを複数選択する。

  • アクセスを許可する追加のネームスペースを指定する。

4. Namespaces for fine-grained access

ネームスペースはツリーのような構造で構成された、きめ細かなアクセス制御を提供します。ほとんどのネームスペースでは、ネームスペース内のアクセスは「表示」モードと「変更」モードによってさらに細分化されます。

Table 1. 例: イメージ管理のネームスペースとアクセスモード
Namespace Access Mode Description

cm.build

Modify

Build container or Kiwi images

cm.image.import

Modify

Import container images from a registered image store

cm.image.list

View

List all images

cm.image.list

Modify

Delete images

cm.image.overview

View

View image details, patches, packages, build log and cluster information

cm.image.overview

Modify

Inspect, rebuild, delete images

cm.profile.details

View

View details of an image profile

cm.profile.details

Modify

Create image profiles, edit profile details

cm.profile.list

View

List all image profiles

cm.profile.list

Modify

Delete image profiles

cm.store.details

View

View details of an image store

cm.store.details

Modify

Create image stores, edit store details

cm.store.list

View

List all image stores

cm.store.list

Modify

Delete image stores

Table 2. Example: Salt namespaces and access modes
Namespace Access Mode Description

salt.remote_commands

Modify

Execute remote commands on systems through the Web UI (Salt  Remote Commands)

salt.keys

View

View Salt client keys (Salt  Keys)

salt.keys

Modify

Accept, reject, or delete Salt client keys

salt.formulas

View

View formula catalog and formula configuration data (Salt  Formula Catalog)

api.ansible.fetch_playbook_contents

Modify

Fetch playbook content from the control node using a synchronous Salt call

api.configchannel.sync_salt_files_on_disk

Modify

Synchronize all files on disk to the current state of the database

api.proxy.bootstrap_proxy

Modify

Deploy a proxy container on a given Salt client

api.saltkey.accept

Modify

Accept a Salt client key through the API

api.saltkey.accepted_list

View

List accepted Salt keys through the API

api.saltkey.delete

Modify

Delete a Salt client key through the API

api.saltkey.denied_list

View

List denied Salt keys through the API

api.saltkey.pending_list

View

List pending Salt keys through the API

api.saltkey.reject

Modify

Reject a Salt client key through the API

api.saltkey.rejected_list

View

List rejected Salt keys through the API

api.system.bootstrap

Modify

Bootstrap a client system for Salt or Salt SSH management

api.system.bootstrap_with_private_ssh_key

Modify

Bootstrap a system for Salt or Salt SSH management using a private SSH key

api.system.get_minion_id_map

View

Retrieve a mapping between Salt minion identifiers and system identifiers

A comprehensive list of namespaces and their descriptions can be retrieved by making a call to the access.listNamespaces API method. Refer to SUSE Multi-Linux Manager API documentation for detailed information, including request and response formats.

5. RBACの管理

Managing RBAC roles and permissions is possible either through the API or through the Web UI. To assign roles to users via the Web UI, refer to ユーザー.

5.1. Managing RBAC via Web UI

In the Web UI, you can manage custom RBAC roles and assign permissions by navigating to Admin  Access Control. From there, you can click Create Access Group to define a new role and configure its permissions. For more information about configuring access groups, see アクセスグループ管理.

Predefined roles cannot be seen or managed via the Web UI. Only custom roles created within your organization are visible in the Admin  Access Control section.

5.2. APIを介したRBACの管理

SUSE Multi-Linux Manager APIは、ロール、許可、およびユーザの割り当てをプログラムで管理するためのメソッドを提供します。

5.2.1. The access API

これらのAPIメソッドは、ロールとそれに関連するアクセスを管理します。

  • listNamespaces: Lists available namespaces, access modes and their descriptions in SUSE Multi-Linux Manager.

  • listPermissions: Lists permitted namespaces of a role.

  • listRoles: Lists existing roles in SUSE Multi-Linux Manager.

  • createRole: Creates a new role, optionally copying permissions from existing roles.

  • deleteRole: Deletes a role.

  • grantAccess: Grants access to namespaces.

  • revokeAccess: Revokes access to namespaces.

5.2.2. The user API

以下のAPIメソッドはユーザとロールの割り当てを管理します。

  • listPermissions: Lists effective permissions of a user.

  • listRoles: Lists a user’s assigned roles.

  • addRole: Assigns a role to a user.

  • removeRole: Removes a role from a user.

リクエストおよび応答形式を含む詳細なAPIドキュメントについては、SUSE Multi-Linux Manager APIリファレンスを参照してください。

6. RBAC best practices

これらのベストプラクティスに従うことで、安全で、効率的で、管理しやすいRBAC環境を維持できます。

  • 最小権限の原則: 職務を遂行するために必要な最小限の許可をユーザに常に付与します。過度に広範な許可は避けてください。

  • 定期的なレビュー: ユーザに割り当てられたロールと許可を定期的にレビューして、それらが依然として適切であり、現在のセキュリティポリシーに準拠していることを確認します。

  • ロールの文書化: 作成する各カスタムロールの目的と許可を明確に文書化します。

  • 職務の分離: 単一ユーザが重要なプロセスに対して過度に制御することを防止するため、職務の分離を強制するロールを実装します。