Cloud/OpenStack

[인증체계] Openstack - Keystone 개념

just-e 2021. 1. 12. 23:45

[그림 1]

1. Keystone 이란?

사용자 인증을 통해 물리 서버 내의 자원을 사용할 수 있도록 관리하는 것입니다.

Keystone에 핵심은 인증(Authorization) 권한(Authentication) 입니다.

 

Keystone은 Openstack에 대해 알아야해서 간략하게 정리합니다.

  • 알파벳 순서로 릴리즈 되었습니다.
      --> (A)ustin, (B)exar, (C)actus, ... , (S)tein, (T)rain... etc
  • 6개월 단위로 한번씩 릴리즈되고 있습니다.
  • Python으로 개발되었습니다.

2. Keystone 등장배경

[그림 2]

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를 제공하는 프로젝트입니다.


[그림 3]

중앙집중식 인증

예를 들어, `Nova(노바)가 자격증명을 얻고, Glance(글란스)에서 일부 이미지를 만들거나 가져오고, Neutron(뉴트론)에서 네트워크를 설정하면 간단하네!하는데 이것은 중앙집중식 인증시스템이 아니면 힘들어집니다.

그래서 통합하여 관리하는 용도로 나온 것이 Keystone이며, 중앙 집중식 인증과 서비스 카탈로그 등을 사용합니다.


Keystone 개요

  • 모든 OpenStack 서비스에 인증(Authorization) & 권한(Authentication)을 제공.
  • 엔드포인트(Endpoint)에 대한 URL 목록 제공.
  • AWS 스타일에 로그인 및 토큰 방식 등을 포함한 여러 형태의 인증 지원.
  • 사용자 인증 부분과 서비스 인증 부분을 관리.

     ==> 통합관리, HTTP를 통한 인증 & 권한 부여


Openstack의 Keytone 인증방식

[그림 4]

  1. `User -> Keystone` 자격증명 요청(사용자 로그인).
  2. `Keystone -> User` 토큰 발급.
  3. `User -> Nova` 토큰을 가지고 Nova에게 접속 요청(Endpoint로 어디 있는지 위치 알고 있음).
  4. `Nova <-> Keystone` 유저가 가지고 온 토큰이 제대로 된 토큰인지 Keystone에게 확인 요청.
  5. `Nova -> Glance` 노바가 유저에게 받은 토큰을 가지고 이미지 요청(Endpoint로 어디 있는지 위치 알고 있음).
  6. `Glance <-> Keystone` 토큰 확인 요청.
  7. `Glance -> Nova` 이미지를 줌(Response).
  8. `Nova -> Neutron` 토큰을 가지고 네트워크 요청
  9. `Neutron <-> Keystone` 토큰 확인 요청.
  10. `Nova -> Neutron` 토큰을 가지고 확인이 된 유저로 접근 시도.
  11. `Neutron -> Nova` 기존 Neutron이 갖고 있는 토큰과 Nova가 갖고 있는 토큰이 동일하여 접근 성공.
    원하는 정보 성공.
  12. `Nova -> User` 유저가 원했던 인증방식 흐름 성공~!.

WebSSO Flowchart

[그림 5, WebSSO Flowchart]

 

 

 

 

 

참고자료

Openstack 사이트 - Keystone

Keystone 정리 블로그1

위키 사이트