"OpenStackClient 인증"의 두 판 사이의 차이

39번째 줄: 39번째 줄:


==Identity 서버 API v3를 사용한 인증==
==Identity 서버 API v3를 사용한 인증==
Identity Server API v3를 사용하여 인증하려면 <code>OS_IDENTITY_API_VERSION</code> 환경변수 또는 <code>--os-identity-api-version</code> 옵션을 기본값 <code>2.0</code> 대신 <code>3</code>으로 변경해야 합니다. 마찬가지로 <code>OS_AUTH_URL</code> 또는 <code>--os-auth-url</code>도 업데이트해야 합니다.
<syntaxhighlight lang='console'>
$ export OS_IDENTITY_API_VERSION=3  # 기본값은 2.0
$ export OS_AUTH_URL=http://localhost:5000/v3
</syntaxhighlight>
Identity API v3 인증은 조금 더 복잡하기 때문에, 추가적인 옵션을 설정해야 할 수도 있습니다. 이 옵션들은 명령줄 옵션이나 환경변수로 설정할 수 있습니다. 일반적인 경우에는 사용자 이름과 패스워드, 프로젝트 이름을 제공하는 것입니다. 이전 버전인 2.0에서는 이것으로 충분했지만, Identity API v3에는 Domain 컴포넌트가 있기 때문에 사용자와 프로젝트가 존재하는 도메인을 클라이언트에게 알려주어야 합니다.
사용자 이름과 패스워드를 사용하여 인증하는 경우, 소유 도메인 이름 또는 ID를 지정해야 합니다.
* <code>--os-user-domain-name</code> 또는 <code>OS_USER_DOMAIN_NAME</code>
* <code>--os-user-domain-id</code> 또는 <code>OS_USER_DOMAIN_ID</code>
프로젝트 이름을 인가 스코프로 사용하는 경우, 소유 도메인 이름 또는 ID를 지정해야 합니다.
* <code>--os-project-domain-name</code> 또는 <code>OS_PROJECT_DOMAIN_NAME</code>
* <code>--os-project-domain-id</code> 또는 <code>OS_PROJECT_DOMAIN_ID</code>
도메인을 인증 스코프로 사용하는 경우, 도메인 이름 또는 ID를 설정합니다.
* <code>--os-domain-name</code> 또는 <code>OS_DOMAIN_NAME</code>
* <code>--os-domain-id</code> 또는 <code>OS_DOMAIN_ID</code>
사용자와 프로젝트가 동일한 도메인을 공유하는 경우, <code>--os-default-domain</code> 또는 <code>OS_DEFAULT_DOMAIN</code>을 도메인 ID로 설정하는 것으로 충분합니다.
따라서 최소한의 환경변수 설정은 다음과 같습니다:
<syntaxhighlight lang='console'>
$ export OS_IDENTITY_API_VERSION=3
$ export OS_AUTH_URL=http://localhost:5000/v3
$ export OS_DEFAULT_DOMAIN=default
$ export OS_USERNAME=admin
$ export OS_PASSWORD=secret
$ export OS_PROJECT_NAME=admin
</syntaxhighlight>
==연합 사용자 지원==
==연합 사용자 지원==
==예시==
==예시==

2024년 7월 2일 (화) 22:54 판

1 개요

Crystal Clear action info.png 작성 중인 문서입니다.
Authentication
인증

https://docs.openstack.org/python-openstackclient/2024.1/cli/authentication.html


OpenStackClient는 python-keystoneclient 인증 플러그인을 활용하여 다양한 인증 방법을 지원합니다.

2 인증 과정

사용자는 여러 인증 자격증명 옵션을 제공합니다. 인증 유형(--os-auth-type)이 제공되지 않은 경우, 인증 옵션을 검사하여 기본 유형 중 하나를 사용할 수 있는지 확인합니다. 일치하는 유형이 없으면 오류가 보고되고 OSC는 종료됩니다.

Identity 서비스에 대한 인증 호출은 아직 발생하지 않았다는 점에 유의하십시오. 불필요한 서버 쿼리 수를 줄이기 위해 마지막 가능한 순간까지 인증 호출이 연기됩니다. 예를 들어, 추가 처리 중에 잘못된 명령어가 감지될 때와 같은 경우입니다.

3 인증 플러그인

Keystone 클라이언트 라이브러리는 기본 세트의 플러그인을 구현합니다. 추가 플러그인은 Keystone 프로젝트나 다른 소스에서 제공될 수 있습니다.

