Keystoneauth 세션 사용

1 개요

Using Sessions
세션 사용

https://docs.openstack.org/keystoneauth/latest/using-sessions.html

2 소개

keystoneauth1.session.Session 클래스는 다양한 서비스 간에 공통 인증 및 요청 파라미터를 공유하는 다양한 OpenStack 클라이언트에 통일된 인터페이스를 제공하기 위해 keystoneauth1에 도입되었습니다.

Session과 인증 플러그인을 사용하는 모델과 일반적인 용어는 requests 라이브러리에서 많은 영감을 받았습니다. 그러나 Session 클래스나 인증 플러그인이 requests 라이브러리의 개념에 직접적으로 의존하지 않기 때문에 직접적인 변환을 기대해서는 안 됩니다.

2.1 기능

  • 공통 클라이언트 인증
인증은 다양한 인증 플러그인 중 하나에 의해 처리되며, 이 인증 정보는 동일한 Session 객체를 사용하는 모든 서비스 간에 공유됩니다.
  • 보안 유지관리
보안 코드는 단일 장소에서 유지관리되며 모든 클라이언트 간에 재사용되므로 문제가 발생할 경우 단일 위치에서 수정할 수 있습니다.
  • 표준 서비스 및 버전 발견
클라이언트는 ID 토큰이나 기타 형태의 신원확인 자격증명에 대한 지식을 필요로 하지 않습니다. 서비스, 엔드포인트, 주요 버전 검색 및 마이크로 버전 지원 검색은 Session 및 플러그인에 의해 처리됩니다. 발견 정보는 메모리에 자동으로 캐시되므로 사용자는 과도한 발견 메타데이터 사용에 대해 걱정할 필요가 없습니다.
  • 안전한 HTTP 상호작용 로깅
클라이언트는 HTTP 상호작용의 로깅을 활성화할 수 있어야 하지만, 토큰이나 비밀 정보와 같은 일부 항목은 생략해야 합니다.

3 사용자용 세션

Session 객체는 OpenStack 클라우드 서비스에 대한 접점입니다. 이 객체는 인증 자격증명과 OpenStack과 통신하는 데 필요한 연결 정보를 저장하여 여러 서비스와 통신하는 데 재사용할 수 있습니다. 서비스 생성 시 이 Session 객체가 클라이언트에 전달되어 해당 정보를 사용할 수 있습니다.

세션은 필요할 때 인증을 수행합니다. 인증이 필요한 요청이 세션을 통해 전달되면 인증 플러그인은 유효한 토큰을 요청합니다. 유효한 토큰이 있으면 사용되고, 그렇지 않은 경우 인증 플러그인이 인증 서비스에 연락하여 새 토큰을 가져올 수 있습니다.

Session을 사용하는 keystoneclient 예제:

from keystoneauth1.identity import v3
from keystoneauth1 import session
from keystoneclient.v3 import client

auth = v3.Password(auth_url='https://my.keystone.com:5000/v3',
                   username='myuser',
                   password='mypassword',
                   project_name='proj',
                   user_domain_id='default',
                   project_domain_id='default')
sess = session.Session(auth=auth,
                       verify='/path/to/ca.cert')
ks = client.Client(session=sess)
users = ks.users.list()

다른 OpenStack 클라이언트 라이브러리도 이와 유사한 방식으로 세션 객체를 클라이언트 생성자에 전달하여 생성됩니다.

3.1 인증 플러그인 공유

세션은 하나의 인증 플러그인만 포함할 수 있습니다. 그러나 인증 플러그인이 그 세션에 구체적으로 묶여 있는 것은 아니므로, 기존 인증 플러그인을 재사용하여 새로운 세션을 만들 수 있습니다:

new_sess = session.Session(auth=sess.auth,
                           verify='/path/to/different-cas.cert')

이 경우, 인증 호출을 수행할 때 어떤 세션 객체가 사용될지 알 수 없으므로 명령은 어느 세션에서도 성공할 수 있어야 합니다.

인증 플러그인은 요청별로도 제공될 수 있습니다. 이는 하나의 세션이 여러 인증 자격증명을 다루는 상황에서 유용합니다:

sess.get('https://my.keystone.com:5000/v3',
         auth=my_auth_plugin)

인증 플러그인이 파라미터를 통해 제공되면 세션의 인증 플러그인을 무시하고 해당 플러그인이 우선 사용됩니다.

4 클라이언트 개발자용 세션

4.1 메이저 버전 발견과 마이크로버전 지원

4.2 인증

4.3 서비스 발견

4.4 어댑터 사용

4.5 엔드포인트 메타데이터

4.6 마이크로버전 요청

5 로깅

5.1 로거 사용

5.2 사용자 제공 로거

문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}