Openstack

Openstack Keystone이란? (identity)

Somaz 2022. 8. 8. 18:03
728x90
반응형

Overview

오늘은 OpenStack의 인증 및 인가(Authentication & Authorization) 서비스인 Keystone에 대해 학습하고 정리하려고 한다.

출처 : https://www.redhat.com/ko/blog/keystone-identity-openstack

 

 

📅 관련 글

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

728x90
반응형