Keystone
인증을 관리하는 서비스 : Keyston
인증을 관리하는 서비스 : Keystone
- Keystone은 인증 토큰을 비롯해 테넌트 및 사용자 관리, 서비스의 엔드포인트 URL 등을 관리하는 서비스
- Keystone은 openstack의 백엔드에서 RBAD ( Role Based Access Control )을 통해 사용자의 접근을 제어하는 등의 인증 ( Identify ) 서비스로 사용되며 다음과 같은 기능으로 이루어져 있음
Keystone의 구성요소
구성요소 | 역할 |
---|---|
user | 사람 또는 오픈 스택 서비스를 이용하는 서비스 ( nova, neutron, cinder 등 )을 의미 |
User은 특정 프로젝트에 할당할 수 있으며, 증복을 허용하지 않음 | |
Authentication | 사용자의 신분을 확인하는 절차로, 특정 값을 통해 Keystone이 이를 검증 |
보통 인증을 위한 자료로는 ID, PW가 사용되며 Keystone은 인증확인 시 인증토큰을 방행 | |
Token | RBAD의 신분을 증명하기 위해 사용되는 텍스트 데이터 |
Token type | fernet, uuid, pki, pkiz |
어떤 자원에 접근이 가능한지 범위가 지정되어 있음 ( 시간 제한 있음 ) | |
Project | Keystone V2까지 Tenant라는 이름으로 사용 ( V3 이후 Project ) |
어떤 자원이나 어플리케이션에 대한 권리를 가진 보안그룹 | |
프로젝트는 특정 도메인에 의해 소유 | |
Endpoint | 사용자가 서비스를 이용하기 위해 연결정보를 제공하는 접근 가능한 네트워크 주소 ( URL ) |
EndPoint type | admin, internal, public |
Role | 사용자가 어떤 동작을 수행하도록 허용하는 규칙 |
사용자가 가지는 역할은 사용자에게 발행된 토큰을 통해 확인 | |
사용자가 서비스를 호출하면, 서비스는 토큰에 저장된 사용자의 역할을 해석하여 허용유무 결정 | |
Domain | 구성요소를 효과적으로 관리하기 위한 사용자, 그룹, 프로젝트의 집합 |
사용자들은 한 도메인의 관리자의 권한 등을 부여받는 방식으로 역할을 부여가능 |
Domain, Project, Group, User, Rule 개념과 관계
- Keystone은 위에도 언급하였 듯이 사용자 인증 부분과 서비스 인증 부분을 관리
- 사용자일 때는 사용자 ID와 패스워드, 사용자 권한의 롤( Roll )을 등록
- 서비스일 때는 서비스를 등록하고 해당 서비스의 엔드포인트 URL을 등록
- 도메인(Domain)은 서로 분리되어 있음
- 각 도메인에는 프로젝트와 사용자가 있음
- 프로젝트는 사용자를 가질 수 있음
- 사용자에게는 롤이 있으며, 여러 프로젝트의 구성원이 될 수 있음
- 관리자 롤(Admin Role)을 가진 사용자끼리, 일반 사용자롤(Member Role)을 가진 사용자간의 그룹핑(Grouping)을 할 수 있음
Keystone의 논리 아키텍처
- Keystone의 논리 아키텍처는 토큰(Token), 카탈로그(Catalog), 정책(Poliy), 인증(Identity) 으로 구성
구성요소 | 역할 |
---|---|
Token Backend | 사용자별 토큰을 관리 |
Catalog Backend | 오픈스택에서 모든 서비스의 엔드포인트 URL을 관리 |
Policy Backend | 테넌트, 사용자 계정, 롤 등을 관리 |
Identity Backend | 사용자 인증을 관리 |
Openstack에서 Keystone 위치
- Openstack Keystone은 모든 서비스를 관장하는 위치
- 모든 User, Service는 Keystone의 인증을 통해서만 요청, 응답이 가능
- Keystone은 타인이나 해커에게서 시스템을 안전하게 보호하고 사용자 등록, 삭제, 권한 관리, 사용자가 접근할 수 있는 서비스 포인트 관리와 다른 API들의 인증 등의 전체적인 인증 프로세스를 관리하는 역할을 수행
마지막 수정일자