기본적인 user 인증 서비스로써 authN(유저 인증), authZ(서비스권한 인증)을 사용한다.
각 유저에 대한 인증 후 토큰을 발급 및 이를 통해 서비스를 제공 받을 수 있다.
각 유저들은 각 component들에 대한 endpoint들이 등록이 되어있어야 특정 component에 대한 서비스를 제공 받을 수 있다.
기본적인 데이터 베이스 저장소(mysql, mariaDB 등)을 사용한다.
LDAP을 사용하여 기존의 유저의 인증 서비스 제공 가능.
모든 통신은 REST API를 사용한다.
위의 API 통신을 위해 MessageQueue(RabbitMQ 등)을 사용한다.
Domain
최상위 구성요소로써 각각의 Component 서비스, project, user들을 관리 할 수 있다.
여러 domain을 구성 할 수 있으며 각각의 도메인은 unique해야한다.
Project
특정한 자원에 관한 권리를 가진 보안그룹
user, service등을 소유 할 수 있다.
Endpoint
각 자원에 대한 endpoint(접근 가능한 네트워크 주소)들을 저장하고 관리한다.
유형
Admin : openstack의 host들만이 접근 가능
Internal : 내부 서비스간에만 접근 가능
Public : 외부의 user들도 접근 가능
Token
각각의 user들이 인증 위해 사용된다.
접근 가능한 endpoint들이 지정되어 있다.
토큰의 유형 : fernet, uuid 등이 있다.
Role
3가지 유형의 role이 존재한다.
Admin : 생성, 삭제 등과 같은 모든 동작을 다 수행할 수 있다.
Member : 생성 기능은 수행 할 수 있지만 삭제의 기능은 수행 불가
Reader : 읽기 기능만 가능 하다.
User는 keystone 서버로 부터 유저 인증 후 token ID(unscoped)를 발급 받는다.
User는 token ID(unscoped)를 통해 keystone에 접속 가능한 프로젝트 목록을 요청
keystone은 사용 가능한 Endpoint 목록을 작성
keystone에서 user의 요청 프로젝트 목록과 사용 가능한 프로젝트를 비교 한 후 token ID(scoped)를 전송
그 후 user의 요청 시 요청 받은 서비스는 keystone에 인증 요청 후 검증
서비스 제공