KR102535012B1 - Method Authorizing Access to Service Based on Microservice - Google Patents

Method Authorizing Access to Service Based on Microservice Download PDF

Info

Publication number
KR102535012B1
KR102535012B1 KR1020220132107A KR20220132107A KR102535012B1 KR 102535012 B1 KR102535012 B1 KR 102535012B1 KR 1020220132107 A KR1020220132107 A KR 1020220132107A KR 20220132107 A KR20220132107 A KR 20220132107A KR 102535012 B1 KR102535012 B1 KR 102535012B1
Authority
KR
South Korea
Prior art keywords
role
user
access
function
service
Prior art date
Application number
KR1020220132107A
Other languages
Korean (ko)
Inventor
최종호
정지모
Original Assignee
주식회사 플랜티넷
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 주식회사 플랜티넷 filed Critical 주식회사 플랜티넷
Priority to KR1020220132107A priority Critical patent/KR102535012B1/en
Application granted granted Critical
Publication of KR102535012B1 publication Critical patent/KR102535012B1/en

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/10Network architectures or network communication protocols for network security for controlling access to devices or network resources
    • H04L63/105Multiple levels of security
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • H04L63/083Network architectures or network communication protocols for network security for authentication of entities using passwords
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/20Network architectures or network communication protocols for network security for managing network security; network security policies in general

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Storage Device Security (AREA)

Abstract

A service access right assigning method based on a microservice is disclosed. The present embodiment provides the service access right assigning method based on a microservice which groups common services to generate them by function groups, generates a role having a list of access rights for each function group, assigns the role to a user to allow the user to conveniently have an access right for each function group, and assigns the role to a plurality of users in a duplicate manner to easily assign the same access right to the plurality of users.

Description

마이크로서비스 기반의 서비스 접근 권한 부여 방법{Method Authorizing Access to Service Based on Microservice}Method Authorizing Access to Service Based on Microservice

본 발명의 일 실시예는 마이크로서비스 기반의 서비스 접근 권한 부여 방법에 관한 것이다. An embodiment of the present invention relates to a microservice-based service access authorization method.

이하에 기술되는 내용은 단순히 본 실시예와 관련되는 배경 정보만을 제공할 뿐 종래기술을 구성하는 것이 아니다.The contents described below merely provide background information related to the present embodiment and do not constitute prior art.

마이크로서비스는 소프트웨어가 정의된 API를 통해 통신하는 소규모의 독립적인 서비스로 구성되어 있는 경우의 소프트웨어 개발을 위한 아키텍처 및 조직적 접근 방식이다. 마이크로서비스 아키텍처는 애플리케이션의 확장을 용이하게 하고 개발 속도를 앞당겨 혁신을 실현하고 새로운 기능의 출시 시간을 단축할 수 있다.Microservices are an architectural and organizational approach for software development where the software consists of small, independent services that communicate through defined APIs. A microservices architecture can facilitate application scalability and accelerate development to enable innovation and reduce time-to-market for new features.

모놀리식 아키텍처의 경우 모든 프로세스가 긴밀하게 결합되고 단일 서비스로 실행된다. 따라서, 애플리케이션의 한 프로세스에 대한 수요가 급증하면 해당 아키텍처 전체를 확장해야 한다. 코드 베이스가 증가하게 되면 모놀리식 애플리케이션의 기능을 추가하거나 개선하기가 더 복잡해진다. 복잡성으로 인해 실험에 제한을 받고 새로운 아이디어를 구현하기가 어려워지는 문제가 있다. 종속 관계를 이루며 긴밀하게 결합된 많은 프로세스로 인해 단일 프로세스의 실패로 인한 영향이 증가함에 따라 모놀리식 아키텍처는 애플리케이션 가용성에 대한 위험을 가중시킨다.In a monolithic architecture, all processes are tightly coupled and run as a single service. Therefore, when the demand for one process in an application spikes, the entire architecture must be scaled. Adding or improving functionality to a monolithic application becomes more complex as the code base grows. Complexity limits experimentation and makes it difficult to implement new ideas. Monolithic architectures increase the risk to application availability, as the impact of a single process failure increases due to many closely coupled processes with dependencies.

종래의 네트워크 디바이스는 대부분 사용자별로 서비스 접근 권한을 제공하지 않고 단지 CLI에 모드를 분리하여 모드별로 실행할 수 있는 명령어 셋(Set)만 다르게 제공하였다. 예컨대, CLI를 Standard 모드, Enable 모드, Configure 모드 3가지로 나누고, 각 모드별로 실행할 수 있는 명령어를 다르게 제공하여 사용자별로 서비스 접근 권한 제어가 불가능하였다.Most of the conventional network devices do not provide service access rights for each user, but only separate modes in CLI and provide different sets of commands that can be executed for each mode. For example, the CLI is divided into three modes: Standard mode, Enable mode, and Configure mode, and different commands that can be executed for each mode are provided, making it impossible to control service access rights for each user.

종래의 서비스 접근 권한을 제공 방식은 GUI 환경에서는 적용할 수 없는 방법이므로 GUI에서는 사용자별로 접근할 수 있는 페이지를 설정하거나 하여 서비스에 대한 접근 권한을 CLI와 다르게 일관성 없이 제공하는 문제가 있다.Since the conventional method of providing service access rights is not applicable in a GUI environment, there is a problem in that the GUI provides access rights to services inconsistently, unlike the CLI, by setting a page accessible to each user in the GUI.

본 실시예는 공통된 서비스를 그룹화하여 함수 그룹으로 생성하고, 함수 그룹별 접근 권한 셋의 리스트를 갖고 있는 롤(Role)을 생성하고, 롤을 사용자에게 부여하여 함수 그룹별로 사용자가 편리하게 접근권한을 갖도록 하며, 롤을 복수의 사용자에게 중복 할당하여 복수의 사용자가 손쉽게 동일한 접근 권한을 부여받도록 하는 마이크로서비스 기반의 서비스 접근 권한 부여 방법을 제공하는 데 목적이 있다.In this embodiment, a function group is created by grouping common services, a role having a list of sets of access rights for each function group is created, and the role is granted to a user so that the user can conveniently grant access rights for each function group. Its purpose is to provide a microservice-based service access authorization method that allows multiple users to easily receive the same access privileges by assigning roles to multiple users repeatedly.

본 실시예는 서브 식별자(Sub-identifier) 기반 접근 권한 할당을 이용하여 함수 그룹 내부에 일부 서브 식별자에 대해서만 접근 허용을 설정할 수 있어서 함수 그룹 전체가 아닌 함수 그룹 내 일부 서브 식별자에 대해서만 접근을 허용할 수 있도록 하는 마이크로서비스 기반의 서비스 접근 권한 부여 방법을 제공하는 데 또다른 목적이 있다.In this embodiment, access can be set for only some sub-identifiers within a function group using sub-identifier-based access rights assignment, so that access is allowed only for some sub-identifiers within the function group rather than the entire function group. Another purpose is to provide a microservice-based service access authorization method that enables

본 실시예의 일 측면에 의하면, 사용자 매니저에서 사용자 인증을 수행한 클라이언트로 액세스 토큰(Access token)을 발행하는 과정; 상기 클라이언트에서 상기 액세스 토큰을 첨부하여 마이크로-서비스 아키텍처의 내부 기능에 따라 세분화된 복수의 컴포넌트 중 서비스를 담당하는 컴포넌트로 서비스 호출 메시지를 전송하는 과정; 상기 서비스를 담당하는 컴포넌트에서 상기 사용자 매니저로부터 상기 액세스 토큰에 매칭된 롤(role)을 확인하는 과정; 상기 서비스를 담당하는 컴포넌트에서 상기 롤에 매칭된 접근권한(Access Right)을 확인하는 과정; 상기 서비스를 담당하는 컴포넌트에서 상기 롤에 매칭된 접근권한이 기 설정된 요구 접근권한(Required Access Right) 이상인 지의 여부를 확인하여 확인 결과를 생성하는 과정; 상기 확인 결과에 따라 상기 서비스를 담당하는 컴포넌트에서 상기 클라이언트가 접근하도록 접근 권한을 부여하는 과정;을 포함하는 것을 특징으로 하는 마이크로서비스 기반의 서비스 접근 권한 부여 방법을 제공한다.According to one aspect of this embodiment, the process of issuing an access token (Access token) from the user manager to the client that performed the user authentication; attaching the access token to the client and transmitting a service call message to a component in charge of a service among a plurality of components subdivided according to an internal function of a micro-service architecture; checking a role matched to the access token from the user manager in a component in charge of the service; checking an access right matched to the role in a component in charge of the service; generating a confirmation result by checking whether or not the access right matched to the role in the component in charge of the service is greater than or equal to a preset required access right; Provides a microservice-based service access authorization method comprising the step of granting access authorization for the client to access in a component in charge of the service according to the confirmation result.

이상에서 설명한 바와 같이 본 실시예에 의하면, 공통된 서비스를 그룹화하여 함수 그룹으로 생성하고, 함수 그룹별 접근 권한 셋의 리스트를 갖고 있는 롤(Role)을 생성하고, 롤을 사용자에게 부여함으로써 사용자에게 함수 그룹별로 접근권한을 편리하게 부여할 수 있도록 하며, 롤을 생성한 후 복수의 사용자에게 중복 할당하여 복수의 사용자가 손쉽게 동일한 접근 권한을 부여받도록 하는 효과가 있다.As described above, according to the present embodiment, a function group is created by grouping common services, a role having a list of access authority sets for each function group is created, and a role is granted to a user, thereby providing a function to the user. It is possible to conveniently grant access rights by group, and after creating a role, there is an effect of repeatedly assigning the same access rights to a plurality of users.

본 실시예에 의하면, 서브 식별자(Sub-identifier) 기반 접근 권한 할당을 이용하면 함수 그룹 내부에 일부 서브 식별자에 대해서만 접근 허용을 설정할 수도 있어서 함수 그룹 전체가 아닌 함수 그룹 내 일부 서브 식별자에 대해서만 접근을 허용할 수 있도록 하는 효과가 있다.According to the present embodiment, if sub-identifier-based access authority assignment is used, access can be set only for some sub-identifiers inside the function group, so that access is granted only to some sub-identifiers within the function group rather than the entire function group. It has the effect of making it acceptable.

본 실시예에 의하면, 관리 인터페이스와 무관하게 일관성 있게 사용자별로 동일한 서비스 접근을 제어할 수 있는 효과가 있다.According to the present embodiment, it is possible to control access to the same service for each user consistently regardless of the management interface.

도 1은 본 실시예에 따른 마이크로서비스 기반의 네트워크 디바이스 아키텍쳐를 나타낸 도면이다.
도 2는 본 실시예에 따른 사용자 매니저와 SCS에서 제공하는 RPC 함수를 나타낸 도면이다.
도 3은 본 실시예에 따른 컴포넌트들에서 제공하는 RPC 함수와 각 함수가 소속된 함수 그룹, 요구 접근권한, 외부 공개여부를 나타낸 도면이다.
도 4는 본 실시예에 따른 사용자 매니저에서 정의한 롤에 대한 함수 그룹과 접근권한 셋을 나타낸 도면이다.
도 5는 본 실시예에 따른 사용자 매니저에서 생성한 사용자별 롤 할당을 나타낸 도면이다.
도 6a,6b,6c,6d는 본 실시예에 따른 서비스 호출시 접근 권한이 없어서 거부되는 경우의 함수 호출 과정을 나타낸 도면이다.
도 7a,7b,7c,7d는 본 실시예에 따른 서비스 호출시 접근 권한이 허용되는 경우의 함수 호출 과정을 나타낸 도면이다.
도 8은 본 실시예에 따른 SCS의 함수 그룹, 서브 식별자, 접근가능 롤을 나타낸 도면이다.
도 9a,9b,9c,9d는 본 실시예에 따른 서브 식별자 기반의 접근 권한 확인 후 거부되는 경우의 함수 호출 과정을 나타낸 도면이다.
도 10은 본 실시예에 따른 SCS의 함수 그룹, 서브 식별자, 접근가능 롤을 나타낸 도면이다.
도 11a,11b,11c,11d는 본 실시예에 따른 서브 식별자 기반의 접근 권한 확인 후 허용되는 경우의 함수 호출 과정을 나타낸 도면이다.
도 12는 본 실시예에 따른 접근 권한 부여 방법을 설명하기 위한 순서도이다.
도 13a,13b,13c,13d,13e는 본 실시예에 따른 사용자 정보의 업데이트, 삭제 또는 롤 정보를 업데이트시 함수 호출 과정을 나타낸 도면이다.
도 14a,14b,14c,14d는 본 실시예에 따른 롤 정보 삭제 거부 시나리오 1에 대한 함수 호출 과정을 나타낸 도면이다.
도 15a,15b,15c,15d,15e는 본 실시예에 따른 롤 정보 삭제 거부 시나리오 2에 대한 함수 호출 과정을 나타낸 도면이다.
도 16a,16b,16c,16d,16e,16f는 본 실시예에 따른 롤 정보 삭제 허용 시나리오 3에 대한 함수 호출 과정을 나타낸 도면이다.
1 is a diagram showing a microservice-based network device architecture according to this embodiment.
2 is a diagram illustrating an RPC function provided by a user manager and an SCS according to the present embodiment.
3 is a diagram showing RPC functions provided by components according to the present embodiment, function groups to which each function belongs, requested access rights, and whether or not they are open to the outside world.
4 is a diagram showing function groups and access right sets for roles defined in the user manager according to the present embodiment.
5 is a diagram illustrating role assignment for each user created by the user manager according to the present embodiment.
6a, 6b, 6c, and 6d are diagrams illustrating a process of calling a function when a service call is denied due to lack of access authority according to the present embodiment.
7a, 7b, 7c, and 7d are diagrams illustrating a function call process when access authority is allowed when calling a service according to the present embodiment.
8 is a diagram illustrating function groups, sub identifiers, and accessible roles of the SCS according to the present embodiment.
9a, 9b, 9c, and 9d are diagrams illustrating a function call process in the case of rejection after checking access rights based on sub-identifiers according to the present embodiment.
10 is a diagram showing function groups, sub identifiers, and accessible roles of SCS according to this embodiment.
11a, 11b, 11c, and 11d are diagrams illustrating a function call process when permission is granted after checking access rights based on sub-identifiers according to the present embodiment.
12 is a flowchart for explaining a method for granting access authority according to this embodiment.
13a, 13b, 13c, 13d, and 13e are diagrams illustrating a process of calling a function when updating or deleting user information or updating role information according to the present embodiment.
14a, 14b, 14c, and 14d are diagrams illustrating a process of calling a function for role information deletion refusal scenario 1 according to the present embodiment.
15a, 15b, 15c, 15d, and 15e are diagrams illustrating a process of calling a function for role information deletion rejection scenario 2 according to the present embodiment.
16a, 16b, 16c, 16d, 16e, and 16f are diagrams illustrating a process of calling a function for role information deletion permission scenario 3 according to the present embodiment.

이하, 본 실시예를 첨부된 도면을 참조하여 상세하게 설명한다.Hereinafter, this embodiment will be described in detail with reference to the accompanying drawings.

