OpenStack 사이트에서 “OpenStack is a cloud operating system that controls large pools of compute, storage and networking resources throughout a datacenter, all managed and provisioned through APIs with common authentication mechanisms.”이라고 설명되어 있음.
해당 설명을 번역 및 요약하면, “오픈스택은 데이터 센터의 자원들을 제어하는 클라우드 운영체제이며, API를 통해 관리함”으로 번역이 됨.
나는 해당 번역을 “너희들의 남아도는 자원들도 AWS처럼 클라우드 서비스를 할 수 있도록 해주겠다”라는 뜻으로 간단하게 이해하였음. → 실제로 LG CNS, NHN Cloud, VMware 등 국내외에서 OpenStack을 이용하여 퍼블릭 클라우드를 운영하고 있음.
OpenStack 구성
OpenStack은 필요에 따라 구성 요소를 Plug-In 할 수 있도록 서비스로 구분되어 있음. → VSCODE에서 필요한 기능을 확장프로그램으로 설치하여 사용하는 것과 같음.
엄청 많은 프로젝트(Plug-In)이 존재하며, OpenStack 사이트에서 간단한 설명이 되어 있음. 하지만 나는 OpenStack에 뇌 메모리를 많이 투자하는 것은 싫기 때문에 간단하게 필수 컴포넌트만 알고 가겠음.
Component
Description
Nova
인스턴스 담당 →서버 가상화 지원, 여러 가상화 S/W를 제어하여 VM 등을 관리
Glance
이미지 담당 → Nova에서 VM를 만들 때 필요한 OS 이미지 관리
Cinder
스토리지 담당 → 볼륨 서비스를 제공∙관리
Neutron
네트워크 담당 → 네트워크 서비스를 지원
Keystone
유저/인증 담당 → 모든 프로젝트의 인증을 통합 관리
위 5개의 컴포넌트만 있으면, 인스턴스를 생성하고 사용할 수 있는 환경을 만들 수 있음. 클라우드 서비스를 하려면 인스턴스 생성만은 불가능하지만, 그래도 클라우드 서비스에서 가장 중요한 인스턴스 생성을 할 수 있음.
OpenStack CCE
Kisa에서 발간한 클라우드 취약점 점검 가이드에서정의한 OpenStack의 CCE에 대하여 간단하게 정리하겠음. 이후, 취약점 점검 항목의 상세 설명과 OpenStack를 구축하여 점검해보는 것을 정리하겠음.
CCE이란?
사용자에게 허용된 권한 이상의 동작을 허용하거나, 범위 이상의 정보 열람∙변조∙유출을 가능하게 하는 시스템 설정 상의 취약점
취약점 점검 항목
항목은 크게 3개의 영역으로 나눠짐.
∙ 파일 권한 관리 : 14개 항목
∙ 암호화 : 15개 항목
∙ 보안 설정 : 18개 항목
파일 권한 관리
Code
Name
Service
OT-01
Identity 설정파일 소유권 설정
keystone
OT-02
Identity 설정파일 접근권한 설정
keystone
OT-03
Dashboard 설정파일 소유권 설정
horizon
OT-04
Dashboard 설정파일 접근권한 설정
horizon
OT-05
Computer 설정파일 소유권 설정
nova
OT-06
Computer 설정파일 접근권한 설정
nova
OT-07
블록 스토리지 서비스 설정파일 소유권 설정
cinder
OT-08
블록 스토리지 서비스 설정파일 소유권 설정
cinder
OT-09
이미지 스토리지 설정파일 소유권 설정
glance
OT-10
이미지 스토리지 설정파일 접근권한 설정
glance
OT-11
공유파일 시스템 설정파일 소유권 설정
manila
OT-12
공유파일 시스템 설정파일 소유권 설정
manila
OT-13
네트워킹 서비스 설정파일 소유권 설정
neutron
OT-14
네트워킹 서비스 설정파일 접근권한 설정
neutron
암호화
Code
Name
Service
OT-15
Identity TLS 활성화
keystone
OT-16
PKI토큰의 강력한 해시 알고리즘 사용
keystone
OT-17
Dashboard의 SECURE_PROXY_SSL_HEADER 설정
horizon
OT-18
Computer 인증을 위한 보안프로토콜 사용
nova
OT-19
Nova와 Glance의 안전한 통신
nova
OT-20
블록 스토리지 서비스 인증을 위한 TLS 활성화
cinder
OT-21
cinder와 nova의 TLS 통신
cinder
OT-22
cinder와 glance의 TLS 통신
cinder
OT-23
이미지 스토리지 서비스 인증을 위한 TLS 활성화
glance
OT-24
공유 파일 시스템 인증을 위한 TLS 활성화
manila
OT-25
TLS를 이용한 공유 파일 시스템과 Computer의 통신
manila
OT-26
TLS를 이용한 공유 파일 시스템과 네트워킹과의 연결
manila
OT-27
TLS를 이용한 공유 파일 시스템과 블록 스토리지 서비스와의 연결
manila
OT-28
네트워킹 서비스의 인증을 위한 안전한 프로토콜 사용
neutron
OT-29
Neutron API 서버의 TLS 활성화
neutron
OT-30
Identity 서비스 max_request_body_size 설정
keystone
OT-31
admin 토큰 비활성화
keystone
OT-32
Dashboard의 DISALLOW_IFRAME_EMBED 설정
horizon
보안 설정
Code
Name
Service
OT-33
Dashboard의 CSRF_COOKIE_SECURE 설정
horizon
OT-34
Dashboard의 SESSION_COOKIE_SECURE 설정
horizon
OT-35
Dashboard의 SESSION_COOKIE_HTTPONLY 설정
horizon
OT-36
Dashboard의 PASSWORD_AUTOCOMPLETE 설정
horizon
OT-37
Dashboard의 DISABLE_PASSWORD_REVEAL 설정
horizon
OT-38
Dashboard의 ENFORCE_PASSWORD_CHECK 설정
horizon
OT-39
Dashboard의 PASSWORD_VALIDATOR 설정
horizon
OT-40
Computer의 인증을 위한 keystone 설정
nova
OT-41
블록 스토리지 서비스의 인증을 위한 keystone 사용
cinder
OT-42
안전한 환경에서의 NAS 운영
cinder
OT-43
블록 스토리지 서비스에서 요청 본문 최대 크기 설정
cinder
OT-44
블록 스토리지 볼륨 암호화
cinder
OT-45
이미지 스토리지 서비스 인증을 위한 keystone 설정
glance
OT-46
공유파일 시스템 인증을 위한 오픈스택 Identity 사용
manila
OT-47
공유파일 시스템에서 요청 본문 최대 사이즈 설정
manila
점검 항목에서 각 설정해줘야하는 서비스들을 정리하였음.
이렇게 정리한 이유는 OpenStack은 각 서비스들을 각각의 서버로 구축하는 경우도 있기 때문이다.
이러한 이유 때문에 영역별보단 점검해야하는 서비스별로 나눠서 정리하는 것이 좋을 것 같음.
위 점검 항목의 서비스 중 정리하지 않은 2가지 서비스가 존재함.
∙horizon : OpenStack의 대시보드를 담당하는 서비스, AWS에선 Console이 존재함.
∙manila : 공유 또는 분산 파일 시스템을 담당하는 서비스, AWS에선 EFS이 존재함.