Cloud/OpenStack

[OpenStack] OpenStack 서비스간 인증 및 권한 프로세스, 그리고 X-Auth-Token과 X-Subject-Token은 무엇인가?

just-e 2021. 4. 29. 23:23

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

 

오늘의 블로그 내용은 OpenStack 서비스간 인증 및 권한 확인하는 프로세스에 대해서 작성할 예정입니다!

해당 내용은 회사 블로그를 작성하면서 함께 작성하게 된 내용입니다! :)

 

목차

1. X-Auth-Token과 X-Subject-Token은 무엇인가?

2. OpenStack 서비스간 인증 및 권한 프로세스


1. X-Auth-Token과 X-Subject-Token은 무엇인가?

 OpenStack 서비스간 인증 및 자원 요청자 권한 확인을 위해서는 X-Auth-Token과 X-Subject-Token에 대한 개념을 알아야 합니다!

X-Auth-Token - OpenStack 서비스(e.g. Nova, Glance 등)를 요청하기 위해 필요한 토큰 정보(e.g. 인스턴스 생성) Header 값입니다.
- 해당 서비스는 X-Auth-Token을 받은 후 Keystone 서비스에 해당 인증 토큰을 확인합니다.
- HTTP Header 값으로 OpenStack 서비스에게 전송합니다.
X-Subject-Token - Keystone에게 서비스 인증후 발급받게 되는 Header 값입니다. 
- 해당 Header 값을 활용하여 서비스를 요청하기 위해 사용됩니다.
- X-Subject-Token은 X-Auth-Token으로 변경되어 값을 전송합니다.

 

2. OpenStack 서비스간 인증 및 권한 프로세스

 OpenStack 서비스간 인증 및 요청자에 대한 권한 확인 프로세스에 대해 알아보겠습니다!

아래 프로세스는 사용자 인증 및 인스턴스 생성(+이미지 정보 요청)을 한다는 가정하에 작성된 프로세스입니다.

[그림 1] OpenStack 서비스 프로세스

  1. Horizon에서 Keystone에게 사용자 인증 정보를 통해 인증을 요청합니다.
  2. 사용자 인증이 성공하면 HTTP Header로 X-Subject-Token: Unscoped Token 형식으로 응답합니다.
  3. 2번에서 받은 Unscoped Token은 사용자의 권한 정보를 받기위해 Keystone에게 재요청합니다.
  4. 정상적인 사용자라면, HTTP Header로 X-Subject-Token: Scoped Token 형식으로 응답합니다.
  5. 사용자가 인스턴스 생성을 요청하여 Horizon에서 Nova로 생성 요청합니다. 이때 4번에서 발급받은 X-Subject-Token: Scoped Token을 X-Auth-Token 필드로 담아 Nova에게 전송합니다.
    • X-Subject-Token: Scoped Token -> X-Auth-Token: Scoped Token
  6. Nova에게 요청이 들어오면 Nova는 Keystone에게 Nova 인증 정보를 통해 인증을 요청합니다.
  7. 서비스 인증이 성공하면 HTTP Header로 X-Subject-Token: Scoped Token 형식으로 응답합니다.
  8. 응답을 받게 되면 Keystone에게 인스턴스 생성에 대한 권한 확인에 대해 요청합니다. 이때 필요한 HTTP Header 필드는 X-Auth-Token과 X-Subject-Token입니다.
    • X-Auth-Token: Scoped Token으로, 7번 Nova 서비스 인증 성공후 발급 받은 Token.
    • X-Subject-Token: Scoped Token으로, 5번 Horizon(사용자) 인증 성공후 발급 받은 Token.
  9. 8번에 대한 Token을 검증(요청한 사용자에 대해 인스턴스 생성이 가능한지 여부)하여 Boolean 값으로 응답받습니다.
  10. 인스턴스 생성을 위해 Glance에게 요청합니다. 이때 8번에서 사용한 HTTP Header인 X-Subject-Token을 함께 전송합니다.
  11. Glance에게 요청이 들어오면 Glance는 Keystone에게 Glance 인증 정보를 통해 인증을 요청합니다.
  12. 서비스 인증이 성공하면 HTTP Header로 X-Subject-Token: Scoped Token 형식으로 응답합니다.
  13. 응답을 받게 되면 Keystone에게 Nova가 Glance에게 요청한 기능(인스턴스 생성 관련)에 대해 인스턴스 생성을 요청한 사용자의 권한 확인에 대해 요청합니다. 이때 필요한 HTTP Header 필드는 X-Auth-Token과 X-Subject-Token입니다.
    • X-Auth-Token: Scoped Token으로, 12번 Glance 서비스 인증 성공후 발급 받은 Token.
    • X-Subject-Token: Scoped Token으로, 5번 Horizon(사용자) 인증 성공후 발급 받은 Token.
  14. 13번에 대한 Token을 검증(요청한 사용자에 대해 Glance가 실행하는 기능 사용 여부)하여 Boolean 값으로 응답받습니다.
  15. Glance는 Nova에게 Glance 관련 정보를 전송합니다.
  16. Nova는 인스턴스 생성 요청에 대한 상태를 전송합니다.

참조