도 1은 본 실시예에 따른 마이크로서비스 기반의 네트워크 디바이스 아키텍쳐를 나타낸 도면이다.1 is a diagram showing a microservice-based network device architecture according to this embodiment.

마이크로서비스 아키텍처의 경우, 애플리케이션이 독립적인 구성 요소로 구축되어 각 애플리케이션 프로세스가 서비스로 실행된다. 전술한 서비스는 경량 API를 사용하여 기 정의된 인터페이스를 이용하여 통신한다. 서비스는 비즈니스 기능을 위해 구축되며 서비스마다 한 가지 기능을 수행한다. 서비스가 독립적으로 실행되기 때문에 애플리케이션의 특정 기능에 대한 수요를 충족하도록 각각의 서비스를 업데이트, 배포 및 확장할 수 있다.In a microservices architecture, applications are built as independent components, with each application process running as a service. The aforementioned service communicates using a predefined interface using a lightweight API. Services are built for business functions, and each service performs one function. Because services run independently, each service can be updated, deployed, and scaled to meet the demands of a specific function in an application.

본 실시예에 따른 네트워크 패킷 브로커라는 네트워크 장비에서 마이크로 서비스라는 아키텍처로 구성된다.A network equipment called a network packet broker according to the present embodiment is composed of an architecture called a microservice.

본 실시예에 따른 마이크로 서비스 아키텍처는 내부 기능에 따라 세분화한 복수의 컴포넌트(컨피그 매니저(121), 사용자 매니저(122), 로그 매니저(123), SCS(124), 시스템 매니저(125), 커멘드 해석 쉘(126))를 포함한다.The microservice architecture according to this embodiment includes a plurality of components subdivided according to internal functions (config manager 121, user manager 122, log manager 123, SCS 124, system manager 125, command analysis shell 126).

복수의 컴포넌트(컨피그 매니저(121), 사용자 매니저(122), 로그 매니저(123), SCS(124), 시스템 매니저(125), 커멘드 해석 쉘(126)) 각각은 API(Application Programming Interface)를 이용하여 특정 서비스를 제공한다. 여기서, API는 애플리케이션이나 디바이스가 서로 간에 연결하여 통신할 수 있는 방법을 정의하는 규칙 세트를 의미한다. REST API 또는 RESTful API는 REST(REpresentational State Transfer) 아키텍처 스타일의 디자인 원칙을 준수하는 API를 의미한다.Each of the plurality of components (Config Manager 121, User Manager 122, Log Manager 123, SCS 124, System Manager 125, Command Analysis Shell 126) uses API (Application Programming Interface). to provide specific services. Here, API refers to a set of rules defining how applications or devices can connect and communicate with each other. A REST API or RESTful API refers to an API that conforms to the design principles of the REpresentational State Transfer (REST) architectural style.

복수의 컴포넌트(컨피그 매니저(121), 사용자 매니저(122), 로그 매니저(123), SCS(124), 시스템 매니저(125), 커멘드 해석 쉘(126)) 각각은 호출할 수 있는 기능을 외부에 API 형태로 노출 시킨다. 결과적으로 추가되는 기능들을 외부에서 API를 이용하여 호출만 하면은 해당 기능을 사용할 수 있다.Each of a plurality of components (Config Manager 121, User Manager 122, Log Manager 123, SCS 124, System Manager 125, Command Analysis Shell 126) has functions that can be called externally. exposed in the form of an API. As a result, the function can be used by simply calling the function added from the outside using the API.

본 실시예에 따른 마이크로서비스 기반의 네트워크 디바이스 아키텍쳐는 클라이언트(110), 시스템(120)을 포함한다. 마이크로서비스 기반의 네트워크 디바이스 아키텍쳐에 포함된 구성요소는 반드시 이에 한정되는 것은 아니다.The microservice-based network device architecture according to this embodiment includes a client 110 and a system 120 . Components included in the microservice-based network device architecture are not necessarily limited thereto.

네트워크 디바이스는 네트워크 패킷 브로커, 네트워크 스위치 등을 포함하는 네트워크 장치를 의미한다. A network device refers to a network device including a network packet broker, network switch, and the like.

클라이언트(110)가 프록시로 서비스를 호출하면 프록시는 호출된 메시지를 분석하여 해당 서비스를 담당하고 있는 컴포넌트를 찾고 해당 컴포넌트가 처리할 수 있는 형태로 가공하여 메시지를 전달한다. 메시지를 전달받은 컴포넌트는 요청 메시지를 처리한 후 프록시로 결과를 응답한다.When the client 110 calls a service with a proxy, the proxy analyzes the called message to find a component in charge of the corresponding service, processes it into a form that can be processed by the corresponding component, and delivers the message. The component that receives the message processes the request message and then returns the result to the proxy.

클라이언트(110)는 REST(Representational State Transfer) API(Application Programming Interface) 또는 RPC 프로토콜을 직접 호출하는 애플리케이션 형태일 수도 있다. 클라이언트(110)는 관리 웹사이트에 접속하는 웹 브라우저 형태일 수도 있다. 클라이언트(110)는 SSH(Secure Shell) 또는 Telnet에 접속하는 터미널 형태일 수도 있다.The client 110 may be in the form of an application that directly calls a Representational State Transfer (REST) API (Application Programming Interface) or RPC protocol. The client 110 may be in the form of a web browser that accesses the management website. The client 110 may be in the form of a terminal connecting to Secure Shell (SSH) or Telnet.

클라이언트(110)는 네트워크 디바이스를 설정하는 고객을 의미한다. 본 실시예에 따른 클라이언트(110)는 애플리케이션(112), 브라우저(114), 터미널(116)을 포함한다. 클라이언트(110)에 포함된 구성요소는 반드시 이에 한정되는 것은 아니다.The client 110 refers to a customer who configures a network device. The client 110 according to this embodiment includes an application 112 , a browser 114 , and a terminal 116 . Components included in the client 110 are not necessarily limited thereto.

애플리케이션(112)은 실질적으로 RPC(Remote Procedure Call) 인터페이스를 직접 호출을 하는 주체이다. 애플리케이션(112)은 REST 또는 RPC 인터페이스를 다이렉트하게 호출한다. The application 112 is actually a subject that directly calls a Remote Procedure Call (RPC) interface. Application 112 directly calls the REST or RPC interface.

애플리케이션(112)이 RPC 인터페이스를 이용하여 특정 함수를 호출하면, 시스템(120) 내의 복수의 모듈로 호출이 들어온다. 프록시가 호출을 받아가지고 시스템(120) 내의 복수의 모듈로 라우팅한다.When application 112 calls a particular function using the RPC interface, the call is made to a plurality of modules in system 120 . A proxy takes the call and routes it to a plurality of modules in the system 120.

브라우저(114)는 관리 웹을 이용하는 웹브라우저를 의미한다.The browser 114 means a web browser using the management web.

터미널(116)은 SSH(Secure Shell) 또는 Telnet을 이용하여 터미널 서비스를 제공할 때, 커맨드를 이용해서 설정할 수 있는 장비를 의미한다.The terminal 116 means a device that can be set using a command when providing a terminal service using Secure Shell (SSH) or Telnet.

클라이언트(110)는 액세스 토큰을 이용하여 서비스 담당 컴포넌트로 함수 그룹(Function Group)에 대한 서비스 호출 메시지를 전송한다.The client 110 transmits a service call message for a function group to a component in charge of a service using the access token.

본 실시예에 따른 시스템(120)은 복수의 컴포넌트를 포함한다.System 120 according to the present embodiment includes a plurality of components.

복수의 컴포넌트(컨피그 매니저(121), 사용자 매니저(122), 로그 매니저(123), SCS(124), 시스템 매니저(125), 커멘드 해석 쉘(126)) 각각은 설정을 저장하거나 적용하기 위해 수행해야 하는 별도의 작업이 없다.Each of a plurality of components (Config Manager 121, User Manager 122, Log Manager 123, SCS 124, System Manager 125, Command Analysis Shell 126) is performed to save or apply settings. There is no extra work to be done.

복수의 컴포넌트(컨피그 매니저(121), 사용자 매니저(122), 로그 매니저(123), SCS(124), 시스템 매니저(125), 커멘드 해석 쉘(126)) 각각에서 제공하는 RPC를 이용하여 네트워크 디바이스에 설정을 추가, 삭제, 업데이트할 수 있다.A plurality of components (config manager 121, user manager 122, log manager 123, SCS 124, system manager 125, command analysis shell 126) are provided by each network device using RPC. You can add, delete, or update settings in .

본 실시예에 따른 시스템(120)은 컨피그 매니저(121), 사용자 매니저(122), 로그 매니저(123), SCS(124), 시스템 매니저(125), 커멘드 해석 쉘(126), 프록시, 웹, SSH를 포함한다. 시스템(120)에 포함된 구성요소는 반드시 이에 한정되는 것은 아니다.The system 120 according to this embodiment includes a config manager 121, a user manager 122, a log manager 123, an SCS 124, a system manager 125, a command analysis shell 126, a proxy, a web, Includes SSH. Components included in the system 120 are not necessarily limited thereto.

본 실시예에 따른 시스템(120) 내의 복수의 컴포넌트(컨피그 매니저(121), 사용자 매니저(122), 로그 매니저(123), SCS(124), 시스템 매니저(125), 커멘드 해석 쉘(126)) 각각은 독립적으로 원하는 형태의 DB를 소유할 수 있다. A plurality of components (Config Manager 121, User Manager 122, Log Manager 123, SCS 124, System Manager 125, Command Interpretation Shell 126) in the system 120 according to the present embodiment. Each can independently own a desired type of DB.

시스템(120) 내의 복수의 컴포넌트(컨피그 매니저(121), 사용자 매니저(122), 로그 매니저(123), SCS(124), 시스템 매니저(125), 커멘드 해석 쉘(126)) 각각은 설정을 조회하거나 적용하기 위한 공통된 이름의 RPC(Remote Procedure Call)를 제공한다. 여기서, RPC는 별도의 원격 제어를 위한 코딩 없이 다른 주소 공간(Remote)의 함수나 프로시저를 호출할 수 있게 하는 프로세스 간 통신 기술을 의미한다.Each of a plurality of components (Config Manager 121, User Manager 122, Log Manager 123, SCS 124, System Manager 125, Command Interpretation Shell 126) in the system 120 queries settings. Provides a common name RPC (Remote Procedure Call) to apply or apply. Here, RPC means an inter-process communication technology that allows calling a function or procedure in another address space (Remote) without separate coding for remote control.

시스템(120) 내의 복수의 컴포넌트(컨피그 매니저(121), 사용자 매니저(122), 로그 매니저(123), SCS(124), 시스템 매니저(125), 커멘드 해석 쉘(126)) 각각은 서버 역할을 수행한다.Each of a plurality of components (Config Manager 121, User Manager 122, Log Manager 123, SCS 124, System Manager 125, Command Interpretation Shell 126) in the system 120 serves as a server. carry out

시스템(120) 내의 복수의 컴포넌트(컨피그 매니저(121), 사용자 매니저(122), 로그 매니저(123), SCS(124), 시스템 매니저(125), 커멘드 해석 쉘(126)) 각각은 RPC 인터페이스를 제공한다.Each of a plurality of components (Config Manager 121, User Manager 122, Log Manager 123, SCS 124, System Manager 125, Command Interpretation Shell 126) in the system 120 has an RPC interface. to provide.

외부 장비 입장에서는 시스템(120) 내의 복수의 컴포넌트(컨피그 매니저(121), 사용자 매니저(122), 로그 매니저(123), SCS(124), 시스템 매니저(125), 커멘드 해석 쉘(126))가 갖고 있는 서버 어드레스나 포트를 파악하기에 어려움이 존재하므로 프록시를 이용한다. From the point of view of external equipment, a plurality of components (config manager 121, user manager 122, log manager 123, SCS 124, system manager 125, command analysis shell 126) in the system 120 Since it is difficult to determine the server address or port you have, a proxy is used.

시스템(120) 내 컴포넌트 사이에도 서로 RPC 호출이 발생할 수 있다. 시스템(120) 내 컴포넌트 사이에도 서로 RPC 호출 발생시 직접 서비스를 호출할 수도 있으나 편의상 프록시를 거쳐서 서비스 호출을 수행한다.RPC calls may also occur between components within system 120 with each other. Even between components in the system 120, a service may be called directly when an RPC call occurs. However, for convenience, a service call is performed through a proxy.

마이크로서비스 기반의 네트워크 디바이스 아키텍쳐는 도 1에 도시된 바와 같다. 마이크로서비스 기반의 네트워크 디바이스 내부는 다양한 서비스를 제공하는 복수의 컴포넌트(컨피그 매니저(121), 사용자 매니저(122), 로그 매니저(123), SCS(124), 시스템 매니저(125), 커멘드 해석 쉘(126))를 포함한다.The microservice-based network device architecture is as shown in FIG. Inside the microservice-based network device, a plurality of components (Config Manager 121, User Manager 122, Log Manager 123, SCS 124, System Manager 125, Command Interpretation Shell ( 126)).

복수의 컴포넌트 각각은 필요에 따라 내부에 다양한 형태의 DB나 장치 또는 파일을 소유할 수 있다. 복수의 컴포넌트 각각은 외부로 RPC(Remote Procedure Call) 인터페이스를 제공하여 서비스를 제공한다. 복수의 컴포넌트 각각이 제공하는 RPC 인터페이스는 다양한 주소와 프로토콜을 가질 수 있기 때문에 직접 노출하여 서비스하기 보다는 프록시로 게이트웨이를 구축하여 서비스한다.Each of the plurality of components may have various types of DBs, devices, or files therein as needed. Each of the plurality of components provides a service by providing an RPC (Remote Procedure Call) interface to the outside. Since the RPC interface provided by each of the plurality of components can have various addresses and protocols, a gateway is constructed as a proxy rather than directly exposed and serviced.

프록시는 시스템(120) 내의 복수의 컴포넌트(컨피그 매니저(121), 사용자 매니저(122), 로그 매니저(123), SCS(124), 시스템 매니저(125), 커멘드 해석 쉘(126))가 갖고 있는 어드레스나 포트를 내외부 장비로 전달 및 연결한다. 프록시는 응답 메시지를 클라이언트(110)가 처리할 수 있는 형태로 재가공하여 메시지를 응답한다.A proxy is a number of components (Config Manager 121, User Manager 122, Log Manager 123, SCS 124, System Manager 125, Command Interpretation Shell 126) in the system 120. It transfers and connects addresses or ports to internal and external devices. The proxy responds by reprocessing the response message into a form that the client 110 can process.

Web 브라우저(114)를 이용하여 시스템(120) 내의 복수의 모듈로 접속하면, 시스템(120) 내의 복수의 컴포넌트(컨피그 매니저(121), 사용자 매니저(122), 로그 매니저(123), SCS(124), 시스템 매니저(125), 커멘드 해석 쉘(126))에 대한 프록시를 호출한다. SSH를 이용해서 호출된 서비스도 커멘드 해석 쉘(126)이 받아서, 프록시를 호출한다. When a plurality of modules in the system 120 are accessed using the web browser 114, a plurality of components in the system 120 (config manager 121, user manager 122, log manager 123, SCS 124 ), the system manager 125, and the proxy for the command interpretation shell 126) are called. The command interpretation shell 126 also receives a service called using SSH and calls a proxy.

