Ssup2 Blog logo Ssup2 Blog

OpenStack의 Keystone을 분석한다.

1. OpenStack Keystone

[그림 1] Keystone Components

Keystone은 OpenStack에서 RBAC 기반의 인증(Authentication), 인가(Authorization)를 제공하고 OpenStack의 Service Discovey 기능도 제공한다. [그림 1]은 Keystone의 Backend들과 각 Backend에 저장된 Keystone의 구성요소들을 나타내고 있다. 각 구성 요소는 다음과 같다.

1.1. Authentication, Authorization Components Relations

[그림 2] Keystone Authentication, Authorization Components Relations

[그림 2]는 Keystone의 인증/인가 관련 주요 구성요소들의 관계를 나타내고 있다. Policy는 Domain 밖의 전역 공간에 위치한다. Policy안의 Rule의 집합으로 Role이 정의된다. Role은 특정 Domain안에 소속되거나 Domain 밖의 전역 공간에 위치한다. User, Group, Project는 특정 Domain안에 소속된다. Group은 User의 집합으로 구성된다. User 또는 Group은 각 Project마다 다른 Role을 갖도록 Mapping 될 수 있다.

1.2. Service Authentication, Authorization with Keystone

[그림 3] Service Authentication, Authorization with Keystone and Server Side Authorization

[그림 4] Service Authentication, Authorization with Keystone and Client Side Authorization

[그림 3]과 [그림 4]는 OpenStack의 Service에서 Keystone을 이용하여 인증/인가를 수행하는 과정을 나타내고 있다. [그림 3], [그림 4] 둘다 OpenStack Client가 Keystone에게 User ID/Password 또는 Credential을 전달하여 Token을 얻는 과정을 동일하다. 그뒤의 과정은 Token Type에 따라서 달라진다. UUID 또는 Fernet Type의 Token에는 Token의 유효성 검사를 위한 정보 및 인증 인가를 위한 정보가 포함되어 있지 않다. 따라서 [그림 3]처럼 OpenStack Client 또는 다른 OpenStack Service로부터 Token을 받은 OpenStack Service는 KeyStone을 통해서 Token의 유효성 및 인가 정보를 확인해야 한다. 이러한 방식을 Server Side Authorization이라고 부른다.

PKI 또는 JWT Type의 Token에는 Token의 유효성 검사를 위한 정보 및 인가를 위한 정보가 포함되어 있다. 따라서 [그림 4]처럼 OpenStack Client 또는 다른 OpenStack Service로부터 Token을 받은 OpenStack Service는 Keystone의 도움 없이 Token의 유효성 및 인가 정보를 확인할 수 있다. 이러한 방식을 Client Side Authorization이라고 부른다.

2. 참조