1. Keystone 이란?
사용자 인증을 통해 물리 서버 내의 자원을 사용할 수 있도록 관리하는 것입니다.
Keystone에 핵심은 인증(Authorization)과 권한(Authentication) 입니다.
Keystone은 Openstack에 대해 알아야해서 간략하게 정리합니다.
- 알파벳 순서로 릴리즈 되었습니다.
--> (A)ustin, (B)exar, (C)actus, ... , (S)tein, (T)rain... etc - 6개월 단위로 한번씩 릴리즈되고 있습니다.
- Python으로 개발되었습니다.
2. Keystone 등장배경
2010년 10월, Austin Release ~ Diablo Release
처음으로 릴리지 한 Austin(2010.10.21) Release은 단순 Compute(컴퓨트 서비스)와 Storage(오브젝트 파일 스토리지 서비스), Image(이미지 관리 서비스)뿐이였습니다. 그 후 프로젝트를 만들고 Bexar(2011.02.03) Release가 되면서 Compute는 Nova로, Storage는 Swift로, Image는 Glance로 이름을 갖게 되었습니다. 그리고 그 다음버전인 Diablo(2011.04.15) Release까지 기능을 업그레이드했습니다.
기존에 로그인으로 오픈스택 서비스를 인증하는 방식을 사용하였습니다.
그러나 각 서비스들이 모듈별(프로젝트)로 분리되어 있어서
ID와 PW를 사용한 HTTP를 통한 모듈
2012년 5월, Essex Release
Essex Release하면서 새로운 기능을 추가하게 되었습니다. 그 기능들은 Keystone과 Horizon입니다.
Keystone은 Nova, Glance, Swift와 같은 서비스들의 인증을 담당하는 프로젝트이며,
Horizon은 서비스들을 좀 더 쉽게 사용하기 위해 사용자들에게 Dashboard를 제공하는 프로젝트입니다.
중앙집중식 인증
예를 들어, `Nova(노바)가 자격증명을 얻고, Glance(글란스)에서 일부 이미지를 만들거나 가져오고, Neutron(뉴트론)에서 네트워크를 설정하면 간단하네!` 하는데 이것은 중앙집중식 인증시스템이 아니면 힘들어집니다.
그래서 통합하여 관리하는 용도로 나온 것이 Keystone이며, 중앙 집중식 인증과 서비스 카탈로그 등을 사용합니다.
Keystone 개요
- 모든 OpenStack 서비스에 인증(Authorization) & 권한(Authentication)을 제공.
- 엔드포인트(Endpoint)에 대한 URL 목록 제공.
- AWS 스타일에 로그인 및 토큰 방식 등을 포함한 여러 형태의 인증 지원.
- 사용자 인증 부분과 서비스 인증 부분을 관리.
==> 통합관리, HTTP를 통한 인증 & 권한 부여
Openstack의 Keytone 인증방식
- `User -> Keystone` 자격증명 요청(사용자 로그인).
- `Keystone -> User` 토큰 발급.
- `User -> Nova` 토큰을 가지고 Nova에게 접속 요청(Endpoint로 어디 있는지 위치 알고 있음).
- `Nova <-> Keystone` 유저가 가지고 온 토큰이 제대로 된 토큰인지 Keystone에게 확인 요청.
- `Nova -> Glance` 노바가 유저에게 받은 토큰을 가지고 이미지 요청(Endpoint로 어디 있는지 위치 알고 있음).
- `Glance <-> Keystone` 토큰 확인 요청.
- `Glance -> Nova` 이미지를 줌(Response).
- `Nova -> Neutron` 토큰을 가지고 네트워크 요청
- `Neutron <-> Keystone` 토큰 확인 요청.
- `Nova -> Neutron` 토큰을 가지고 확인이 된 유저로 접근 시도.
- `Neutron -> Nova` 기존 Neutron이 갖고 있는 토큰과 Nova가 갖고 있는 토큰이 동일하여 접근 성공.
원하는 정보 성공. - `Nova -> User` 유저가 원했던 인증방식 흐름 성공~!.
WebSSO Flowchart
참고자료
'Cloud > OpenStack' 카테고리의 다른 글
[OpenStack] OpenStack 서비스간 인증 및 권한 프로세스, 그리고 X-Auth-Token과 X-Subject-Token은 무엇인가? (0) | 2021.04.29 |
---|---|
[Openstack] Openstack Horizon Frontend 개발 - AngularJS (0) | 2021.03.01 |
[OpenStack] Authentication & Authorization - OpenStack Keystone과 Horizon 구성요소 정리 및 Login 인증 Flow (0) | 2021.02.18 |
[오픈스택을 다루는 기술] 클라우드 네트워크 상식 (0) | 2021.01.13 |
[오픈스택을 다루는 기술] 오픈스택과 아키텍처 (0) | 2021.01.13 |