컨피그 매니저(121)는 각 컴포넌트에서 설정을 조회하기 위한 RPC(*Show())의 호출을 통해서 설정을 저장할 수 있다. 컨피그 매니저(121)는 설정을 적용하기 위한 RPC(*Update() 등)의 호출을 통해서 설정을 적용할 수 있다.The config manager 121 may store settings through a call to RPC (*Show()) to inquire settings in each component. The config manager 121 may apply the settings through a call to RPC (*Update(), etc.) for applying the settings.

컨피그 매니저(121)는 새로운 기능이 필요할 때마다 새로운 마이크로 서비스를 하나씩 프록시로 업로드한 후 새로운 마이크로 서비스에서 요구하는 기능들을 API 형태로 제공하는 구조를 갖는다. 컨피그 매니저(121)는 네트워크 디바이스 설정을 저장 또는 적용하는 경우 클라이언트(110)로부터 프록시를 경유해서 설정값을 수신한다.The config manager 121 has a structure in which new microservices are uploaded one by one as a proxy whenever new functions are needed, and then functions required by the new microservices are provided in the form of an API. When storing or applying network device settings, the config manager 121 receives setting values from the client 110 via a proxy.

사용자 매니저(122)는 사용자와 사용자별 서비스 접근 권한을 관리하고 또한 사용자를 인증하는 컴포넌트를 의미한다. 사용자 매니저(122)는 사용자 인증, 사용자 생성, 사용자 권한 부여를 수행한다. 사용자 매니저(122)는 사용자 계정별로 롤을 할당한다. The user manager 122 refers to a component that manages users and service access rights for each user and also authenticates users. The user manager 122 performs user authentication, user creation, and user authorization. The user manager 122 allocates roles for each user account.

사용자 매니저(122)는 서비스 담당 컴포넌트로부터 수신한 토큰명을 기반으로 매칭된 사용자명을 체크한다. 사용자 매니저(122)는 사용자명을 기반으로 매칭되어 있는 기 정의된 롤을 체크한다. 사용자 매니저(122)는 롤들이 갖고 있는 함수 그룹별 접근권한들을 체크한다. 사용자 매니저(122)는 함수 그룹별 접근권한 중 가장 높은 접근권한을 전송한다.The user manager 122 checks a matched user name based on the token name received from the component in charge of the service. The user manager 122 checks a predefined role matched based on the user name. The user manager 122 checks access rights for each function group that roles have. The user manager 122 transmits the highest access right among access rights for each function group.

사용자 매니저(122)는 사용자 인증을 수행한 클라이언트(110)로 액세스 토큰을 발행한다.The user manager 122 issues an access token to the client 110 that has performed user authentication.

사용자 매니저(122)는 클라이언트(110)로부터 수신된 사용자 이름(Username), 패스워드(password)가 인증되는 경우, 클라이언트(110)에 대한 액세스 토큰을 발행하고, 액세스 토큰에 사용자 이름에 대응하는 사용자 정보를 매핑하여 자신의 캐시에 저장한다.When the user name and password received from the client 110 are authenticated, the user manager 122 issues an access token for the client 110, and user information corresponding to the user name in the access token. is mapped and stored in its own cache.

사용자 매니저(122)는 서비스 담당 컴포넌트로부터 액세스 토큰, 함수 그룹을 수신하고, 자신의 캐시에 기 저장된 정보를 기반으로 액세스 토큰, 함수 그룹에 대응하는 접근권한과 롤 리스트가 존재하는 지의 여부를 확인한 확인 결과를 생성한다.The user manager 122 receives the access token and function group from the component in charge of the service, and checks whether the access right and role list corresponding to the access token and function group exist based on information previously stored in its cache. produce results

사용자 매니저(122)는 캐시에 기 저장된 정보를 기반으로 액세스 토큰, 함수 그룹에 대응하는 접근권한과 롤 리스트가 존재하는 경우, 함수 그룹에 대응하는 접근권한과 롤 리스트를 서비스 담당 컴포넌트로 전송한다.The user manager 122 transmits the access right and role list corresponding to the function group to the component in charge of the service when the access token and the access right and the role list corresponding to the function group exist based on the information previously stored in the cache.

사용자 매니저(122)는 클라이언트(110)로부터 사용자 업데이트 함수, 사용자 삭제 함수, 롤 업데이트 함수 중 어느 하나의 함수가 호출되면, 자신의 캐시에서 사용자 업데이트, 사용자 삭제, 롤 업데이트 중 어느 하나가 발생한 정보를 삭제한다. 사용자 매니저(122)는 복수의 컴포넌트로 사용자 업데이트, 사용자 삭제, 롤 업데이트 중 어느 하나가 발생한 정보를 삭제하라고 지시한다.When any one of a user update function, a user delete function, and a role update function is called from the client 110, the user manager 122 stores information on which one of the user update, user delete, and role update has occurred in its cache. Delete. The user manager 122 instructs a plurality of components to delete information generated by any one of user update, user deletion, and role update.

사용자 매니저(122)는 클라이언트(110)로부터 롤 삭제 함수가 호출되면, 자신의 캐시에서 롤 삭제 함수에 대응하는 삭제 대상 롤을 매핑하고 있는 사용자가 있는지의 여부를 조회한다. 사용자 매니저(122)는 조회 결과, 삭제 대상 롤을 매핑하고 있는 사용자가 존재하는 경우, 삭제 대상 롤에 대한 삭제를 거부하고 클라이언트(110)로 오류를 응답한다.When the role deletion function is called from the client 110, the user manager 122 inquires whether there is a user mapping a role to be deleted corresponding to the role deletion function in its own cache. The user manager 122 rejects the deletion of the role to be deleted and responds with an error to the client 110 when, as a result of the inquiry, there is a user mapping the role to be deleted.

사용자 매니저(122)는 클라이언트로부터 롤 삭제 함수가 호출되면, 자신의 캐시에서 롤 삭제 함수에 대응하는 삭제 대상 롤을 매핑하고 있는 사용자가 있는지의 여부를 조회한다. 사용자 매니저(122)는 조회 결과, 삭제 대상 롤을 매핑하고 있는 사용자가 미존재하는 경우, 삭제 대상 롤을 매핑하고 있는 복수의 다른 컴포넌트가 존재하는 지의 여부를 확인한다. 사용자 매니저(122)는 확인 결과, 삭제 대상 롤을 매핑하고 있는 다른 컴포넌트가 존재하는 경우, 삭제 대상 롤에 대한 삭제를 거부하고 클라이언트로 오류를 응답한다.When the role deletion function is called from the client, the user manager 122 inquires whether there is a user mapping a role to be deleted corresponding to the role deletion function in its own cache. The user manager 122 checks whether a plurality of other components mapping the role to be deleted exist, when the user manager 122 does not have a user mapping the role to be deleted as a result of the inquiry. As a result of the confirmation, the user manager 122 rejects the deletion of the role to be deleted and responds with an error to the client, if there is another component mapping the role to be deleted.

사용자 매니저(122)는 클라이언트(110)로부터 롤 삭제 함수가 호출되면, 자신의 캐시에서 롤 삭제 함수에 대응하는 삭제 대상 롤을 매핑하고 있는 사용자가 있는지의 여부를 조회한다. 사용자 매니저(122)는 조회 결과, 삭제 대상 롤을 매핑하고 있는 사용자가 미존재하는 경우, 삭제 대상 롤을 매핑하고 있는 복수의 다른 컴포넌트가 존재하는 지의 여부를 확인한다. 사용자 매니저(122)는 확인 결과 삭제 대상 롤을 매핑하고 있는 다른 컴포넌트가 미존재하는 경우, 삭제 대상 롤을 삭제한다.When the role deletion function is called from the client 110, the user manager 122 inquires whether there is a user mapping a role to be deleted corresponding to the role deletion function in its own cache. The user manager 122 checks whether a plurality of other components mapping the role to be deleted exist, when the user manager 122 does not have a user mapping the role to be deleted as a result of the inquiry. As a result of the confirmation, the user manager 122 deletes the role to be deleted when there is no other component mapping the role to be deleted.

마이크로-서비스 아키텍처의 내부 기능에 따라 세분화된 복수의 컴포넌트(컨피그 매니저(121), 사용자 매니저(122), 로그 매니저(123), SCS(124), 시스템 매니저(125), 커멘드 해석 쉘(126)) 중 서비스를 담당하는 컴포넌트는 클라이언트(110)가 서비스를 호출하면 클라이언트(110)가 호출한 서비스에 대한 접근권한을 확인하기 위해서 사용자 매니저(122)로 액세스 토큰, 함수 그룹명을 파라미터로 첨부하여 사용자 접근권한 요청 메시지를 전송한다.Multiple components subdivided according to the internal functions of the micro-service architecture (Config Manager 121, User Manager 122, Log Manager 123, SCS 124, System Manager 125, Command Interpretation Shell 126) ), when the client 110 calls the service, the component in charge of the service attaches the access token and function group name to the user manager 122 as parameters to check the access authority for the service called by the client 110. Sends a user access permission request message.

마이크로-서비스 아키텍처의 내부 기능에 따라 세분화된 복수의 컴포넌트(컨피그 매니저(121), 사용자 매니저(122), 로그 매니저(123), SCS(124), 시스템 매니저(125), 커멘드 해석 쉘(126)) 중 서비스를 담당하는 컴포넌트는 사용자 매니저(122)로부터 액세스 토큰에 매칭된 롤(role)을 확인한다. 마이크로-서비스 아키텍처의 내부 기능에 따라 세분화된 복수의 컴포넌트 중 서비스를 담당하는 컴포넌트는 함수 그룹 및 롤에 매칭된 접근권한(Access Right)을 확인한다.Multiple components subdivided according to the internal functions of the micro-service architecture (Config Manager 121, User Manager 122, Log Manager 123, SCS 124, System Manager 125, Command Interpretation Shell 126) ), the component responsible for the service checks a role matched to the access token from the user manager 122. Among a plurality of components subdivided according to internal functions of the micro-service architecture, a component in charge of a service checks access rights matched to function groups and roles.

마이크로-서비스 아키텍처의 내부 기능에 따라 세분화된 복수의 컴포넌트(컨피그 매니저(121), 사용자 매니저(122), 로그 매니저(123), SCS(124), 시스템 매니저(125), 커멘드 해석 쉘(126)) 중 서비스를 담당하는 컴포넌트는 함수 그룹 및 롤에 매칭된 접근권한이 기 설정된 요구 접근권한(Required Access Right) 이상인 지의 여부를 확인하여 확인 결과를 생성한다. 마이크로-서비스 아키텍처의 내부 기능에 따라 세분화된 복수의 컴포넌트 중 서비스를 담당하는 컴포넌트는 확인 결과에 따라 클라이언트(110)를 함수 그룹으로 접근하도록 하는 접근 권한을 부여한다.Multiple components subdivided according to the internal functions of the micro-service architecture (Config Manager 121, User Manager 122, Log Manager 123, SCS 124, System Manager 125, Command Interpretation Shell 126) ), the component in charge of the service checks whether the access right matched to the function group and role is higher than the preset required access right (Required Access Right) and generates a confirmation result. Among a plurality of components subdivided according to internal functions of the micro-service architecture, a component in charge of a service grants an access right to allow the client 110 to access a function group according to a confirmation result.

마이크로-서비스 아키텍처의 내부 기능에 따라 세분화된 복수의 컴포넌트 중 서비스를 담당하는 컴포넌트는 서비스 호출 메시지로부터 액세스 토큰, 함수 그룹, 서브 식별자를 추출하고 사용자 매니저로 액세스 토큰, 함수 그룹을 전송한다.Among a plurality of components subdivided according to the internal function of the micro-service architecture, the component responsible for the service extracts the access token, function group, and sub identifier from the service call message and transmits the access token and function group to the user manager.

마이크로-서비스 아키텍처의 내부 기능에 따라 세분화된 복수의 컴포넌트 중 서비스를 담당하는 컴포넌트는 함수 그룹에 대응하는 접근권한이 해당 컴포넌트에 기 설정된 요구 접근권한 이상인지를 확인한 확인 결과를 생성한다.Among a plurality of components subdivided according to the internal functions of the micro-service architecture, a component in charge of a service generates a confirmation result confirming whether the access right corresponding to the function group is greater than or equal to the access right set in advance for the corresponding component.

마이크로-서비스 아키텍처의 내부 기능에 따라 세분화된 복수의 컴포넌트 중 서비스를 담당하는 컴포넌트는 함수 그룹에 대응하는 접근권한이 해당 컴포넌트에 기 설정된 요구 접근권한 이상인 경우 클라이언트(110)를 함수 그룹으로 접근하도록 접근 권한을 부여한다.Among a plurality of components subdivided according to the internal function of the micro-service architecture, a component in charge of a service allows the client 110 to approach the function group when the access authority corresponding to the function group is greater than or equal to the required access authority preset for the corresponding component. grant authority

마이크로-서비스 아키텍처의 내부 기능에 따라 세분화된 복수의 컴포넌트 중 서비스를 담당하는 컴포넌트는 함수 그룹에 대응하는 접근권한이 해당 컴포넌트에 기 설정된 요구 접근권한 미만인 경우, 서비스 호출 메시지로부터 추출한 서브 식별자가 롤 리스트에 포함된 복수의 접근가능 롤 중 어느 하나에 대응하는 것으로 확인되면, 클라이언트(110)가 함수 그룹에 대응하는 컴포넌트로 접근하는 것을 허용한다.Among a plurality of components subdivided according to the internal functions of the micro-service architecture, if the access authority corresponding to the function group of the component in charge of the service is less than the required access authority preset for the corresponding component, the sub identifier extracted from the service call message is the role list If it is confirmed that it corresponds to any one of the plurality of accessible roles included in , the client 110 is allowed to access the component corresponding to the function group.

마이크로-서비스 아키텍처의 내부 기능에 따라 세분화된 복수의 컴포넌트 중 서비스를 담당하는 컴포넌트는 함수 그룹에 대응하는 접근권한이 해당 컴포넌트에 기 설정된 요구 접근권한 미만인 경우, 서비스 호출 메시지로부터 추출한 서브 식별자가 롤 리스트에 포함된 복수의 접근가능 롤 중 대응되는 롤이 없는 것으로 확인되면, 클라이언트(110)가 함수 그룹에 대응하는 컴포넌트로 접근하는 것을 거부한다.Among a plurality of components subdivided according to the internal functions of the micro-service architecture, if the access authority corresponding to the function group of the component in charge of the service is less than the required access authority preset for the corresponding component, the sub identifier extracted from the service call message is the role list If it is confirmed that there is no corresponding role among the plurality of accessible roles included in , the client 110 denies access to the component corresponding to the function group.

로그 매니저(123)는 전체 애플리케이션의 로그를 관리하는 컴포넌트를 의미한다. The log manager 123 refers to a component that manages logs of the entire application.

