Overview
오늘은 OpenStack의 인증 및 인가(Authentication & Authorization) 서비스인 Keystone에 대해 학습하고 정리하려고 한다.
📅 관련 글
2022.05.11 - [Openstack] - Openstack이란?
2022.07.29 - [Openstack] - Openstack Nova란?
2022.08.08 - [Openstack] - Openstack Neutron이란? (network)
2022.08.08 - [Openstack] - Openstack 배치 서비스 Placement란?
2022.08.08 - [Openstack] - Openstack Glance란? (image)
1️⃣ Keystone이란?
OpenStack Keystone 개요
Keystone은 OpenStack의 중앙 집중식 인증(Authentication) 및 인가(Authorization) 서비스다.
모든 OpenStack 서비스(Nova, Glance, Cinder 등)는 Keystone을 통해 사용자 인증을 수행하며, 사용자의 권한(Role) 및 프로젝트(Project)에 대한 접근 권한을 관리한다.
Keystone의 주요 기능
- ✔ 사용자 및 그룹 관리 (Identity Management)
- ✔ 프로젝트 및 도메인 관리 (Multi-tenancy)
- ✔ 인증 및 권한 부여 (Authentication & Authorization)
- ✔ 토큰 기반 접근 제어 (Token-based Access Control)
- ✔ OpenStack 서비스 엔드포인트 관리 (Service Catalog & Endpoints)
Keystone을 활용하면 OpenStack 클라우드에서 자원을 안전하게 보호하고, 다중 사용자 환경을 효율적으로 관리할 수 있다.
2️⃣ Keystone의 주요 구성 요소
Keystone은 크게 네 가지 주요 기능을 제공한다.
구성 요소 | 설명 |
Identity Backend | 사용자(User) 및 그룹(Group)의 인증을 관리 (LDAP, SQL DB 연동 가능) |
Token Backend | 인증된 사용자에게 임시 토큰 발급 (세션 관리) |
Policy Backend | 사용자 및 그룹의 역할(Role) 및 접근 권한 관리 |
Catalog Backend | OpenStack 서비스의 엔드포인트(Endpoint) URL 관리 |
- Keystone은 사용자의 요청을 인증하고, 각 OpenStack 서비스에 적절한 접근 권한을 부여하는 역할을 한다.
3️⃣ Keystone의 핵심 개념
Keystone은 OpenStack에서 사용자 인증 및 접근 제어를 수행하는 데 중요한 여러 개념을 포함하고 있다.
1) Domain (도메인)
- 사용자(User), 그룹(Group), 프로젝트(Project)의 최상위 컨테이너 역할
- 기본적으로 "Default" 도메인이 존재하며, 필요에 따라 다중 도메인 구성이 가능
- 도메인별로 사용자와 프로젝트를 격리하여 관리 가능
도메인은 다중 테넌트 환경을 구축할 때 유용하게 활용될 수 있다.
2) Project (프로젝트, Tenant)
- 사용자가 소유한 리소스를 격리하는 기본 단위
- Identity v2에서는 Tenant(테넌트)라고 불렸지만, Identity v3에서는 Project(프로젝트)로 변경됨
- 하나의 프로젝트는 여러 사용자(User)와 연계될 수 있으며, 역할(Role)에 따라 접근 권한이 달라짐
프로젝트는 OpenStack에서 클라우드 리소스를 격리하고 관리하는 기본 단위이다.
3) User & Group (사용자 및 그룹)
개념 | 설명 |
User (사용자) | OpenStack 서비스를 사용하는 개별 계정 (Nova, Cinder 등 OpenStack 서비스도 User로 등록됨) |
Group (그룹) | 여러 사용자를 묶어 관리하는 단위 |
- 사용자는 Keystone을 통해 인증을 수행하며, 특정 프로젝트 및 역할에 따라 접근 권한이 달라진다.
4) Role (역할)
- 사용자가 특정 프로젝트의 리소스에 접근할 수 있는 권한을 정의
- 예를 들어, 관리자(Admin), 개발자(Developer), 읽기 전용(Read-only) 등의 역할을 설정 가능
역할(Role)은 프로젝트와 사용자 간의 접근 권한을 부여하는 핵심 요소다.
5) Token (토큰)
- Keystone은 사용자 인증 후, 임시적인 접근 권한을 위한 토큰을 발급
- 사용자는 토큰을 이용하여 다른 OpenStack 서비스에 접근 가능
토큰은 보안 강화를 위해 일정 시간 후 만료되며, 필요 시 갱신(refresh)할 수 있다.
6) Endpoint (엔드포인트)
- OpenStack 서비스(Nova, Glance, Cinder 등)의 URL을 관리
- 하나의 서비스는 여러 개의 Endpoint를 가질 수 있음 (Public, Admin, Internal)
Keystone은 OpenStack 서비스의 엔드포인트 목록을 제공하여, 클라이언트가 올바른 서비스에 접근할 수 있도록 한다.
4️⃣ Keystone의 API 및 동작 방식
Keystone은 REST API를 통해 사용자 인증과 서비스 접근을 처리한다.
Keystone 인증 과정 (Token 기반 인증)
- 사용자가 Keystone API에 인증 요청을 보냄 (ID & 비밀번호 포함)
- Keystone이 사용자의 신원을 확인하고, 인증 성공 시 토큰을 발급
- 사용자는 발급된 토큰을 사용하여 OpenStack 서비스에 접근
- OpenStack 서비스는 Keystone에 토큰 검증 요청을 보냄
- Keystone이 토큰을 검증한 후, 서비스 접근을 허용
Keystone을 통해 OpenStack 내에서 통합 인증을 수행할 수 있다.
5️⃣ Keystone을 활용한 OpenStack CLI 명령어 예제
Keystone은 CLI(Command Line Interface)를 사용하여 쉽게 관리할 수 있다.
1) Keystone 사용자(User) 생성
openstack user create --domain default --password mypassword myuser
2) Keystone 프로젝트(Project) 생성
openstack project create --domain default myproject
3) 사용자에게 프로젝트 및 역할(Role) 할당
openstack role add --project myproject --user myuser admin
4) Keystone에서 서비스(Service) 등록
openstack service create --name keystone --description "OpenStack Identity Service" identity
5) Keystone에서 엔드포인트(Endpoint) 추가
openstack endpoint create --region RegionOne identity public <http://keystone.example.com:5000/v3>
Keystone을 활용하면 OpenStack의 사용자 및 프로젝트 관리를 효율적으로 수행할 수 있다.
결론
Keystone은 OpenStack의 인증 및 권한 부여를 담당하는 핵심 서비스이다.
- ✔ 중앙 집중식 인증 및 인가 제공
- ✔ 도메인, 프로젝트, 사용자, 그룹 및 역할(Role) 기반 접근 제어
- ✔ Token 기반 인증을 통해 OpenStack 서비스 간의 연동을 지원
- ✔ OpenStack 서비스 엔드포인트(URL) 관리
- 📌 Keystone을 효과적으로 활용하려면?
- ✔ Identity v2와 v3의 차이점 이해
- ✔ REST API 및 CLI를 통한 사용자 및 프로젝트 관리 방법 숙지
- ✔ RBAC(Role-Based Access Control) 개념을 적용하여 보안 정책 강화
Reference
'Openstack' 카테고리의 다른 글
Openstack Cinder/Swift란? (block storage/object storage) (0) | 2022.08.09 |
---|---|
Openstack horizon이란? (dashboard) (0) | 2022.08.08 |
Openstack Glance란? (image) (0) | 2022.08.08 |
Openstack 배치 서비스 Placement란? (0) | 2022.08.08 |
Openstack Neutron이란? (network) (0) | 2022.08.08 |