[오픈스택 클라우드 개념] 인증 서비스(Keystone)

blog post 

 

이번 포스트에서는 오픈스택에서의 인증, 승인 등의 서비스를 제공하는 Keystone 서비스에 관하여 다뤄보도록 하겠습니다.

 

 

오픈스택 인증 서비스(Keystone) 특징

 

 

 

 앞서 말씀드린 바와 같이 Keystone의 핵심은 사용자 및 각종 서비스 접근에 대한 인증 서비스를 제공하는 것이지만, 이에 더하여 다양한 기능을 수행합니다. 구체적으로 Keystone 서비스는 오픈스택 시스템의 백엔드에서 아래와 같은 기능들을 수행합니다.

 

 

 

- Identity: Keystone 서비스의 핵심 기능입니다. 사용자 및 그룹, 프로젝트, 역할 등을 관리합니다.

- Assignment: 역할을 관리하고 사용자에게 역할을 할당합니다.

- Resource: 자원 할당을 위해 도메인 별로 조직을 구분하고 조직 내 프로젝트를 관리합니다.

 

- Token: 사용자가 실제로 서비스를 이용하기 위해 발급받은 토큰을 관리하고 토큰에 대한 유효성을 검증합니다. 구체적으로는 사용자가 OpenStack 서비스의 API를 호출하려면 우선 자신이 누구인지 알릴 수 있어야 하고 API를 호출할 수 있어야 하는데, 이를 위해 OpenStack 토큰을 전달함으로써 이루어집니다. Keystone이 이러한 토큰을 생성하고 관리하는 역할을 담당합니다. 사용자가 Keystone을 통해 인증에 성공하면 이 토큰을 받게 됩니다. 이 토큰은 이후에도 인증 과정에서 사용됩니다. 토큰은 ID와 페이로드 둘 다 가지고 있으며, 토큰의 Identity는 클라우드당 고유하며, 페이로드에 사용자에 대한 데이터가 포함되어 있습니다.

 

- Catalog: 오픈스택에서 동작하는 각종 서비스는 API End-Point URL을 가지게 됩니다. 서비스들은 서로 통신하는 과정에서 이 URL을 기반으로 통신하며, 이러한 URL 정보들을 Keystone에서 관리합니다.

 

- Policy: 키스톤은 기본적으로 역할 기반 접근 제어 (Role Based Access Control, RBAC) 방식으로 사용자 및 그룹, 프로젝트, 도메인을 제어합니다. 좀 더 구체적으로, Keystone의 기본 설정파일인 /etc/keystone/keystone.conf을 통해 JSON형태의 정책 파일을 참조합니다. 일반적으로 이 파일의 이름은 policy.json이며, 이 파일에 역할이 정의되어 있습니다. 이를 통해 서비스의 특정 작업에 액세스 할 수 있는 권한이 주어집니다.

 




이와 같이 Keystone 서비스가 시스템의 백엔드에서 다양한 기능들을 수행하는 것을 볼 수 있습니다. 이 중 핵심은 사용자 및 서비스 인증 역할입니다. 앞서 말씀드린 것과 같이 오픈스택 시스템에서는 사용자를 기반으로 하여 다양한 역할을 부여하고 자원 할당을 위해 프로젝트에 귀속시킬 수 있습니다. 이를 개념적으로 표현해보면 다음 그림과 같습니다.

 

사용자, 그룹, 프로젝트, 도메인 및 역할

 

- 도메인
OpenStack 클라우드 시스템이 사용자 조직을 구분하기 위한 영역입니다. 프로젝트, 그룹, 사용자 등을 분리함으로써 하나의 조직을 구성할 수 있는 추상화 된 공간입니다.

- 프로젝트
흔히 테넌트라고 부르는 그룹입니다. 프로젝트에는 전체 가용 자원 가운데 CPU 코어, 디스크, 메모리 등 자원이 일정량 할당되어 있으며(물론 사전에 관리자가 생성 단계에서 자원을 부여함), 같은 도메인 내에서 특정 사용자 혹은 사용자 그룹을 이 프로젝트에 귀속시킴으로써 해당 프로젝트에 할당된 자원을 사용하는 권한을 사용자에게 부여할 수 있습니다.

- 사용자 및 사용자 그룹(Actors)

도메인 및 프로젝트에서 격리된 실제 사용자를 의미합니다. 실제 이 클라우드 시스템을 사용할 최종 사용자를 의미하기도 합니다.


- 역할

키스톤에서 역할은 클라우드 시스템의 서비스에 대한 접근 권한의 정도를 의미합니다. 예를 들어 관리자(Admin) 권한을 가진 사용자의 경우, 전체 시스템을 제어할 수 있는 권한을 가진 반면, 일반 사용자의 경우 경우에 따라 단순 가상 네트워크 구성, 혹은 VM 제어 등 한정적인 역할만 부여받을 수 있습니다. 

 

TAGS.

Comments