역할 기반 액세스 제어(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 내에서 특정 작업을 수행하거나, 특정 웹 페이지에 액세스하거나, 특정 API 엔드포인트를 호출하기 위한 단일 권한 부여입니다. SUSE Multi-Linux Manager에서 권한은 네임스페이스와 해당 액세스 모드로 표시됩니다.

  • 사용자: SUSE Multi-Linux Manager과(와) 상호 작용하는 개별 계정입니다. 사용자에게는 하나 이상의 역할이 할당됩니다.

  • 네임스페이스: 트리와 유사한 구조로 구성된 액세스 제어의 세분화된 단위입니다. 대부분의 네임스페이스에는 "보기" 또는 "수정" 모드가 있습니다.

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 환경을 유지하는 데 도움이 됩니다.

  • 최소 권한 원칙: 항상 사용자에게 업무 수행에 필요한 최소한의 권한만 부여합니다. 과도하게 광범위한 권한 부여는 적합하지 않습니다.

  • 정기 검토: 사용자에게 할당된 역할과 권한이 여전히 적절한지, 현재 보안 정책을 준수하는지 주기적으로 검토합니다.

  • 역할 문서화: 생성하는 각 사용자 정의 역할의 목적과 권한을 명확하게 문서화합니다.

  • 역할 분리: 한 명의 사용자가 중요한 프로세스를 너무 많이 제어하지 못하도록 업무 분리를 강제하는 역할을 구현합니다.