Keystone (Identity Service)
- 정의: OpenStack의 인증·권한 관리 서비스
- 기능
- 사용자 인증 (로그인)
- 토큰 발급 및 관리
- 프로젝트·역할 기반 권한 제어
- OpenStack 전체의 SSO(단일 로그인) 구현
- AWS 비교: IAM(Identity and Access Management)과 유사
구조
- 사용자(User), 프로젝트(Project), 역할(Role)의 관계
- OpenStack CLI나 API는 Keystone을 통해 인증 토큰을 먼저 받아야 함
- 그 토큰을 가지고 다른 컴포넌트(Nova, Neutron 등)에 접근함
[사용자] -- 로그인 요청 --> [Keystone]
<--- 토큰 발급 ----
[사용자] -- 토큰 전달 --> [Nova / Glance / Neutron / …]
- 모든 OpenStack API/CLI 요청은 Keystone 토큰을 거쳐야 실행 가능
구성 요소
| 용어 | 의미 |
|---|
| User | 로그인 계정 (ex. admin, demo) |
| Project | 자원 격리 단위 (ex. admin, dev-team) |
| Role | 권한 수준 (ex. admin, member) |
| Domain | 사용자/프로젝트를 묶는 그룹 (기본은 default) |
| Token | 로그인 성공 후 발급되는 인증 수단 |
Keystone의 역할
| 사용 사례 | 설명 |
|---|
| CLI 사용 전 openrc 불러오기 | 내부적으로 Keystone에 로그인해서 토큰 발급 |
| Horizon 로그인 | Keystone 인증을 거쳐 대시보드 접근 |
| 사용자 계정 분리 | 부서, 팀별로 프로젝트 단위로 자원 격리 |
| 권한 제어 | admin, readonly 등 다양한 역할 배정 가능 |
주요 명령어
현재 로그인 상태 확인
openstack token issue
사용자 목록 확인
openstack user list
프로젝트 목록 확인
openstack project list
역할(Role) 목록 확인
openstack role list
사용자에게 역할 부여
openstack role add --user demo --project demo member
권한 확인
openstack role assignment list --user <user_id> --project <project_id>
서비스 등록 확인
openstack catalog list
openstack endpoint list
운영 팁
-
OpensRC 파일 관리
- source admin-openrc.sh or source demo-openrc.sh
- 프로젝트별로 openrc 파일 분리해서 관리하면 편리
-
토큰 만료 문제
- Keystone 토큰은 기본 1시간 유효 > 장시간 세션 시 재발급 필요
-
로그 확인
- /var/log/kolla/keystone/keystone.log
- 인증 실패(401 Unauthorized) 시 가장 먼저 확인할 위치
학습
- Federated Identity (연합 인증): LDAP, SAML, OIDC 연동
- TOKEN 종류: UUID, Fernet 토큰 방식 차이
- Policy.json/ policy.yaml: 서비스별 권한 제어 정책 구조
- Keystone HA 구성: 다중 Keystone 서비스와 Galera DB 기반 고가용성
- RBAC 세분화: 프로젝트별, 서비스별 권한 설계 방법