SCS(124)는 네트워크 디바이스에 데이터 플레인의 기능을 정의한다. SCS(124)는 데이터 플레인과 상호 작용하여 네트워크 디바이스의 필수 기능을 제공한다.SCS 124 defines the functionality of the data plane to network devices. SCS 124 interacts with the data plane to provide essential functions of network devices.

시스템 매니저(125)는 방화벽, 관리 인터페이스, NTP, SNMP 등의 시스템 관리를 수행한다. 커멘드 해석 쉘(126)은 터미널 클라이언트에게 제공하는 CLI(Command Line Interface) 컴포넌트를 의미한다.The system manager 125 performs system management such as firewall, management interface, NTP, and SNMP. The command interpretation shell 126 refers to a command line interface (CLI) component provided to a terminal client.

도 2는 본 실시예에 따른 사용자 매니저와 SCS에서 제공하는 RPC 함수를 나타낸 도면이다.2 is a diagram illustrating an RPC function provided by a user manager and an SCS according to the present embodiment.

사용자 매니저(122)와 SCS(124)에서 제공하는 RPC 함수는 도 2에 도시된 바와 같다. 사용자 매니저(122)와 SCS(124)에서 기능별로 제공하는 RPC 함수의 종류 및 개수가 다를 수 있지만 공통적으로 *Update(), *Clear(), *Delete(), *Show() 함수를 포함한다.The RPC function provided by the user manager 122 and the SCS 124 is as shown in FIG. 2 . The type and number of RPC functions provided by the user manager 122 and the SCS 124 for each function may be different, but commonly include *Update(), *Clear(), *Delete(), and *Show() functions. .

*Update()는 설정을 신규로 생성하거나 기존 설정을 업데이트하는 함수를 의미한다.*Update() is a function that creates new settings or updates existing settings.

*Clear()는 설정을 초기화하는 함수를 의미한다.*Clear() means a function that initializes settings.

*Delete()는 설정을 삭제하는 함수로 신규로 생성하는 개념이 있을 때만 존재한다.*Delete() is a function that deletes settings and exists only when there is a concept of creating a new one.

*Show()는 설정을 조회하는 함수를 의미한다.*Show() means a function to query settings.

롤(Role) 함수는 역할로서 함수 그룹별 접근권한 셋의 리스트로 정의할 수 있다.A role function can be defined as a list of access rights set for each function group as a role.

사용자(User) 함수는 사용자로서 사용자는 복수 개의 롤을 가질 수 있다.The User function is a user, and a user can have a plurality of roles.

AuthLogin()은 사용자 이름 및 비밀번호로 서비스 접근 토큰을 할당받는 함수를 의미한다.AuthLogin() means a function that receives a service access token with a user name and password.

시스템 내의 복수의 컴포넌트(컨피그 매니저(121), 사용자 매니저(122), 로그 매니저(123), SCS(124), 시스템 매니저(125), 커멘드 해석 쉘(126))는 서비스 접근 토큰을 이용하여 서비스 접근 권한을 확인한다.A plurality of components in the system (Config Manager 121, User Manager 122, Log Manager 123, SCS 124, System Manager 125, Command Interpretation Shell 126) use service access tokens to provide services. Check access rights.

AuthShow()는 서비스 접근 토큰 및 접근할 함수 그룹을 이용하여 해당 토큰을 사용하는 사용자가 접근하는 함수 그룹에 어떠한 접근권한을 갖고 있는지의 여부를 확인하는 함수이다.AuthShow() is a function that uses a service access token and a function group to be accessed to check whether the user using the token has any access rights to the function group to be accessed.

AuthShow()는 서비스 접근 토큰 및 접근할 함수 그룹을 이용하여 해당 토큰을 사용하는 사용자가 어떤 롤 리스트를 갖고 있는지의 여부를 확인하는 함수이다.AuthShow() is a function that uses a service access token and a function group to be accessed to check whether a user using the token has a role list.

*ClearAuthCache() 함수는 컴포넌트가 갖고 있는 인증 캐시를 삭제하는 함수를 의미한다.*ClearAuthCache() function means a function that deletes the authentication cache that a component has.

도 3은 본 실시예에 따른 컴포넌트들에서 제공하는 RPC 함수와 각 함수가 소속된 함수 그룹, 요구 접근권한, 외부 공개여부를 나타낸 도면이다.3 is a diagram showing RPC functions provided by components according to the present embodiment, function groups to which each function belongs, requested access rights, and whether or not they are open to the outside world.

복수의 컴포넌트(컨피그 매니저(121), 사용자 매니저(122), 로그 매니저(123), SCS(124), 시스템 매니저(125), 커멘드 해석 쉘(126))는 RPC 함수를 제공할 수 있다.A plurality of components (Config Manager 121, User Manager 122, Log Manager 123, SCS 124, System Manager 125, Command Interpretation Shell 126) may provide RPC functions.

각 함수는 종류별로 공통된 성격의 한 개의 그룹에 소속되어 있으며, 함수의 동작에 따라 다른 접근 권한을 요구한다.Each function belongs to a group with a common characteristic for each type, and requires different access rights depending on the operation of the function.

예컨대, PortUpdate() 함수는 설정을 변경하는 동작을 수행하기 때문에 읽기, 쓰기, 실행의 모든 권한을 요구한다.For example, the PortUpdate() function requires all read, write, and execute privileges because it performs an operation to change settings.

PortShow() 함수는 설정을 조회하는 동작만 수행하기 때문에 읽기 권한만을 요구한다.The PortShow() function only requires read permission because it only performs operations to inquire settings.

접근 권한의 종류는 다음과 같다.The types of access rights are as follows.

ALL : 전체 접근권한ALL: full access

READ_ONLY : 읽기만 가능READ_ONLY: read only

NONE : 접근권한 없음NONE: No access right

예컨대, PortUpdate() 함수에 접근하기 위해서는 접근하는 사용자가 함수 그룹 Port에 대해서 접근권한 ALL을 갖고 있어야 한다. PortShow() 함수는 함수 그룹 Port에 대해서, READ_ONLY 이상의 접근권한만 갖고 있으면 된다. 각 함수는 외부에 공개되는(Public) 함수와 공개되지 않는 함수로 구분되며, 공개되지 않는 함수는 시스템 내에서만 사용 가능하다.For example, to access the PortUpdate() function, the accessing user must have ALL access rights for the function group Port. The PortShow() function only needs to have READ_ONLY or higher access rights for the function group Port. Each function is divided into a public function and a non-public function, and the non-public function can only be used within the system.

도 4는 본 실시예에 따른 사용자 매니저에서 정의한 롤에 대한 함수 그룹과 접근권한 셋을 나타낸 도면이다.4 is a diagram showing function groups and access right sets for roles defined in the user manager according to the present embodiment.

사용자 매니저(122)는 롤을 정의할 수 있으며, 각 롤은 0개 이상의 함수 그룹과 접근권한의 셋을 포함한다. 예컨대, admin Role은 전체 함수 그룹에 대해 ALL 접근권한을 가진다. The user manager 122 may define roles, and each role includes zero or more function groups and sets of access rights. For example, the admin role has ALL access to all function groups.

r1 Role의 함수 그룹 Port는 ALL 접근권한을 가진다. r1 Role의 함수 그룹 VSwitch는 READ_ONLY 접근권한을 가진다. r2 Role은 전체 함수 그룹에 대해 접근할 수 있는 권한이 없다.The function group Port of role r1 has ALL access authority. The function group VSwitch of role r1 has READ_ONLY access. Role r2 does not have access to the entire function group.

도 5는 본 실시예에 따른 사용자 매니저에서 생성한 사용자별 롤 할당을 나타낸 도면이다.5 is a diagram illustrating role assignment for each user created by the user manager according to the present embodiment.

사용자 매니저(122)는 사용자를 생성할 수 있으며, 각 사용자는 0개 이상의 롤을 할당할 수 있다. 예컨대, super 사용자는 admin Role을 가지며, guest 사용자는 monitor Role을 가진다. u1 사용자는 monitor와 r1 Role을 가지며, u2 사용자는 r2 Role을 가진다.The user manager 122 may create users, and each user may be assigned zero or more roles. For example, the super user has the admin role, and the guest user has the monitor role. User u1 has monitor and role r1, and user u2 has role r2.

도 6a,6b,6c,6d는 본 실시예에 따른 서비스 호출시 접근 권한이 없어서 거부되는 경우의 함수 호출 과정을 나타낸 도면이다.6a, 6b, 6c, and 6d are diagrams illustrating a process of calling a function when a service call is denied due to lack of access authority according to the present embodiment.

도 6a,6b,6c,6d에서는 클라이언트(110)가 서비스를 호출 시 접근 권한이 없어서 거부되는 경우에 대해 설명한다.6a, 6b, 6c, and 6d describe a case in which the client 110 is denied access rights when calling a service.

도 6a에 도시된 바와 같이, 클라이언트(110)가 사용자 인증을 하기 위해 관리 인터페이스를 이용하여 사용자 매니저(122)로부터 AuthLogin() 함수를 호출한다.As shown in FIG. 6A , the client 110 calls the AuthLogin() function from the user manager 122 using the management interface to authenticate the user.

클라이언트(110)는 사용자 매니저(122)로 Username(u1), password를 전달한 후 사용자 매니저(122)로부터 액세스 토큰(Access token)(t1)을 받는다. 여기서, 액세스 토큰(t1)은 Username, password를 대체하는 사용자 식별 정보로 사용되며, 함수 호출 시 기본적으로 전달되는 토큰을 의미한다.The client 110 transmits the user name (u1) and password to the user manager 122 and then receives an access token (t1) from the user manager 122. Here, the access token (t1) is used as user identification information that replaces username and password, and means a token that is basically transmitted when calling a function.

사용자 매니저(122)로부터 발행되는 액세스 토큰(t1)의 값은 유일하며 필요 시 만료시간(Expire time)을 설정할 수 있다. 사용자 매니저(122)는 사용자 인증이 완료되면 발급된 액세스 토큰(t1)의 정보와 사용자 정보(u1)를 내부의 캐시에 저장한다.The value of the access token t1 issued from the user manager 122 is unique, and an expiration time can be set if necessary. When user authentication is completed, the user manager 122 stores the issued access token t1 information and user information u1 in an internal cache.

도 6b에 도시된 바와 같이, 클라이언트(110)는 VSwitch 설정을 위해 관리 인터페이스를 이용하여 SCS(124)로 VSwitchUpdate() 함수를 호출한다. SCS(124)는 액세스 토큰(t1)과 설정할 VSwitch 이름(VSwitch v1) 등을 클라이언트(110)로부터 수신한다. 클라이언트(110)는 SCS(124)로 액세스 토큰 t1, 설정할 VSwitch v1을 전송한다.As shown in FIG. 6B, the client 110 calls the VSwitchUpdate() function to the SCS 124 using the management interface to configure the VSwitch. The SCS 124 receives an access token t1 and a VSwitch name to set (VSwitch v1) from the client 110. The client 110 transmits the access token t1 and VSwitch v1 to set to the SCS 124.

도 6c에 도시된 바와 같이, SCS(124)는 호출된 메시지에서 전달받은 액세스 토큰(t1)과 호출된 함수명의 소속 함수 그룹(VSwitch)을 추출한다. SCS(124)는 액세스 토큰(t1)에 대응하는 클라이언트가 호출한 함수의 접근권한이 있는지 확인하기 위해 사용자 매니저(122)로 AuthShow() 함수를 호출한다. 사용자 매니저(122)는 SCS(124)로부터 액세스 토큰(t1)과 호출된 함수의 함수 그룹(VSwitch)을 파라미터로 수신한다.As shown in FIG. 6C, the SCS 124 extracts the access token (t1) received from the called message and the function group (VSwitch) belonging to the called function name. The SCS 124 calls the AuthShow() function to the user manager 122 to check whether the client corresponding to the access token t1 has access rights to the function called. The user manager 122 receives the access token t1 and the function group (VSwitch) of the called function from the SCS 124 as parameters.

사용자 매니저(122)는 전달받은 정보(액세스 토큰(t1)과 호출된 함수의 함수 그룹(VSwitch))를 이용하여 해당 클라이언트(110)가 접근하려는 함수에 대한 접근권한(READ_ONLY)과 해당 사용자의 롤 리스트(monitor와 r1 Role)를 응답한다.The user manager 122 uses the received information (the access token t1 and the function group of the called function (VSwitch)) to determine the access right (READ_ONLY) for the function the client 110 wants to access and the role of the corresponding user. It responds with a list (monitor and r1 role).

SCS(124)는 수신한 정보(접근하려는 함수에 대한 접근권한(READ_ONLY)과 해당 사용자의 롤 리스트(monitor와 r1 Role))를 캐시에 저장하며, 이후 동일한 요청 발생 시 캐시를 이용하여 빠르게 처리한다.The SCS 124 stores the received information (access authority to the function to be accessed (READ_ONLY) and the user's role list (monitor and r1 Role)) in the cache, and then, when the same request occurs, it is quickly processed using the cache. .

도 6d에 도시된 바와 같이, VSwitchUpdate() 서비스 호출 시 함수 그룹 VSwitch의 접근권한이 ALL 이상을 가져야 접근할 수 있는데, SCS(124)는 해당 클라이언트(110)가 조건에 부합(접근권한(READ_ONLY))하지 않는 것으로 확인하고, 해당 클라이언트(110)의 접근을 거부하고 오류를 응답한다.As shown in FIG. 6D, when the VSwitchUpdate() service is called, the access right of the function group VSwitch must be ALL or higher to access. ), deny the access of the corresponding client 110 and respond with an error.

도 7a,7b,7c,7d는 본 실시예에 따른 서비스 호출시 접근 권한이 허용되는 경우의 함수 호출 과정을 나타낸 도면이다.7a, 7b, 7c, and 7d are diagrams illustrating a function call process when access authority is allowed when calling a service according to the present embodiment.

도 7a,7b,7c,7d는 클라이언트(110)가 서비스 호출 시 접근 권한이 허용되는 경우에 대해 설명한다.7a, 7b, 7c, and 7d describe a case in which access authority is allowed when the client 110 calls a service.

도 7a에 도시된 바와 같이, 클라이언트(110)가 사용자 인증을 하기 위해 관리 인터페이스를 이용하여 사용자 매니저(122)로부터 AuthLogin() 함수를 호출한다.As shown in FIG. 7A , the client 110 calls the AuthLogin() function from the user manager 122 using the management interface to authenticate the user.

클라이언트(110)는 사용자 매니저(122)로 Username(u1), password를 전달하고 사용자 매니저(122)로부터 액세스 토큰(t1)을 받는다. 여기서, 액세스 토큰(t1)은 Username, password를 대체하는 사용자 식별 정보로 사용되며, 함수 호출 시 기본적으로 전달되는 토큰을 의미한다. 사용자 매니저(122)는 사용자 인증이 완료되면 사용자 매니저(122)는 발급된 액세스 토큰(t1)의 정보와 사용자 정보(u1)를 내부 캐시에 저장한다.The client 110 transmits Username (u1) and password to the user manager 122 and receives an access token (t1) from the user manager 122. Here, the access token (t1) is used as user identification information that replaces username and password, and means a token that is basically transmitted when calling a function. When user authentication is completed, the user manager 122 stores the information of the issued access token t1 and the user information u1 in an internal cache.

