안녕하세요!
저스티에요!!
오늘의 블로그 내용은 OpenStack에서 제공하는 서비스중 Horizon과 Keystone간의 정리 및 Login 인증(소스 기준)입니다!
목차
1. Horizon이란?
2. Keystone이란?
2.1 Keystone 구성요소
2.2 Keystone 관계 및 정의
2.2.1 Domain
2.2.2 Project(Tenant)
2.2.3 User와 Group
2.2.4 Role
2.2.5 Token
2.2.6 Endpoint
3. Horizon과 Keystone 간의 인증 Flow
1. Horizon이란?
Horizon은 OpenStack 서비스(e.g. Nova, Glance, Keystone 등)와 자원을 관리할 수 있도록 제공하는 웹 인터페이스입니다.
2. Keystone 이란?
Keystone은 인증(Authentication) 및 인가(Authorization), Endpoint URL, 서비스 검색 메커니즘을 제공합니다. 중앙 집중식 인증을 통해 자원을 안전하게 사용할 수 있도록 제공하는 서비스입니다.
2.1 Keystone 구성요소
- Token Backend: 사용자의 임시 토큰(OpenStack 서비스에 접근하기 위한 신분 증명 데이터)을 관리합니다.
- Catalog backend: 모든 OpenStack 서비스의 대한 End-point URL을 관리(OpenStack Client에서 OpenStack Service 접근을 위한 정보)합니다.
- Policy Backend: 사용자 및 권한 등에 대한 역할을 관리합니다.
- Identity Backend: 사용자 및 그룹에 대한 인증을 관리합니다.
2.2 Keystone 관계 및 정의
2.2.1 Domain
Domain은 사용자 및 그룹, 프로젝트의 모음으로, 특정 조직을 격리할 수 있습니다.
- Keystone에서는 'Default'라는 이름의 기본 도메인을 제공합니다.
- 각 도메인은 특정 API 이름 속성이 존재하는 Namespace를 정의하며, Identity v3 API 속성의 고유성은 아래와 같습니다.
- Domain Name: 모든 도메인에서 고유해야 합니다.
- Role Name: 도메인 내에서 고유해야 합니다.
- User Name: 도메인 내에서 고유해야 합니다.
- Project Name: 도메인 내에서 고유해야 합니다.
- Group Name: 도메인 내에서 고유해야 합니다.
- 도메인 관리자는 도메인에서 프로젝트 및 사용자, 그룹을 만들고 도메인의 사용자 및 그룹에 역할을 할당할 수 있습니다.
- 도메인의 사용자는 적절한 할당이 부여된 경우, 다른 도메인 자원에 접근이 가능합니다.
2.2.2 Project(Tenant)
- Project(Tenant)는 Tenant(Identity v2)라는 용어로 불렸지만, 개념적 표현보다는 직관적인 표현으로 표기하기 위해 Project(Identity v3)로 변경되었습니다.
- 해당 블로그 내용에서는 Project로 통칭하여 내용이 작성되었습니다.
- Project란 OpenStack 서비스에서 리소스(e.g. 서버, 이미지 등 - 프로젝트 및 도메인에 데이터 제공)를 그룹화하고 격리(기본 소유권 단위)하기 위해 추상화되어 있으며, 프로젝트는 도메인에서 고유해야 합니다. 프로젝트의 도메인을 지정하지 않으면 기본 도메인(Default)에 추가됩니다.
- Identity API v3.4 이후, 프로젝트 생성시 프로젝트 계층 구조(parent_id)를 생성할 수 있으며, 계층 구조의 모든 프로젝트는 동일한 도메인에서 소유해야 합니다.
- Identity API v3.6 이후, 프로젝트는 OpenStack 리소스에 대한 컨테이너 역할을 하는 것 외에도 도메인 역할을 할 수 있습니다.
- Keystone의 가장 근본적인 목적은 프로젝트의 Registry와 접근 가능 여부가 명확해야 합니다.
- Project는 사용자 또는 사용자 그룹을 역할 할당 개념으로 사용하여, 프로젝트 리소스에 대한 접근 가능 권한을 부여할 수 있습니다. 권한이 부여된 사용자는 특정 역할에 따라 접근 유형 및 기능이 결정됩니다.
2.2.3 User와 Group
- User는 OpenStack 서비스를 이용하는 사람 또는 서비스(e.g. Nova, Cinder 등)를 의미하며, User는 도메인 내에서 고유해야 합니다.
- Group은 User 집합을 의미하며, Group은 조메인 내에서 고유해야 합니다.
2.2.4 Role
- User 및 Group에게 Role을 할당하여 프로젝트 리소스에 접근할 수 있는 집합을 의미하며, 역할은 User에게 발행된 Token에서 확인할 수 있습니다.
2.2.5 Token
- OpenStack API 및 리소스에 접근 수 있는 영숫자 텍스트 문자열입니다.
- 토큰은 언제든지 취소할 수 있으며, 한정된 기간 동안만 유효합니다.
2.2.6 Endpoint
- User가 서비스를 이용하기 URL 정보(OpenStack Client에서 OpenStack Service 접근을 위한 정보)이며, 서비스는 하나 이상의 Endpoint를 가질 수 있습니다.
- Endpoint 유형
- public: 인터넷을 통해 사용자가 클라우드를 관리할 수 있습니다.
- admin: 클라우드 인프라를 관리하는 운영자에게만 접근을 허용하여 관리할 수 있습니다.
클라우드 환경을 관리하는 조직내부의 운영자들에게만 접근이 허용된다. - internal: OpenStack 서비스가 설치되어 있는 호스트로 제한하여 관리할 수 있습니다.
- Endpoint 유형
2.3 Horizon과 Keystone의 Credentials 인증 타입 Flow
- 초기 설정 및 로그인 화면 호출을 진행합니다.
- 로그인 화면이 정상적으로 호출되었다면, 로그인 화면을 확인할 수 있습니다.
- 로그인 버튼을 클릭시, 아이디와 비밀번호 등에 대해서 입력 여부를 확인합니다.
- 실패시 2번으로 이동하며, 성공시에는 4번으로 이동합니다.
- 입력된 값(아이디와 비밀번호 등) 및 인증 타입 등을 활용하여 사용자 인증 여부를 진행합니다.
- 실패시 2번으로 이동하며, 성공시에는 5번으로 이동합니다.
- 인증 성공시 Token이 발급됩니다.
- Token에는 서비스에 접근할 수 있는 범위(scoped)가 담겨있습니다.
- Token 범위로 지정되는 정보는 아래와 같습니다.
- Project
- Domain
- 배포시스템
- Session에 영역(region, region_name)을 저장합니다.
- 발급된 Token이 정상적인 토큰인지 인증을 진행합니다.
- 실패시 2번으로 이동하며, 성공시에는 8번으로 이동합니다.
- 정상정인 Token이면, Default로 지정된 화면을 호출합니다.
참조
'Cloud > OpenStack' 카테고리의 다른 글
[OpenStack] OpenStack 서비스간 인증 및 권한 프로세스, 그리고 X-Auth-Token과 X-Subject-Token은 무엇인가? (0) | 2021.04.29 |
---|---|
[Openstack] Openstack Horizon Frontend 개발 - AngularJS (0) | 2021.03.01 |
[오픈스택을 다루는 기술] 클라우드 네트워크 상식 (0) | 2021.01.13 |
[오픈스택을 다루는 기술] 오픈스택과 아키텍처 (0) | 2021.01.13 |
[인증체계] Openstack - Keystone 개념 (0) | 2021.01.12 |