본문 바로가기

전산

# 오픈스택 Keystone 구성하기

반응형

1. Keystone이란?

오픈스택(OpenStack)은 클라우드 인프라를 구축하기 위한 오픈소스 플랫폼으로, 다양한 컴퓨팅, 스토리지, 네트워킹 서비스를 제공합니다. 그중 Keystone은 오픈스택의 인증 및 권한 관리 서비스로, 사용자 인증과 서비스 간의 권한을 관리하는 핵심 컴포넌트입니다.

Keystone은 다음과 같은 기능을 수행합니다.

  • 사용자 인증(Authentication): ID, 패스워드, 토큰을 이용한 인증
  • 권한 부여(Authorization): 프로젝트 및 역할 기반 액세스 제어(RBAC)
  • 서비스 카탈로그(Service Catalog): 오픈스택 서비스 목록 및 엔드포인트 관리
  • 다중 백엔드 지원: 데이터베이스, LDAP 등 다양한 인증 백엔드 지원

본 가이드에서는 Ubuntu 22.04를 기준으로 Keystone을 설치하고 구성하는 방법을 설명합니다.

2. Keystone 설치 전 준비

Keystone을 설치하기 전에 다음과 같은 시스템 요구 사항을 충족해야 합니다.

2.1 시스템 요구 사항

  • 운영 체제: Ubuntu 22.04 또는 RHEL 9
  • RAM: 최소 4GB
  • CPU: 최소 2 vCPU
  • 디스크 공간: 최소 10GB
  • 데이터베이스: MariaDB 또는 MySQL
  • 메시지 큐: RabbitMQ
  • Memcached: Keystone 캐싱 서비스

2.2 패키지 업데이트 및 필수 패키지 설치

먼저, 패키지를 최신 상태로 업데이트하고 필수 패키지를 설치합니다.

sudo apt update && sudo apt upgrade -y
sudo apt install -y python3-openstackclient mariadb-server rabbitmq-server memcached python3-memcache

3. Keystone 설치 및 데이터베이스 설정

3.1 MariaDB 설정

MariaDB를 설치하고 보안을 강화한 후, Keystone 데이터베이스를 생성합니다.

sudo mysql_secure_installation

이후, Keystone 데이터베이스 및 사용자 생성:

CREATE DATABASE keystone;
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY 'KESTONE_DB_PASSWORD';
FLUSH PRIVILEGES;

3.2 Keystone 설치

Keystone 패키지를 설치합니다.

sudo apt install -y keystone

4. Keystone 구성 및 서비스 시작

4.1 Keystone 설정 파일 수정

Keystone의 기본 설정 파일인 /etc/keystone/keystone.conf를 수정합니다.

sudo nano /etc/keystone/keystone.conf

아래 내용을 수정합니다.

[database]
connection = mysql+pymysql://keystone:KESTONE_DB_PASSWORD@localhost/keystone

[token]
provider = fernet

4.2 Fernet 키 초기화

Keystone의 보안 토큰을 생성하기 위해 Fernet 키를 초기화합니다.

sudo keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
sudo keystone-manage credential_setup --keystone-user keystone --keystone-group keystone

4.3 데이터베이스 마이그레이션 수행

sudo keystone-manage db_sync

4.4 관리자 사용자 및 서비스 생성

관리자 사용자와 도메인을 생성합니다.

sudo keystone-manage bootstrap --bootstrap-password ADMIN_PASS \
  --bootstrap-admin-url http://localhost:5000/v3/ \
  --bootstrap-internal-url http://localhost:5000/v3/ \
  --bootstrap-public-url http://localhost:5000/v3/ \
  --bootstrap-region-id RegionOne

5. Keystone 서비스 실행 및 확인

5.1 Apache 서비스 재시작

sudo service apache2 restart

5.2 환경 변수 설정

export OS_USERNAME=admin
export OS_PASSWORD=ADMIN_PASS
export OS_PROJECT_NAME=admin
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_DOMAIN_NAME=Default
export OS_AUTH_URL=http://localhost:5000/v3
export OS_IDENTITY_API_VERSION=3

5.3 Keystone 서비스 확인

openstack token issue

정상적으로 설정되었다면 토큰 정보가 출력됩니다.

6. Keystone 서비스 카탈로그 구성

Keystone을 사용하여 다른 오픈스택 서비스를 등록합니다.

openstack service create --name keystone --description "OpenStack Identity" identity

이후 서비스 엔드포인트를 등록합니다.

openstack endpoint create --region RegionOne identity public http://localhost:5000/v3
openstack endpoint create --region RegionOne identity internal http://localhost:5000/v3
openstack endpoint create --region RegionOne identity admin http://localhost:5000/v3

7. Keystone 사용자 및 프로젝트 관리

사용자와 프로젝트를 생성하여 권한을 부여할 수 있습니다.

7.1 프로젝트 생성

openstack project create --domain default --description "Demo Project" demo

7.2 사용자 생성

openstack user create --domain default --password DEMO_PASS demo

7.3 역할 부여

openstack role add --project demo --user demo member

8. Keystone 구성 최적화 및 보안 강화

8.1 토큰 만료 시간 조정

토큰 만료 시간을 조정하여 보안을 강화할 수 있습니다.

[token]
expiration = 3600

8.2 TLS(SSL) 활성화

Apache를 이용하여 SSL 인증서를 설정할 수 있습니다.

sudo a2enmod ssl
sudo service apache2 restart

9. 결론

이제 OpenStack Keystone이 성공적으로 구성되었습니다. Keystone은 인증 및 권한 관리를 담당하는 중요한 컴포넌트로, 다른 오픈스택 서비스와 연동하여 클라우드 환경을 안전하게 운영할 수 있습니다. 이후에는 Nova(컴퓨팅), Glance(이미지), Neutron(네트워크) 등의 서비스와 통합하여 오픈스택 클라우드를 완벽하게 구축할 수 있습니다.

반응형