도 7b에 도시된 바와 같이, 클라이언트(110)는 Port 설정을 위해 관리 인터페이스를 이용하여 SCS(124)로 PortUpdate() 함수를 호출한다. SCS(124)로 액세스 토큰(t1)과 설정할 Port 이름(Port p1) 등을 클라이언트(110)로부터 수신한다. 클라이언트(110)는 SCS(124)로 액세스 토큰 t1, 설정할 Port p1을 전송한다.As shown in FIG. 7B, the client 110 calls the PortUpdate() function to the SCS 124 using the management interface to set the port. The SCS 124 receives an access token t1 and a port name to set (Port p1) from the client 110. The client 110 transmits the access token t1 and the port p1 to be set to the SCS 124.

도 7c에 도시된 바와 같이, SCS(124)는 전달받은 액세스 토큰(t1)과 호출된 함수명이 소속된 함수 그룹을 추출한다. SCS(124)는 액세스 토큰(t1)에 대응하는 사용자가 호출한 함수의 접근권한이 있는지 확인하기 위해 사용자 매니저(122)에 AuthShow() 함수를 호출한다.As shown in FIG. 7C, the SCS 124 extracts the function group to which the received access token t1 and the called function name belong. The SCS 124 calls the AuthShow() function to the user manager 122 to check whether the user corresponding to the access token t1 has access rights for the function called.

사용자 매니저(122)는 SCS(124)로부터 전달받은 액세스 토큰(t)과 호출된 함수의 함수 그룹(Port)을 파라미터로 수신한다.The user manager 122 receives the access token (t) transmitted from the SCS (124) and the function group (Port) of the called function as parameters.

사용자 매니저(122)는 전달받은 정보(액세스 토큰(t)과 호출된 함수의 함수 그룹(Port))를 이용하여 해당 클라이언트(110)가 접근하려는 함수에 대한 접근권한(ALL)과 해당 사용자의 롤 리스트(monitor와 r1 Role)를 응답한다.The user manager 122 uses the received information (access token (t) and function group (Port) of the called function) to determine the access right (ALL) for the function the corresponding client 110 wants to access and the role of the corresponding user. It responds with a list (monitor and r1 role).

SCS(124)는 수신한 정보(접근하려는 함수에 대한 접근권한(ALL)과 해당 사용자의 롤 리스트(monitor와 r1 Role))를 캐시에 저장하며, 이후 동일한 요청 발생 시 캐시를 이용하여 빠르게 처리한다.The SCS 124 stores the received information (access authority for the function to be accessed (ALL) and the user's role list (monitor and r1 Role)) in the cache, and then uses the cache to quickly process the same request when it occurs. .

도 7d에 도시된 바와 같이, PortUpdate() 서비스 호출 시 함수 그룹 Port의 접근권한이 ALL 이상을 가져야 접근할 수 있는데, SCS(124)는 해당 클라이언트(110)가 조건에 부합(접근권한(ALL))하는 것으로 확인하고 해당 클라이언트(110)의 접근을 허용하고 함수를 실행시켜 결과를 응답한다.As shown in FIG. 7D, when the PortUpdate() service is called, access is possible only when the access authority of the function group Port is ALL or higher. ), allows the client 110 to access, and executes the function to respond to the result.

도 8은 본 실시예에 따른 SCS(124)의 함수 그룹, 서브 식별자, 접근가능 롤을 나타낸 도면이다.8 is a diagram showing function groups, sub identifiers, and accessible roles of the SCS 124 according to this embodiment.

SCS(124)는 서브 식별자(Sub-identifier) 기반 접근 권한을 확인하기 위해, 함수 그룹, 서브 식별자, 접근 가능 롤 정보를 저장한다. SCS(124)는 서브 식별자를 기반으로 접근 권한을 추가 확인한다.The SCS 124 stores function group, sub-identifier, and accessible role information in order to check sub-identifier-based access rights. The SCS 124 additionally confirms access rights based on the sub-identifier.

SCS(124)는 전체 함수 그룹에 대한 접근은 불가능하더라도, 해당 함수 그룹 내부에 일부 서브 식별자(예컨대, Port의 경우 Port name, VSwitch의 경우 VSwitch name)에 대해서 접근을 허용한다.Although access to the entire function group is impossible, the SCS 124 allows access to some sub-identifiers (eg, port name in the case of a port, VSwitch name in the case of a VSwitch) within the corresponding function group.

종래에는 특정 네트워크 디바이스에 작업을 수행하여 작업자에게 Port p1에 대해서만 접근권한을 부여해야 할 경우, 접근권한을 부여할 수 있는 방법이 존재하지 않았다.Conventionally, when it is necessary to grant access rights only to Port p1 to a worker by performing a task on a specific network device, there is no method for granting access rights.

본 실시예에 따른 SCS(124)는 서브 식별자 기반으로 접근 권한 확인하여 함수 그룹 Port에 대해서 접근권한을 NONE을 할당하고, Port p1에 대해서만 접근권한을 부여하면, Port p1에 대해서 작업자가 접근하여 작업을 수행할 수 있다.The SCS 124 according to this embodiment checks access rights based on the sub-identifier, assigns NONE access rights to the function group Port, and grants access rights only to Port p1. can be performed.

SCS(124)는 특정 함수 그룹에 대해 서브 식별자 기반으로 부분적인 접근을 허용하는 방식인 서브 식별자 기반 접근 권한 확인을 수행한다.The SCS 124 performs sub-identifier-based access right check, which is a method of allowing partial access to a specific function group based on a sub-identifier.

도 8에 도시된 바와 같이, SCS(124)는 함수 그룹 Port에 서브 식별자 Port p2에 대해서 접근 가능 롤 r2 Role만이 접근이 가능하도록 설정할 수 있다.As shown in FIG. 8 , the SCS 124 may set the function group Port so that only the accessible role r2 Role with respect to the sub identifier Port p2 is accessible.

도 9a,9b,9c,9d는 본 실시예에 따른 서브 식별자 기반의 접근 권한 확인 후 거부되는 경우의 함수 호출 과정을 나타낸 도면이다.9a, 9b, 9c, and 9d are diagrams illustrating a function call process in the case of rejection after checking access rights based on sub-identifiers according to the present embodiment.

도 9a,9b,9c,9d에서는 클라이언트(110)가 서비스 호출 시 서브 식별자에 따른 접근 권한이 없어서 거부되는 경우에 대해 설명한다.9a, 9b, 9c, and 9d describe a case in which the client 110 is rejected because it does not have an access right according to a sub identifier when calling a service.

도 9a에 도시된 바와 같이, 클라이언트(110)가 사용자 인증을 하기 위해 관리 인터페이스를 이용하여 사용자 매니저(122)로부터 AuthLogin() 함수를 호출한다.As shown in FIG. 9A , the client 110 calls the AuthLogin() function from the user manager 122 using the management interface to authenticate the user.

클라이언트(110)는 사용자 매니저(122)로 Username(u2), password를 전달한 후 사용자 매니저(122)로부터 액세스 토큰(Access token)(t2)을 받는다. 여기서, 액세스 토큰(t2)은 Username, password를 대체하는 사용자 식별 정보로 사용되며, 함수 호출 시 기본적으로 전달되는 토큰을 의미한다.The client 110 transmits the user name (u2) and password to the user manager 122 and then receives an access token (t2) from the user manager 122. Here, the access token (t2) is used as user identification information replacing username and password, and means a token that is basically transmitted when calling a function.

사용자 매니저(122)로부터 발행되는 액세스 토큰(t2)의 값은 유일하며 필요 시 만료시간(Expire time)을 설정할 수 있다. 사용자 매니저(122)는 사용자 인증이 완료되면 발급된 액세스 토큰(t2)의 정보와 사용자 정보(u2)를 내부의 캐시에 저장한다.The value of the access token t2 issued from the user manager 122 is unique, and an expiration time can be set if necessary. When user authentication is completed, the user manager 122 stores information of the issued access token t2 and user information u2 in an internal cache.

도 9b에 도시된 바와 같이, 클라이언트(110)는 Port 설정을 위해 관리 인터페이스를 이용하여 SCS(124)로 PortUpdate() 함수를 호출한다. SCS(124)는 액세스 토큰(t2)과 설정할 Port 이름(Port p1) 등을 클라이언트(110)로부터 수신한다. 클라이언트(110)는 SCS(124)로 액세스 토큰 t2, 설정할 Port p1을 전송한다.As shown in FIG. 9B, the client 110 calls the PortUpdate() function to the SCS 124 using the management interface to set the port. The SCS 124 receives an access token t2 and a port name to set (Port p1) from the client 110. The client 110 transmits the access token t2 and the port p1 to be set to the SCS 124.

도 9c에 도시된 바와 같이, SCS(124)는 호출된 메시지에서 전달받은 액세스 토큰(t2)과 호출된 함수명이 소속된 함수 그룹(Port)을 추출한다. SCS(124)는 액세스 토큰(t2)에 대응하는 클라이언트가 호출한 함수의 접근권한이 있는지 확인하기 위해 사용자 매니저(122)로 AuthShow() 함수를 호출한다. 사용자 매니저(122)는 SCS(124)로부터 액세스 토큰(t2)과 호출된 함수의 함수 그룹(Port)을 파라미터로 수신한다.As shown in FIG. 9C, the SCS 124 extracts the access token t2 received from the called message and the function group (Port) to which the called function name belongs. The SCS 124 calls the AuthShow() function to the user manager 122 to check whether the function called by the client corresponding to the access token t2 has access rights. The user manager 122 receives the access token t2 and the function group (Port) of the called function from the SCS 124 as parameters.

사용자 매니저(122)는 전달받은 정보(액세스 토큰(t2)과 호출된 함수의 함수 그룹(Port))를 이용하여 해당 클라이언트(110)가 접근하려는 함수에 대한 접근권한(NONE)과 해당 사용자의 롤 리스트(r2 Role)를 응답한다.The user manager 122 uses the received information (access token t2 and function group (Port) of the called function) to access the function the client 110 wants to access (NONE) and the user's role. It responds with a list (r2 Role).

