[OpenStack] Authentication & Authorization - OpenStack Keystone과 Horizon 구성요소 정리 및 Login 인증 Flow

2021. 2. 18. 14:21·Cloud & DevOps/OpenStack

안녕하세요!
저스티에요!!

 

오늘의 블로그 내용은 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 구성요소

Keystone 구성요소

  • Token Backend: 사용자의 임시 토큰(OpenStack 서비스에 접근하기 위한 신분 증명 데이터)을 관리합니다.
  • Catalog backend: 모든 OpenStack 서비스의 대한 End-point URL을 관리(OpenStack Client에서 OpenStack Service 접근을 위한 정보)합니다.
  • Policy Backend: 사용자 및 권한 등에 대한 역할을 관리합니다.
  • Identity Backend: 사용자 및 그룹에 대한 인증을 관리합니다.

2.2 Keystone 관계 및 정의

OpenStack 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 서비스가 설치되어 있는 호스트로 제한하여 관리할 수 있습니다.

 

2.3 Horizon과 Keystone의 Credentials 인증 타입 Flow

  1. 초기 설정 및 로그인 화면 호출을 진행합니다.
  2. 로그인 화면이 정상적으로 호출되었다면, 로그인 화면을 확인할 수 있습니다.
  3. 로그인 버튼을 클릭시, 아이디와 비밀번호 등에 대해서 입력 여부를 확인합니다.
    • 실패시 2번으로 이동하며, 성공시에는 4번으로 이동합니다.
  4. 입력된 값(아이디와 비밀번호 등) 및 인증 타입 등을 활용하여 사용자 인증 여부를 진행합니다.
    • 실패시 2번으로 이동하며, 성공시에는 5번으로 이동합니다.
  5. 인증 성공시 Token이 발급됩니다.
    • Token에는 서비스에 접근할 수 있는 범위(scoped)가 담겨있습니다.
    • Token 범위로 지정되는 정보는 아래와 같습니다.
      • Project
      • Domain
      • 배포시스템
  6. Session에 영역(region, region_name)을 저장합니다.
  7. 발급된 Token이 정상적인 토큰인지 인증을 진행합니다.
    • 실패시 2번으로 이동하며, 성공시에는 8번으로 이동합니다.
  8. 정상정인 Token이면, Default로 지정된 화면을 호출합니다.

 

 

 

참조

  • https://www.openstack.org/software/
  • https://github.com/openstack/horizon
  • https://github.com/openstack/keystone
반응형

'Cloud & DevOps > 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
'Cloud & DevOps/OpenStack' 카테고리의 다른 글
  • [OpenStack] OpenStack 서비스간 인증 및 권한 프로세스, 그리고 X-Auth-Token과 X-Subject-Token은 무엇인가?
  • [Openstack] Openstack Horizon Frontend 개발 - AngularJS
  • [오픈스택을 다루는 기술] 클라우드 네트워크 상식
  • [오픈스택을 다루는 기술] 오픈스택과 아키텍처
Jo__oD
Jo__oD
[N개의 취미중 1개] Playground
  • Jo__oD
    JUST
    Jo__oD
  • 전체
    오늘
    어제
    • 분류 전체보기 N
      • Framework & Library
        • React
        • Next.js
        • Spring & Spring Boot
      • Dev & Lenguage
        • JavaScript
        • JAVA
        • 백엔드 & 프론트엔드 개발
      • Cloud & DevOps
        • OpenStack
      • Knowledge N
        • 운영체제(OS)
        • 네트워크(Network) N
        • 데이터베이스(DB)
        • 자료구조 & 알고리즘
        • 디자인 패턴
      • 운영
        • Linux
        • Windows
        • Docker
      • 기타
        • HTTP & 인증체계
        • Raspberry Pi
      • Error
  • 블로그 메뉴

    • 홈
    • 태그
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    도서
    VMware 생성
    OpenStack
    ip할당 설정
    네트워크 분할
    http
    가상 머신 Ubuntu 생성
    Keystone
    가상 머신 생성
    java
    가상 머신 Ubuntu
    http 개념
    가상 머신
    raspberry pi
    지식채우기
    가상머신
    가상 머신 서버 생성
    오픈스택을 다루는 기술
    ip자동할당
    VMware Ubuntu 생성
  • 최근 댓글

  • 최근 글

  • 160x600
  • hELLO· Designed By정상우.v4.10.3
Jo__oD
[OpenStack] Authentication & Authorization - OpenStack Keystone과 Horizon 구성요소 정리 및 Login 인증 Flow
상단으로

티스토리툴바