항상 사용가능한 인증 유형에는 크게 세 가지가 있습니다:

  • 패스워드: 프로젝트, 사용자명, 패스워드를 사용하여 사용자를 식별합니다. 선택적으로 도메인도 포함될 수 있습니다. 이는 가장 일반적인 유형이며, 사용자명이 제공될 때 기본값으로 설정됩니다. Identity 서비스에 대한 인증 URL도 필요합니다. [필수: --os-auth-url, --os-project-name, --os-username; 선택: --os-password]
  • 토큰: 일반적인 토큰 인증과 약간 다릅니다. 토큰과 인증 URL이 제공되면 플러그인이 새 토큰을 가져옵니다. [필수: --os-auth-url, --os-token]
  • 기타: SAML, Kerberos, OAuth1.0과 같은 기타 인증 플러그인도 개발 중이며 지원됩니다. 이러한 플러그인을 사용하려면 --os-auth-type 옵션을 제공하여 선택해야 합니다.

4 세부 과정

OpenStackClient에서 인증 과정은 모두 ClientManager 객체에 의해 처리됩니다.

  • api.auth를 가져올 때:
    • Keystone 인증 플러그인의 목록을 keystoneclient.auth.plugin 엔트리 포인트에서 가져옵니다.
    • 플러그인에서 인증 옵션 목록을 작성합니다.
  • 명령줄 인수가 처리되고 --os-cloud가 제공된 경우 clouds.yaml에서 설정이 로드됩니다.
  • ClientManager가 생성되어 명령줄, 환경변수 및/또는 clouds.yaml에서 제공된 옵션 세트가 공급됩니다:
    • --os-auth-type이 제공되고 유효한 사용가능한 플러그인인 경우, 그것이 사용됩니다.
    • --os-auth-type이 제공되지 않은 경우, 기존 옵션에 따라 인증 플러그인이 선택됩니다. 이는 단축 평가(short-circuit evaluation)로, 첫 번째 매치 항목이 선택됩니다.
      • --os-username이 제공된 경우 password가 선택됩니다.
      • --os-token이 제공된 경우 token이 선택됩니다.
      • 지금까지 선택이 이루어지지 않은 경우 오류로 종료됩니다.
    • 선택된 플러그인 클래스를 로드합니다.
  • 인증이 필요한 작업이 시도될 때 ClientManager는 실제 초기 요청을 Identity 서비스에 보냅니다.
    • --os-auth-url이 Token/Endpoint 유형을 제외한 다른 유형에 대해 제공되지 않은 경우, 오류로 종료됩니다.

5 Identity 서버 API v3를 사용한 인증

Identity Server API v3를 사용하여 인증하려면 OS_IDENTITY_API_VERSION 환경변수 또는 --os-identity-api-version 옵션을 기본값 2.0 대신 3으로 변경해야 합니다. 마찬가지로 OS_AUTH_URL 또는 --os-auth-url도 업데이트해야 합니다.

$ export OS_IDENTITY_API_VERSION=3  # 기본값은 2.0
$ export OS_AUTH_URL=http://localhost:5000/v3

Identity API v3 인증은 조금 더 복잡하기 때문에, 추가적인 옵션을 설정해야 할 수도 있습니다. 이 옵션들은 명령줄 옵션이나 환경변수로 설정할 수 있습니다. 일반적인 경우에는 사용자 이름과 패스워드, 프로젝트 이름을 제공하는 것입니다. 이전 버전인 2.0에서는 이것으로 충분했지만, Identity API v3에는 Domain 컴포넌트가 있기 때문에 사용자와 프로젝트가 존재하는 도메인을 클라이언트에게 알려주어야 합니다.

사용자 이름과 패스워드를 사용하여 인증하는 경우, 소유 도메인 이름 또는 ID를 지정해야 합니다.

  • --os-user-domain-name 또는 OS_USER_DOMAIN_NAME
  • --os-user-domain-id 또는 OS_USER_DOMAIN_ID

프로젝트 이름을 인가 스코프로 사용하는 경우, 소유 도메인 이름 또는 ID를 지정해야 합니다.

  • --os-project-domain-name 또는 OS_PROJECT_DOMAIN_NAME
  • --os-project-domain-id 또는 OS_PROJECT_DOMAIN_ID

도메인을 인증 스코프로 사용하는 경우, 도메인 이름 또는 ID를 설정합니다.

  • --os-domain-name 또는 OS_DOMAIN_NAME
  • --os-domain-id 또는 OS_DOMAIN_ID

사용자와 프로젝트가 동일한 도메인을 공유하는 경우, --os-default-domain 또는 OS_DEFAULT_DOMAIN을 도메인 ID로 설정하는 것으로 충분합니다.

따라서 최소한의 환경변수 설정은 다음과 같습니다:

$ export OS_IDENTITY_API_VERSION=3
$ export OS_AUTH_URL=http://localhost:5000/v3
$ export OS_DEFAULT_DOMAIN=default
$ export OS_USERNAME=admin
$ export OS_PASSWORD=secret
$ export OS_PROJECT_NAME=admin

6 연합 사용자 지원

7 예시

7.1 v3password

7.2 v3applicationcredential

7.3 v3token

7.4 v3totp

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