Openstack

Openstack Keystone이란? (identity)

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

Overview

오늘은 openstack keystone에 대하여 공부해보려고 한다.

 

Keystone이란?

Keystone은 인증(Authentication) 및 인가(Authorization), Endpoint URL, 서비스 검색 메커니즘을 제공합니다. 

중앙 집중식 인증을 통해 자원을 안전하게 사용할 수 있도록 제공하는 서비스입니다.

Keystone 서비스는 인증, 인가 및 테넌트, 사용자, 역할을 생성합니다.


Keystone 구성요소

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

Keystone 관계 및 정의

 

Domain

Domain은 사용자 및 그룹, 프로젝트의 모음으로, 특정 조직을 격리할 수 있습니다.

  • Keystone에서는 'Default'라는 이름의 기본 도메인을 제공합니다.
  • 각 도메인은 특정 API 이름 속성이 존재하는 Namespace를 정의하며, Identity v3 API 속성의 고유성은 아래와 같습니다.
    • Domain Name: 모든 도메인에서 고유해야 합니다.
    • Role Name: 도메인 내에서 고유해야 합니다.
    • User Name: 도메인 내에서 고유해야 합니다.
    • Project Name: 도메인 내에서 고유해야 합니다.
    • Group Name: 도메인 내에서 고유해야 합니다.
  • 도메인 관리자는 도메인에서 프로젝트 및 사용자, 그룹을 만들고 도메인의 사용자 및 그룹에 역할을 할당할 수 있습니다.
    • 도메인의 사용자는 적절한 할당이 부여된 경우, 다른 도메인 자원에 접근이 가능합니다.

 

Project(Tenant)

  • Project(Tenant)는 Tenant(Identity v2)라는 용어로 불렸지만, 개념적 표현보다는 직관적인 표현으로 표기하기 위해 Project(Identity v3)로 변경되었습니다.
  • Project란 OpenStack 서비스에서 리소스(e.g. 서버, 이미지 등 - 프로젝트 및 도메인에 데이터 제공)를 그룹화하고 격리(기본 소유권 단위)하기 위해 추상화되어 있으며, 프로젝트는 도메인에서 고유해야 합니다. 프로젝트의 도메인을 지정하지 않으면 기본 도메인(Default)에 추가됩니다.
    • Identity API v3.4 이후, 프로젝트 생성시 프로젝트 계층 구조(parent_id)를 생성할 수 있으며, 계층 구조의 모든 프로젝트는 동일한 도메인에서 소유해야 합니다.
    • Identity API v3.6 이후, 프로젝트는 OpenStack 리소스에 대한 컨테이너 역할을 하는 것 외에도 도메인 역할을 할 수 있습니다.
  • Keystone의 가장 근본적인 목적은 프로젝트의 Registry와 접근 가능 여부가 명확해야 합니다.
  • Project는 사용자 또는 사용자 그룹을 역할 할당 개념으로 사용하여, 프로젝트 리소스에 대한 접근 가능 권한을 부여할 수 있습니다. 권한이 부여된 사용자는 특정 역할에 따라 접근 유형 및 기능이 결정됩니다.

 

User와 Group

  • User는 Openstack 서비스를 이용하는 사람 또는 서비스(e.g. Nova, Cinder 등)을 의미하며, User는 도메인 내에서 고유해야 합니다.
  • Group은 User 집합을 의미하며, Group은 도메인 내에서 고유해야합니다.

 

Role

  • User 및 Group에게 Role을 할당하여 프로젝트 리소스에 접근할 수 있는 집합을 의미하며, 역할은 User에게 발행된 Token에서 확인할 수 있습니다.

Token

  • Openstack API 및 리소스에 접근할 수 있는 영숫자 텍스트 문자열입니다.
  • 토큰은 언제든지 취소할 수 있으며, 한정된 기간 동안만 유효합니다.

 

Endpoint

  • User가 서비스를 이용하기 URL 정보(Openstack Client에서  Openstack Service 접근을 위한 정보)이며, 서비스는 하나 이상의 Endpoint를 가질 수 있습니다.
  • Endpoint 유형
public: 인터넷을 통해 사용자가 클라우드를 관리할 수 있습니다.
admin: 클라우드 인프라를 관리하는 운영자에게만 접근을 허용하여 관리할 수 있습니다.클라우드 환경을 관리하는 조직내부의 운영자들에게만 접근이 허용된다.
internal: OpenStack 서비스가 설치되어 있는 호스트로 제한하여 관리할 수 있습니다.

Horizon과 Keystone의 Credentials 인증 타입 Flow

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

참조

728x90
반응형