SCS(124)는 수신한 정보(접근하려는 함수에 대한 접근권한(NONE)과 해당 사용자의 롤 리스트(r2 Role))를 캐시에 저장하며, 이후 동일한 요청 발생 시 캐시를 이용하여 빠르게 처리한다.The SCS 124 stores the received information (the access right to the function to be accessed (NONE) and the user's role list (r2 Role)) in the cache, and then, when the same request occurs, it is quickly processed using the cache.

도 9d에 도시된 바와 같이, PortUpdate() 서비스 호출 시 함수 그룹 Port의 접근권한 ALL 이상을 가지거나 서브 식별자가 p2인 경우 해당 클라이언트(110)가 접근할 수 있는데, SCS(124)는 해당 클라이언트(110)의 접근 권한(NONE)과 서브 식별자(p1) 모두가 조건에 만족하지 않으므로, 해당 클라이언트(110)의 접근을 거부하고 오류를 응답한다.As shown in FIG. 9D, when the PortUpdate() service is called, the corresponding client 110 can access if the function group Port has access rights of ALL or higher or if the sub identifier is p2, and the SCS 124 can access the corresponding client ( Since both the access authority (NONE) and the sub-identifier (p1) of 110) do not satisfy the conditions, access of the corresponding client 110 is denied and an error is returned.

도 10은 본 실시예에 따른 SCS(124)의 함수 그룹, 서브 식별자, 접근가능 롤을 나타낸 도면이다.10 is a diagram showing function groups, sub identifiers, and accessible roles of the SCS 124 according to this embodiment.

SCS(124)는 서브 식별자(Sub-identifier) 기반 접근 권한을 확인하기 위해, 함수 그룹, 서브 식별자, 접근 가능 롤 정보를 저장한다. SCS(124)는 서브 식별자를 기반으로 접근 권한을 추가 확인한다.The SCS 124 stores function group, sub-identifier, and accessible role information in order to check sub-identifier-based access rights. The SCS 124 additionally confirms access rights based on the sub-identifier.

SCS(124)는 전체 함수 그룹에 대한 접근은 불가능하더라도, 해당 함수 그룹 내부에 일부 서브 식별자(예컨대, 함수 그룹(Port), 서브 식별자(p2), 접근 가능 롤(r2))에 대해서 접근을 허용한다.The SCS 124 allows access to some sub-identifiers (eg, function group (Port), sub-identifier (p2), and accessible role (r2)) within the corresponding function group, even though access to the entire function group is impossible. do.

종래에는 특정 네트워크 디바이스에 작업을 수행하여 작업자에게 Port p1에 대해서만 접근권한을 부여해야 할 경우, 접근권한을 부여할 수 있는 방법이 존재하지 않았다.Conventionally, when it is necessary to grant access rights only to Port p1 to a worker by performing a task on a specific network device, there is no method for granting access rights.

본 실시예에 따른 SCS(124)는 서브 식별자 기반으로 함수 그룹 Port에 대해서 접근권한을 NONE을 할당하고, Port p1에 대해서만 접근권한을 부여하면, Port p1에 대해서 작업자가 접근하여 작업을 수행할 수 있다. SCS(124)는 특정 함수 그룹에 대해 서브 식별자 기반으로 부분적인 접근을 허용하는 방식인 서브 식별자 기반 접근 권한 확인을 수행한다.The SCS 124 according to this embodiment assigns NONE the access right to the function group Port based on the sub-identifier and grants the access right only to Port p1, so that the operator can access Port p1 and perform work. there is. The SCS 124 performs sub-identifier-based access right check, which is a method of allowing partial access to a specific function group based on a sub-identifier.

도 10에 도시된 바와 같이, SCS(124)는 함수 그룹 Port에 Port p2에 대해서 r2 Role은 접근이 가능하도록 설정할 수 있다.As shown in FIG. 10, the SCS 124 can set the r2 role to allow access to Port p2 in the function group Port.

도 11a,11b,11c,11d는 본 실시예에 따른 서브 식별자 기반의 접근 권한 확인 후 허용되는 경우의 함수 호출 과정을 나타낸 도면이다.11a, 11b, 11c, and 11d are diagrams illustrating a function call process when permission is granted after checking access rights based on sub-identifiers according to the present embodiment.

도 11a,11b,11c,11d에서는 클라이언트(110)가 서비스 호출 시 서브 식별자에 따른 접근 권한이 허용되는 경우에 대해 설명한다.In FIGS. 11a, 11b, 11c, and 11d, a case in which access authority according to a sub identifier is allowed when the client 110 calls a service is described.

도 11a에 도시된 바와 같이, 클라이언트(110)가 사용자 인증을 하기 위해 관리 인터페이스를 이용하여 사용자 매니저(122)로부터 AuthLogin() 함수를 호출한다.As shown in FIG. 11A , the client 110 calls the AuthLogin() function from the user manager 122 using the management interface to authenticate the user.

클라이언트(110)는 사용자 매니저(122)로 Username(u2), password를 전달한 후 사용자 매니저(122)로부터 액세스 토큰(Access token)(t2)을 받는다. 여기서, 액세스 토큰(t2)은 Username, password를 대체하는 사용자 식별 정보로 사용되며, 함수 호출 시 기본적으로 전달되는 토큰을 의미한다.The client 110 transmits the user name (u2) and password to the user manager 122 and then receives an access token (t2) from the user manager 122. Here, the access token (t2) is used as user identification information replacing username and password, and means a token that is basically transmitted when calling a function.

사용자 매니저(122)로부터 발행되는 액세스 토큰(t2)의 값은 유일하며 필요 시 만료시간(Expire time)을 설정할 수 있다. 사용자 매니저(122)는 사용자 인증이 완료되면 발급된 액세스 토큰(t2)의 정보와 사용자 정보(u2)를 내부의 캐시에 저장한다.The value of the access token t2 issued from the user manager 122 is unique, and an expiration time can be set if necessary. When user authentication is completed, the user manager 122 stores information of the issued access token t2 and user information u2 in an internal cache.

도 11b에 도시된 바와 같이, 클라이언트(110)는 Port 설정을 위해 관리 인터페이스를 이용하여 SCS(124)로 PortUpdate() 함수를 호출한다. SCS(124)는 액세스 토큰(t2)과 설정할 Port 이름(Port p2) 등을 클라이언트(110)로부터 수신한다. 클라이언트(110)는 SCS(124)로 액세스 토큰 t2, 설정할 Port p2을 전송한다.As shown in FIG. 11B, the client 110 calls the PortUpdate() function to the SCS 124 using the management interface to set the port. The SCS 124 receives an access token t2 and a port name to set (Port p2) from the client 110. The client 110 transmits the access token t2 and the Port p2 to be set to the SCS 124.

도 11c에 도시된 바와 같이, SCS(124)는 호출된 메시지에서 전달받은 액세스 토큰(t2)과 호출된 함수명이 소속된 함수 그룹(Port)을 추출한다. SCS(124)는 액세스 토큰(t2)에 대응하는 클라이언트가 호출한 함수의 접근권한이 있는지 확인하기 위해 사용자 매니저(122)로 AuthShow() 함수를 호출한다.As shown in FIG. 11C, the SCS 124 extracts the access token t2 received from the called message and the function group (Port) to which the called function name belongs. The SCS 124 calls the AuthShow() function to the user manager 122 to check whether the function called by the client corresponding to the access token t2 has access rights.

사용자 매니저(122) SCS(124)로부터 액세스 토큰(t2)과 호출된 함수의 함수 그룹(Port)을 파라미터로 수신한다.The user manager 122 receives the access token t2 and the function group (Port) of the called function from the SCS 124 as parameters.

사용자 매니저(122)는 전달받은 정보(액세스 토큰(t2)과 호출된 함수의 함수 그룹(Port))를 이용하여 해당 클라이언트(110)가 접근하려는 함수에 대한 접근권한(NONE)과 해당 사용자의 롤 리스트(r2 Role)를 응답한다.The user manager 122 uses the received information (access token t2 and function group (Port) of the called function) to access the function the client 110 wants to access (NONE) and the user's role. It responds with a list (r2 Role).

SCS(124)는 수신한 정보(접근하려는 함수에 대한 접근권한(NONE)과 해당 사용자의 롤 리스트(r2 Role))를 캐시에 저장하며, 이후 동일한 요청 발생 시 캐시를 이용하여 빠르게 처리한다.The SCS 124 stores the received information (the access right to the function to be accessed (NONE) and the user's role list (r2 Role)) in the cache, and then, when the same request occurs, it is quickly processed using the cache.

도 11d에 도시된 바와 같이, PortUpdate() 서비스 호출 시 함수 그룹 Port의 접근권한 ALL 이상을 가지거나 서브 식별자가 p2인 경우 해당 클라이언트(110)가 접근할 수 있는데, SCS(124)는 해당 클라이언트(110)의 접근 권한(NONE)이 접근 불가이지만, 서브 식별자(p2)가 접근가능 롤(r2)과 액세스 토큰(t2)에 대응하는 클라이언트가 접근가능 롤(r2)을 갖고 있는 것으로 확인하고, 해당 클라이언트(110)의 접근을 허용하고 함수를 실행시켜 결과를 응답한다.As shown in FIG. 11D, when the PortUpdate() service is called, the corresponding client 110 can access if the function group Port has access rights of ALL or higher or if the sub identifier is p2, and the SCS 124 can access the corresponding client ( 110), the access right (NONE) is inaccessible, but the sub identifier (p2) confirms that the client corresponding to the accessible role (r2) and the access token (t2) has the accessible role (r2), and the corresponding The access of the client 110 is allowed and a function is executed to respond with a result.

도 12는 본 실시예에 따른 접근 권한 부여 방법을 설명하기 위한 순서도이다.12 is a flowchart for explaining a method for granting access authority according to this embodiment.

클라이언트(110)가 사용자 매니저(122)로 사용자 인증 호출(AuthLogin() 함수에 Username, password 전달하여 호출)한다(S1210). 사용자 매니저(122)는 해당 클라이언트(110)의 사용자 인증(Username, password)이 성공했는지의 여부를 확인한다(S1212).The client 110 makes a user authentication call (passing Username and password to the AuthLogin() function to call the user manager 122) (S1210). The user manager 122 checks whether user authentication (username, password) of the corresponding client 110 has succeeded (S1212).

단계 S1212의 확인 결과, 해당 클라이언트(110)의 사용자 인증(Username, password)이 성공한 경우, 사용자 매니저(122)는 액세스 토큰을 신규로 발행하고 사용자 정보를 매핑한 후 캐시에 저장한다. 사용자 매니저(122)는 클라이언트(110)로 사용자 인증 성공(액세스 토큰)을 응답한다(S1214).As a result of checking in step S1212, if user authentication (username, password) of the corresponding client 110 succeeds, the user manager 122 newly issues an access token, maps user information, and stores it in the cache. The user manager 122 responds to the user authentication success (access token) to the client 110 (S1214).

클라이언트(110)는 마이크로-서비스 아키텍처의 내부 기능에 따라 세분화된 복수의 컴포넌트(컨피그 매니저(121), 사용자 매니저(122), 로그 매니저(123), SCS(124), 시스템 매니저(125), 커멘드 해석 쉘(126)) 중 서비스를 담당하는 컴포넌트로 서비스 호출 메시지(액세스 토큰 및 서브 식별자 전달하여 호출)를 전달한다(S1216). 마이크로-서비스 아키텍처의 내부 기능에 따라 세분화된 복수의 컴포넌트 중 서비스를 담당하는 컴포넌트는 서비스 호출 메시지로부터 액세스 토큰, 함수 그룹, 서브 식별자를 추출한다(S1218).The client 110 includes a plurality of subdivided components (config manager 121, user manager 122, log manager 123, SCS 124, system manager 125, command A service call message (called by passing an access token and a sub identifier) is transferred to a component in charge of the service of the interpretation shell 126 (S1216). Among a plurality of components subdivided according to internal functions of the micro-service architecture, a component in charge of a service extracts an access token, function group, and sub identifier from the service call message (S1218).

마이크로-서비스 아키텍처의 내부 기능에 따라 세분화된 복수의 컴포넌트 중 서비스를 담당하는 컴포넌트는 캐시에 액세스 토큰의 함수 그룹에 대한 접근권한이 존재하는지 여부를 확인한다(S1220). 여기서, 액세스 토큰의 함수 그룹에 대한 접근권한이 존재한다면 액세스 토큰의 롤 리스트도 함께 존재한다.Among a plurality of components subdivided according to the internal function of the micro-service architecture, a component in charge of a service checks whether an access right to the function group of the access token exists in the cache (S1220). Here, if the access right for the function group of the access token exists, the role list of the access token also exists.

단계 S1220의 확인 결과, 액세스 토큰의 함수 그룹에 대한 접근권한이 존재하는 경우, 마이크로-서비스 아키텍처의 내부 기능에 따라 세분화된 복수의 컴포넌트 중 서비스를 담당하는 컴포넌트는 클라이언트(110)에 대응하는 함수 그룹 접근권한을 확인한다(S1222).As a result of checking in step S1220, if the access right to the function group of the access token exists, the component in charge of the service among the plurality of components subdivided according to the internal function of the micro-service architecture is the function group corresponding to the client 110. Access authority is checked (S1222).

마이크로-서비스 아키텍처의 내부 기능에 따라 세분화된 복수의 컴포넌트 중 서비스를 담당하는 컴포넌트는 클라이언트(110)에 대응하는 함수 그룹 접근권한이 사용자가 호출한 함수가 요구하는 접근권한 이상인지의 여부를 확인한다(S1224).Among a plurality of components subdivided according to the internal functions of the micro-service architecture, a component in charge of a service checks whether the function group access right corresponding to the client 110 is equal to or greater than the access right required by the function called by the user. (S1224).

단계 S1224의 확인 결과, 클라이언트(110)에 대응하는 함수 그룹 접근권한이 사용자가 호출한 함수가 요구하는 접근권한 이상인 경우, 마이크로-서비스 아키텍처의 내부 기능에 따라 세분화된 복수의 컴포넌트 중 서비스를 담당하는 컴포넌트는 서비스의 접근을 허용하고 함수를 실행하여 결과를 클라이언트(110)로 응답한다(S1226).As a result of checking in step S1224, if the function group access right corresponding to the client 110 is greater than or equal to the access right required by the function called by the user, one of a plurality of components subdivided according to the internal function of the micro-service architecture in charge of the service. The component allows access to the service, executes the function, and returns a result to the client 110 (S1226).

단계 S1220의 확인 결과, 액세스 토큰의 함수 그룹에 대한 접근권한이 미존재하는 경우, 마이크로-서비스 아키텍처의 내부 기능에 따라 세분화된 복수의 컴포넌트 중 서비스를 담당하는 컴포넌트는 사용자 매니저(122)로 호출된 함수 그룹에 대한 사용자 접근권한을 요청(AuthShow() 함수에 액세스 토큰과 함수 그룹을 전달하여 호출)한다(S1232).As a result of checking in step S1220, if there is no access right to the function group of the access token, the component in charge of the service among a plurality of components subdivided according to the internal function of the micro-service architecture is called by the user manager 122. User access rights for the function group are requested (calling the AuthShow() function by passing the access token and function group) (S1232).

사용자 매니저(122)는 액세스 토큰을 이용하여 사용자를 추출하고, 사용자를 이용하여 롤을 추출하고 롤을 이용하여 호출한 함수 그룹에 대한 접근권한을 추출한다(S1234).The user manager 122 extracts a user using the access token, extracts a role using the user, and extracts access rights for a function group called using the role (S1234).

사용자 매니저(122)는 추출된 사용자 접근권한 및 사용자의 전체 롤 리스트를 마이크로-서비스 아키텍처의 내부 기능에 따라 세분화된 복수의 컴포넌트 중 서비스를 담당하는 컴포넌트로 응답한다(S1236). 마이크로-서비스 아키텍처의 내부 기능에 따라 세분화된 복수의 컴포넌트 중 서비스를 담당하는 컴포넌트는 수신한 정보로 액세스 토큰의 호출한 함수 그룹에 대한 접근권한 및 롤 리스트를 캐시에 저장한다(S1238).The user manager 122 responds with the extracted user access authority and the user's entire role list to a component in charge of a service among a plurality of components subdivided according to the internal function of the micro-service architecture (S1236). Among a plurality of components subdivided according to the internal function of the micro-service architecture, a component in charge of a service stores an access right for a called function group of an access token and a role list as received information in a cache (S1238).

단계 S1224의 확인 결과, 클라이언트(110)에 대응하는 함수 그룹 접근권한이 사용자가 호출한 함수가 요구하는 접근권한 미만인 경우, 마이크로-서비스 아키텍처의 내부 기능에 따라 세분화된 복수의 컴포넌트 중 서비스를 담당하는 컴포넌트는 사용자가 호출한 함수 그룹 및 전달받은 서브 식별자가 접근을 허용하는 롤 리스트를 추출한다(S1242).As a result of checking in step S1224, if the function group access right corresponding to the client 110 is less than the access right required by the function called by the user, among a plurality of components subdivided according to the internal function of the micro-service architecture, in charge of the service The component extracts a function group called by the user and a role list that allows access by the received sub identifier (S1242).

마이크로-서비스 아키텍처의 내부 기능에 따라 세분화된 복수의 컴포넌트 중 서비스를 담당하는 컴포넌트는 사용자가 소유하고 있는 롤 리스트를 확인한다(S1244). 마이크로-서비스 아키텍처의 내부 기능에 따라 세분화된 복수의 컴포넌트 중 서비스를 담당하는 컴포넌트는 추출된 롤 리스트 상에 사용자가 소유하고 있는 롤 리스트가 하나라도 포함되어 있는지 확인한다(S1246).Among a plurality of components subdivided according to internal functions of the micro-service architecture, a component in charge of a service checks a role list owned by the user (S1244). Among the plurality of components subdivided according to the internal function of the micro-service architecture, the component in charge of the service checks whether at least one role list owned by the user is included in the extracted role list (S1246).

단계 S1246의 확인 결과, 추출된 롤 리스트 상에 사용자가 소유하고 있는 롤 리스트가 하나도 포함되지 않은 경우, 마이크로-서비스 아키텍처의 내부 기능에 따라 세분화된 복수의 컴포넌트 중 서비스를 담당하는 컴포넌트는 서비스의 접근을 거부하고 서비스 접근권한 없음을 클라이언트(110)로 응답한다(S1248).As a result of checking in step S1246, if no role list owned by the user is included in the extracted role list, the component in charge of the service among a plurality of components subdivided according to the internal function of the micro-service architecture has access to the service. It rejects and responds that there is no service access right to the client 110 (S1248).

단계 S1246의 확인 결과, 추출된 롤 리스트 상에 사용자가 소유하고 있는 롤 리스트가 하나라도 포함된 경우, 마이크로-서비스 아키텍처의 내부 기능에 따라 세분화된 복수의 컴포넌트 중 서비스를 담당하는 컴포넌트는 서비스의 접근을 허용하고 함수를 실행하여 결과를 클라이언트(110)로 응답한다(S1226).As a result of checking in step S1246, if at least one role list owned by the user is included in the extracted role list, the component in charge of the service among a plurality of components subdivided according to the internal function of the micro-service architecture has access to the service. is allowed, the function is executed, and the result is returned to the client 110 (S1226).

단계 S1212의 확인 결과, 해당 클라이언트(110)의 사용자 인증(Username, password)에 실패한 경우, 사용자 매니저(124)는 클라이언트(110)로 사용자 인증 오류를 응답한다(S1250).As a result of checking in step S1212, if user authentication (username, password) of the corresponding client 110 fails, the user manager 124 returns a user authentication error to the client 110 (S1250).

도 12에서는 단계 S1210 내지 단계 S1250을 순차적으로 실행하는 것으로 기재하고 있으나, 반드시 이에 한정되는 것은 아니다. 다시 말해, 도 12에 기재된 단계를 변경하여 실행하거나 하나 이상의 단계를 병렬적으로 실행하는 것으로 적용 가능할 것이므로, 도 12는 시계열적인 순서로 한정되는 것은 아니다.Although it is described in FIG. 12 that steps S1210 to S1250 are sequentially executed, it is not necessarily limited thereto. In other words, since the steps described in FIG. 12 may be changed and executed or one or more steps may be executed in parallel, FIG. 12 is not limited to a time-series sequence.

전술한 바와 같이 도 12에 기재된 본 실시예에 따른 접근 권한 부여 방법은 프로그램으로 구현되고 컴퓨터로 읽을 수 있는 기록매체에 기록될 수 있다. 본 실시예에 따른 접근 권한 부여 방법을 구현하기 위한 프로그램이 기록되고 컴퓨터가 읽을 수 있는 기록매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록장치를 포함한다.As described above, the access authorization method according to the present embodiment described in FIG. 12 may be implemented as a program and recorded on a computer-readable recording medium. The computer-readable recording medium on which the program for implementing the access authorization method according to the present embodiment is recorded includes all kinds of recording devices in which data readable by a computer system is stored.

도 13a,13b,13c,13d,13e는 본 실시예에 따른 사용자 정보의 업데이트, 삭제 또는 롤 정보를 업데이트시 함수 호출 과정을 나타낸 도면이다.13a, 13b, 13c, 13d, and 13e are diagrams illustrating a process of calling a function when updating or deleting user information or updating role information according to the present embodiment.

도 13a에 도시된 바와 같이, 클라이언트(110)가 사용자 인증을 하기 위해 관리 인터페이스를 이용하여 사용자 매니저(122)로부터 AuthLogin() 함수를 호출한다.As shown in FIG. 13A , the client 110 calls the AuthLogin() function from the user manager 122 using the management interface to authenticate the user.

도 13b에 도시된 바와 같이, 클라이언트(110)가 사용자 업데이트/삭제 또는 롤 업데이트를 위하여 관리 인터페이스를 이용하여 사용자 매니저(122)로부터 UserUpdate()/UserDelete() 또는 RoleUpdate() 함수를 호출한다.As shown in FIG. 13B, the client 110 calls a UserUpdate()/UserDelete() or RoleUpdate() function from the user manager 122 using the management interface to update/delete a user or update a role.

도 13c에 도시된 바와 같이, 사용자 매니저(122)는 사용자 정보의 업데이트/삭제 또는 롤 정보의 업데이트가 발생한 경우, 변경이 일어난 사용자의 인증 캐시를 삭제한다.As shown in FIG. 13C , the user manager 122 deletes the authentication cache of the changed user when user information is updated/deleted or role information is updated.

도 13d에 도시된 바와 같이, 사용자 매니저(122)는 복수의 컴포넌트(컨피그 매니저(121), 로그 매니저(123), SCS(124), 시스템 매니저(125), 커멘드 해석 쉘(126))에 사용자 정보의 업데이트/삭제 또는 롤 정보의 업데이트가 발생한 경우, 인증 캐시 정보를 삭제하라고 지시한다. 예컨대, 사용자 매니저(122)는 SCS(124)로 SCSClearAuthCache() 함수를 호출하여 인증 캐시 정보 삭제를 요청할 수 있다.As shown in FIG. 13D, the user manager 122 includes a plurality of components (Config Manager 121, Log Manager 123, SCS 124, System Manager 125, and Command Interpretation Shell 126). When information is updated/deleted or role information is updated, the authentication cache information is instructed to be deleted. For example, the user manager 122 may request deletion of authentication cache information by calling the SCSClearAuthCache() function to the SCS 124.

도 13e에 도시된 바와 같이, 사용자 매니저(122)는 시스템 매니저(125)로 SysMgrClearAuthCache() 함수를 호출하여 인증 캐시 정보 삭제를 요청할 수 있다. 사용자 매니저(122)는 모든 서비스에 대해 해당 컴포넌트로 인증 캐시 정보 삭제를 요청할 수 있다.As shown in FIG. 13E , the user manager 122 may request deletion of authentication cache information by calling the SysMgrClearAuthCache() function to the system manager 125 . The user manager 122 may request deletion of authentication cache information to a corresponding component for all services.

도 14a,14b,14c,14d는 본 실시예에 따른 롤 정보 삭제 거부 시나리오 1에 대한 함수 호출 과정을 나타낸 도면이다.14a, 14b, 14c, and 14d are diagrams illustrating a process of calling a function for role information deletion refusal scenario 1 according to the present embodiment.

도 14a,14b,14c,14d에서는 롤을 사용자 매니저(122)가 사용 중일 경우 롤 정보 삭제 거부 시나리오 1에 대해 설명한다. 도 14a에 도시된 바와 같이, 클라이언트(110)가 사용자 인증을 하기 위해 관리 인터페이스를 이용하여 사용자 매니저(122)로부터 AuthLogin() 함수를 호출한다.14a, 14b, 14c, and 14d describe scenario 1 of refusal to delete role information when the user manager 122 is using the role. As shown in FIG. 14A, the client 110 calls the AuthLogin() function from the user manager 122 using the management interface to authenticate the user.

도 14b에 도시된 바와 같이, 클라이언트(110)가 롤 삭제를 위해 관리 인터페이스를 이용하여 사용자 매니저(122)로부터 RoleDelete() 함수를 호출한다. 예컨대, 클라이언트(110)는 사용자 매니저(122)로 Role r2를 삭제할 것을 요청한다.As shown in FIG. 14B, the client 110 calls a RoleDelete() function from the user manager 122 using the management interface to delete a role. For example, the client 110 requests the user manager 122 to delete Role r2.

도 14c에 도시된 바와 같이, 사용자 매니저(122)는 삭제대상 Role r2를 매핑하고 있는 사용자가 있는지의 여부를 조회한다. 예컨대, 사용자 매니저(122)는 Role r2를 매핑하고 있는 사용자가 존재한다고 가정한다.As shown in FIG. 14C, the user manager 122 inquires whether there is a user mapping the role r2 to be deleted. For example, the user manager 122 assumes that there is a user mapping Role r2.

도 14d에 도시된 바와 같이, 사용자 매니저(122)는 Role r2를 매핑하고 있는 사용자가 존재하므로 삭제를 거부하고 클라이언트(110)로 오류를 응답한다.As shown in FIG. 14D , the user manager 122 rejects deletion because there is a user mapping Role r2 and returns an error to the client 110 .

도 15a,15b,15c,15d,15e는 본 실시예에 따른 롤 정보 삭제 거부 시나리오 2에 대한 함수 호출 과정을 나타낸 도면이다.15a, 15b, 15c, 15d, and 15e are diagrams illustrating a process of calling a function for role information deletion rejection scenario 2 according to the present embodiment.

도 15a,15b,15c,15d,15e에서는 다른 컴포넌트에서 롤을 사용 중일 경우 롤 정보 삭제 거부 시나리오 1에 대해 설명한다. 도 15a에 도시된 바와 같이, 클라이언트(110)가 사용자 인증을 하기 위해 관리 인터페이스를 이용하여 사용자 매니저(122)로부터 AuthLogin() 함수를 호출한다.15a, 15b, 15c, 15d, and 15e describe role information deletion rejection scenario 1 when a role is being used by another component. As shown in FIG. 15A, the client 110 calls the AuthLogin() function from the user manager 122 using the management interface to authenticate the user.

도 15b에 도시된 바와 같이, 클라이언트(110)가 롤 삭제를 위해 관리 인터페이스를 이용하여 사용자 매니저(122)로부터 RoleDelete() 함수를 호출한다. 예컨대, 클라이언트(110)는 사용자 매니저(122)로 Role r2를 삭제할 것을 요청한다.As shown in FIG. 15B, the client 110 calls a RoleDelete() function from the user manager 122 using the management interface to delete a role. For example, the client 110 requests the user manager 122 to delete Role r2.

도 15c에 도시된 바와 같이, 사용자 매니저(122)는 삭제대상 Role r2를 매핑하고 있는 사용자가 있는지의 여부를 조회한다. 예컨대, 사용자 매니저(122)는 Role r2를 매핑하고 있는 사용자가 미존재한다고 가정한다.As shown in FIG. 15C, the user manager 122 inquires whether there is a user mapping the role r2 to be deleted. For example, the user manager 122 assumes that the user mapping Role r2 does not exist.

도 15d에 도시된 바와 같이, 사용자 매니저(122)는 Role r2를 매핑하고 있는 다른 컴포넌트가 없는지 모든 컴포넌트에 *ShowRole() 함수를 호출하여 확인한다.As shown in FIG. 15D , the user manager 122 calls the *ShowRole() function on all components to check whether there are other components mapping Role r2.

예컨대, 사용자 매니저(122)는 SCS(124)로 PortShowRole(), VSwitchShowRole(), FlowRuleShowRole()을 호출하여 Role r2가 매핑 중인지의 여부를 확인한다. SCS(124)는 Role r2가 Port p2에서 접근 가능한 Role로 등록되어 있는 경우, 클라이언트(110)로 롤을 매핑 중 이라고 응답한다.For example, the user manager 122 calls PortShowRole(), VSwitchShowRole(), and FlowRuleShowRole() to the SCS 124 to check whether Role r2 is being mapped. The SCS 124 responds that the role is being mapped to the client 110 when Role r2 is registered as a role accessible from Port p2.

도 15e에 도시된 바와 같이, 사용자 매니저(122)는 Role r2를 매핑하고 있는 다른 컴포넌트가 존재하므로 삭제를 거부하고 클라이언트(110)로 오류를 응답한다.As shown in FIG. 15E , the user manager 122 rejects deletion because there is another component mapping Role r2 and returns an error to the client 110 .

도 16a,16b,16c,16d,16e,16f는 본 실시예에 따른 롤 정보 삭제 허용 시나리오 3에 대한 함수 호출 과정을 나타낸 도면이다.16a, 16b, 16c, 16d, 16e, and 16f are diagrams illustrating a process of calling a function for role information deletion permission scenario 3 according to the present embodiment.

도 16a,16b,16c,16d,16e,16f에서는 롤 삭제 허용 시 발생하는 시나리오 3에 대해 설명한다. 도 16a에 도시된 바와 같이, 클라이언트(110)가 사용자 인증을 하기 위해 관리 인터페이스를 이용하여 사용자 매니저(122)로부터 AuthLogin() 함수를 호출한다.16a, 16b, 16c, 16d, 16e, and 16f describe scenario 3 that occurs when role deletion is allowed. As shown in FIG. 16A, the client 110 calls the AuthLogin() function from the user manager 122 using the management interface to authenticate the user.

도 16b에 도시된 바와 같이, 클라이언트(110)가 롤 삭제를 위해 관리 인터페이스를 이용하여 사용자 매니저(122)로부터 RoleDelete() 함수를 호출한다. 예컨대, 클라이언트(110)는 사용자 매니저(122)로 Role r1을 삭제할 것을 요청한다.As shown in FIG. 16B, the client 110 calls a RoleDelete() function from the user manager 122 using the management interface to delete a role. For example, the client 110 requests the user manager 122 to delete Role r1.

도 16c에 도시된 바와 같이, 사용자 매니저(122)는 삭제대상 Role r1를 매핑하고 있는 사용자가 있는지의 여부를 조회한다. 예컨대, 사용자 매니저(122)는 Role r1를 매핑하고 있는 사용자가 미존재한다고 가정한다.As shown in FIG. 16C, the user manager 122 inquires whether there is a user mapping the role r1 to be deleted. For example, the user manager 122 assumes that a user mapping Role r1 does not exist.

도 16d에 도시된 바와 같이, 사용자 매니저(122)는 Role r1를 매핑하고 있는 다른 컴포넌트가 없는지 모든 컴포넌트에 *ShowRole() 함수를 호출하여 확인한다. 예컨대, 사용자 매니저(122)는 SCS(124)로 PortShowRole(), VSwitchShowRole(), FlowRuleShowRole()을 호출하여 Role r1를 매핑 중인지의 여부를 확인한다. SCS(124)는 사용자 매니저(122)로 Role r1을 매핑하지 않고 있다고 응답한다.As shown in FIG. 16D , the user manager 122 calls the *ShowRole() function on all components to check whether there are other components mapping Role r1. For example, the user manager 122 calls PortShowRole(), VSwitchShowRole(), and FlowRuleShowRole() to the SCS 124 to check whether Role r1 is being mapped. The SCS 124 responds that Role r1 is not mapped to the user manager 122 .

도 16e에 도시된 바와 같이, 사용자 매니저(122)는 Role r1를 매핑하고 있는 다른 컴포넌트가 없는지 모든 컴포넌트에 *ShowRole() 함수를 호출하여 확인한다. 예컨대, 사용자 매니저(122)는 *ShowRole()을 호출하여 시스템 매니저(125)로 Role r1를 매핑 중인지의 여부를 확인한다. 시스템 매니저(125)는 Role r1을 매핑하지 않고 있다고 사용자 매니저(122)로 응답한다. 사용자 매니저(122)는 계속해서 *ShowRole()을 호출하여 나머지 모든 컴포넌트에 Role r1을 매핑 중인지 확인한다.As shown in FIG. 16E, the user manager 122 calls the *ShowRole() function on all components to check whether there are other components mapping Role r1. For example, the user manager 122 calls *ShowRole() to check whether Role r1 is being mapped to the system manager 125 or not. The system manager 125 responds to the user manager 122 that Role r1 is not mapped. The user manager 122 continuously calls *ShowRole() to check whether Role r1 is being mapped to all other components.

도 16f에 도시된 바와 같이, 사용자 매니저(122)는 Role r1를 매핑하고 있는 다른 컴포넌트가 없으므로 정상적으로 Role r1을 삭제하고 결과를 클라이언트(110)로 응답한다.As shown in FIG. 16F , the user manager 122 normally deletes Role r1 since there is no other component mapping Role r1 and returns the result to the client 110 .

이상의 설명은 본 실시예의 기술 사상을 예시적으로 설명한 것에 불과한 것으로서, 본 실시예가 속하는 기술 분야에서 통상의 지식을 가진 자라면 본 실시예의 본질적인 특성에서 벗어나지 않는 범위에서 다양한 수정 및 변형이 가능할 것이다. 따라서, 본 실시예들은 본 실시예의 기술 사상을 한정하기 위한 것이 아니라 설명하기 위한 것이고, 이러한 실시예에 의하여 본 실시예의 기술 사상의 범위가 한정되는 것은 아니다. 본 실시예의 보호 범위는 아래의 청구범위에 의하여 해석되어야 하며, 그와 동등한 범위 내에 있는 모든 기술 사상은 본 실시예의 권리범위에 포함되는 것으로 해석되어야 할 것이다.The above description is merely an example of the technical idea of the present embodiment, and various modifications and variations can be made to those skilled in the art without departing from the essential characteristics of the present embodiment. Therefore, the present embodiments are not intended to limit the technical idea of the present embodiment, but to explain, and the scope of the technical idea of the present embodiment is not limited by these embodiments. The scope of protection of this embodiment should be construed according to the claims below, and all technical ideas within the scope equivalent thereto should be construed as being included in the scope of rights of this embodiment.

110: 클라이언트
120: 시스템
121: 컨피그 매니저
122: 사용자 매니저
123: 로그 매니저
124: SCS
125: 시스템 매니저
126: 커멘드 해석 쉘
110: client
120: system
121: Config Manager
122: user manager
123: log manager
124: SCS
125: system manager
126: command interpreting shell

Claims (13)

사용자 매니저에서 사용자 인증을 수행한 클라이언트로 액세스 토큰(Access token)을 발행하는 과정;
상기 클라이언트에서 상기 액세스 토큰을 첨부하여 마이크로-서비스 아키텍처의 내부 기능에 따라 세분화된 복수의 컴포넌트 중 서비스를 담당하는 컴포넌트로 서비스 호출 메시지를 전송하는 과정;
상기 서비스를 담당하는 컴포넌트에서 상기 사용자 매니저로부터 상기 액세스 토큰에 매칭된 롤(role)을 확인하는 과정;
상기 서비스를 담당하는 컴포넌트에서 상기 롤에 매칭된 접근권한(Access Right)을 확인하는 과정;
상기 서비스를 담당하는 컴포넌트에서 상기 롤에 매칭된 접근권한이 기 설정된 요구 접근권한(Required Access Right) 이상인 지의 여부를 확인하여 확인 결과를 생성하는 과정;
상기 확인 결과에 따라 상기 서비스를 담당하는 컴포넌트에서 상기 클라이언트가 접근하도록 접근 권한을 부여하는 과정;을 포함하되,
상기 서비스를 담당하는 컴포넌트에서 상기 서비스 호출 메시지로부터 상기 액세스 토큰, 함수 그룹, 서브 식별자를 추출하고 상기 사용자 매니저로 상기 액세스 토큰, 상기 함수 그룹을 전송하며,
상기 사용자 매니저에서 상기 서비스를 담당하는 컴포넌트로부터 상기 액세스 토큰, 상기 함수 그룹을 수신하고, 자신의 캐시에 기 저장된 정보를 기반으로 상기 액세스 토큰, 상기 함수 그룹에 대응하는 접근권한과 롤 리스트가 존재하는 지의 여부를 확인한 확인 결과를 생성하는 것을 특징으로 하는 마이크로서비스 기반의 서비스 접근 권한 부여 방법.
A process of issuing an access token from the user manager to a client that has performed user authentication;
attaching the access token to the client and transmitting a service call message to a component in charge of a service among a plurality of components subdivided according to an internal function of a micro-service architecture;
checking a role matched to the access token from the user manager in a component in charge of the service;
checking an access right matched to the role in a component in charge of the service;
generating a confirmation result by checking whether or not the access right matched to the role in the component in charge of the service is greater than or equal to a preset required access right;
Including; granting access authority for the client to access in a component in charge of the service according to the confirmation result;
A component in charge of the service extracts the access token, function group, and sub-identifier from the service call message and transmits the access token and the function group to the user manager;
The user manager receives the access token and the function group from the component in charge of the service, and based on information previously stored in its own cache, the access right and role list corresponding to the access token and the function group exist. Microservice-based service access authorization method, characterized in that for generating a confirmation result confirming whether or not.
제1항에 있어서,
상기 사용자 매니저에서 상기 클라이언트로부터 수신된 사용자 이름(Username), 패스워드(password)가 인증되는 경우, 상기 클라이언트에 대한 상기 액세스 토큰을 발행하고, 상기 액세스 토큰에 상기 사용자 이름에 대응하는 사용자 정보를 매핑하여 자신의 캐시에 저장하는 것을 특징으로 하는 마이크로서비스 기반의 서비스 접근 권한 부여 방법.
According to claim 1,
When the user name and password received from the client are authenticated by the user manager, the access token for the client is issued, and user information corresponding to the user name is mapped to the access token. A microservice-based service access authorization method characterized by storing in its own cache.
삭제delete 삭제delete 제1항에 있어서,
상기 사용자 매니저에서 확인 결과, 자신의 캐시에 기 저장된 정보를 기반으로 상기 액세스 토큰, 상기 함수 그룹에 대응하는 접근권한과 롤 리스트가 존재하는 경우, 상기 함수 그룹에 대응하는 접근권한과 롤 리스트를 상기 서비스를 담당하는 컴포넌트로 전송하는 것을 특징으로 하는 마이크로서비스 기반의 서비스 접근 권한 부여 방법.
According to claim 1,
As a result of checking in the user manager, if the access token and the access rights and role list corresponding to the function group exist based on the information pre-stored in the cache, the access rights and role list corresponding to the function group are displayed. A microservice-based service access authorization method characterized by transmitting to a component in charge of the service.
제5항에 있어서,
상기 서비스를 담당하는 컴포넌트에서 상기 함수 그룹에 대응하는 접근권한이 해당 컴포넌트에 기 설정된 상기 요구 접근권한 이상인지를 확인한 상기 확인 결과를 생성하는 것을 특징으로 하는 마이크로서비스 기반의 서비스 접근 권한 부여 방법.
According to claim 5,
Microservice-based service access authorization method, characterized in that in the component in charge of the service, the confirmation result is generated by confirming whether the access authority corresponding to the function group is greater than or equal to the required access authority preset in the corresponding component.
제6항에 있어서,
상기 서비스를 담당하는 컴포넌트에서 상기 확인 결과에 따라 상기 함수 그룹에 대응하는 접근권한이 해당 컴포넌트에 기 설정된 상기 요구 접근권한 이상인 경우 상기 클라이언트를 상기 함수 그룹으로 접근하도록 접근 권한을 부여하는 것을 특징으로 하는 마이크로서비스 기반의 서비스 접근 권한 부여 방법.
According to claim 6,
In the component in charge of the service, if the access right corresponding to the function group according to the check result is greater than or equal to the required access right set in advance for the corresponding component, the client is given access right to access the function group. Characterized in that A microservice-based service access authorization method.
제6항에 있어서,
상기 서비스를 담당하는 컴포넌트에서 상기 확인 결과에 따라 상기 함수 그룹에 대응하는 접근권한이 해당 컴포넌트에 기 설정된 상기 요구 접근권한 미만인 경우, 상기 서비스 호출 메시지로부터 추출한 상기 서브 식별자가 상기 롤 리스트에 포함된 복수의 접근가능 롤 중 어느 하나에 대응하는 것으로 확인되면, 상기 클라이언트가 상기 함수 그룹에 대응하는 컴포넌트로 접근하는 것을 허용하는 것을 특징으로 하는 마이크로서비스 기반의 서비스 접근 권한 부여 방법.
According to claim 6,
In the component in charge of the service, if the access authority corresponding to the function group according to the check result is less than the requested access authority preset in the corresponding component, the sub-identifier extracted from the service call message is included in the role list. If it is confirmed that it corresponds to any one of the accessible roles of the microservice-based service access authorization method, characterized in that to allow the client to access the component corresponding to the function group.
제6항에 있어서,
상기 서비스를 담당하는 컴포넌트에서 상기 확인 결과에 따라 상기 함수 그룹에 대응하는 접근권한이 해당 컴포넌트에 기 설정된 상기 요구 접근권한 미만인 경우, 상기 서비스 호출 메시지로부터 추출한 상기 서브 식별자가 상기 롤 리스트에 포함된 복수의 접근가능 롤 중 대응되는 롤이 없는 것으로 확인되면, 상기 클라이언트가 상기 함수 그룹에 대응하는 컴포넌트로 접근하는 것을 거부하는 것을 특징으로 하는 마이크로서비스 기반의 서비스 접근 권한 부여 방법.
According to claim 6,
In the component in charge of the service, if the access authority corresponding to the function group according to the check result is less than the requested access authority preset in the corresponding component, the sub-identifier extracted from the service call message is included in the role list. If it is confirmed that there is no corresponding role among the accessible roles of the microservice-based service access authorization method, characterized in that to deny the client access to the component corresponding to the function group.
제1항에 있어서,
상기 사용자 매니저에서 상기 클라이언트로부터 사용자 업데이트 함수, 사용자 삭제 함수, 롤 업데이트 함수 중 어느 하나의 함수가 호출되면, 자신의 캐시에서 사용자 업데이트, 사용자 삭제, 롤 업데이트 중 어느 하나가 발생한 정보를 삭제하고, 복수의 컴포넌트로 상기 사용자 업데이트, 상기 사용자 삭제, 상기 롤 업데이트 중 어느 하나가 발생한 정보를 삭제하라고 지시하는 것을 특징으로 하는 마이크로서비스 기반의 서비스 접근 권한 부여 방법.
According to claim 1,
When any one of a user update function, a user delete function, and a role update function is called from the client in the user manager, it deletes information in which any one of user update, user deletion, and role update has occurred from its own cache, and A microservice-based service access authorization method characterized in that instructing to delete information generated by any one of the user update, the user deletion, and the role update as a component of.
제1항에 있어서,
상기 사용자 매니저에서 상기 클라이언트로부터 롤 삭제 함수가 호출되면, 자신의 캐시에서 상기 롤 삭제 함수에 대응하는 삭제 대상 롤을 매핑하고 있는 사용자가 있는지의 여부를 조회하고, 조회 결과, 상기 삭제 대상 롤을 매핑하고 있는 사용자가 존재하는 경우, 상기 삭제 대상 롤에 대한 삭제를 거부하고 상기 클라이언트로 오류를 응답하는 것을 특징으로 하는 마이크로서비스 기반의 서비스 접근 권한 부여 방법.
According to claim 1,
When a role deletion function is called from the client in the user manager, it inquires whether there is a user mapping a role to be deleted corresponding to the role deletion function in its own cache, and maps the role to be deleted as a result of the inquiry. and rejecting the deletion of the role to be deleted and responding with an error to the client if there is a user who is doing so.
제1항에 있어서,
상기 사용자 매니저에서 상기 클라이언트로부터 롤 삭제 함수가 호출되면, 자신의 캐시에서 상기 롤 삭제 함수에 대응하는 삭제 대상 롤을 매핑하고 있는 사용자가 있는지의 여부를 조회하고, 조회 결과, 상기 삭제 대상 롤을 매핑하고 있는 사용자가 미존재하는 경우, 상기 삭제 대상 롤을 매핑하고 있는 복수의 다른 컴포넌트가 존재하는 지의 여부를 확인하고, 확인 결과, 상기 삭제 대상 롤을 매핑하고 있는 다른 컴포넌트가 존재하는 경우, 상기 삭제 대상 롤에 대한 삭제를 거부하고 상기 클라이언트로 오류를 응답하는 것을 특징으로 하는 마이크로서비스 기반의 서비스 접근 권한 부여 방법.
According to claim 1,
When a role deletion function is called from the client in the user manager, it inquires whether there is a user mapping a role to be deleted corresponding to the role deletion function in its own cache, and maps the role to be deleted as a result of the inquiry. If the user who is playing the role does not exist, it is checked whether a plurality of other components mapping the role to be deleted exist, and as a result of the check, if there is another component mapping the role to be deleted, the deletion is performed. A microservice-based service access authorization method characterized by rejecting deletion of a target role and responding with an error to the client.
제1항에 있어서,
상기 사용자 매니저에서 상기 클라이언트로부터 롤 삭제 함수가 호출되면, 자신의 캐시에서 상기 롤 삭제 함수에 대응하는 삭제 대상 롤을 매핑하고 있는 사용자가 있는지의 여부를 조회하고, 조회 결과, 상기 삭제 대상 롤을 매핑하고 있는 사용자가 미존재하는 경우, 상기 삭제 대상 롤을 매핑하고 있는 복수의 다른 컴포넌트가 존재하는 지의 여부를 확인하고, 확인 결과, 상기 삭제 대상 롤을 매핑하고 있는 다른 컴포넌트가 미존재하는 경우, 상기 삭제 대상 롤을 삭제하는 것을 특징으로 하는 마이크로서비스 기반의 서비스 접근 권한 부여 방법.
According to claim 1,
When a role deletion function is called from the client in the user manager, it inquires whether there is a user mapping a role to be deleted corresponding to the role deletion function in its own cache, and maps the role to be deleted as a result of the inquiry. If the user who is playing the role does not exist, it is checked whether a plurality of other components mapping the role to be deleted exist, and as a result of the check, if there is no other component mapping the role to be deleted, the A microservice-based service access authorization method characterized by deleting a role to be deleted.
KR1020220132107A 2022-10-14 2022-10-14 Method Authorizing Access to Service Based on Microservice KR102535012B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020220132107A KR102535012B1 (en) 2022-10-14 2022-10-14 Method Authorizing Access to Service Based on Microservice

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020220132107A KR102535012B1 (en) 2022-10-14 2022-10-14 Method Authorizing Access to Service Based on Microservice

Publications (1)

Publication Number Publication Date
KR102535012B1 true KR102535012B1 (en) 2023-05-26

Family

ID=86536353

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220132107A KR102535012B1 (en) 2022-10-14 2022-10-14 Method Authorizing Access to Service Based on Microservice

Country Status (1)

Country Link
KR (1) KR102535012B1 (en)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102262093B1 (en) * 2020-07-22 2021-06-08 한국과학기술정보연구원 Gateway apparatus, and control method thereof
KR102430882B1 (en) * 2021-12-13 2022-08-09 에스지에이솔루션즈 주식회사 Method, apparatus and computer-readable medium for container work load executive control of event stream in cloud

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102262093B1 (en) * 2020-07-22 2021-06-08 한국과학기술정보연구원 Gateway apparatus, and control method thereof
KR102430882B1 (en) * 2021-12-13 2022-08-09 에스지에이솔루션즈 주식회사 Method, apparatus and computer-readable medium for container work load executive control of event stream in cloud

Similar Documents

Publication Publication Date Title
US11930015B2 (en) Systems and method for authenticating users of a data processing platform from multiple identity providers
JP3415456B2 (en) Network system, command use authority control method, and storage medium storing control program
US10135827B2 (en) Secure access to remote resources over a network
US7752661B2 (en) Method and system for server support of pluggable authorization systems
CN106411857B (en) A kind of private clound GIS service access control method based on virtual isolation mech isolation test
US7367046B1 (en) Method and apparatus for assigning network addresses to network devices
US20030226036A1 (en) Method and apparatus for single sign-on authentication
EP2212821A1 (en) Methods and systems for user authorization
CN112541190B (en) Map authority control method and control system based on unified user information
US6732172B1 (en) Method and system for providing cross-platform access to an internet user in a heterogeneous network environment
CN101166173A (en) A single-node login system, device and method
CN107257337A (en) A kind of shared authority control method of multiterminal and its system
US9077708B2 (en) Information processing system, control method for controlling the information processing system, and storage medium
JP4558402B2 (en) Principal moves across security boundaries without service interruption
KR102535012B1 (en) Method Authorizing Access to Service Based on Microservice
KR102206847B1 (en) System and method for hybrid security
JPH0779243A (en) Network connection device and network connection method
US20220166763A1 (en) System and method for managing integrated account based on token
US6826695B1 (en) Method and system for grouping of systems in heterogeneous computer network
KR20090128203A (en) Apparatus and method for controlling access in hosting service environment
JPH1131132A (en) Authentication/authority control system
KR102214162B1 (en) A user-based object access control system using server's hooking
JPH04336345A (en) Decentralized file system
US20230244401A1 (en) Data management system, volume access control method and non-transitory computer readable medium
CN118018248A (en) Access control method, system, electronic device and storage medium

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant