keystoneauth 플러그인 옵션

Jmnote (토론 | 기여)님의 2024년 6월 23일 (일) 15:11 판 (→‎v3oidcdeviceauthz)

1 개요

Plugin Options
플러그인 옵션

https://docs.openstack.org/keystoneauth/latest/plugin-options.html

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


2 설정 파일을 통한 플러그인 사용

설정 파일을 통해 플러그인을 사용할 때 플러그인 이름을 auth_type으로 정의합니다. 그런 다음, 플러그인의 옵션을 설정에 유효하도록 하이픈(-)을 언더스코어(_)로 바꾸어 지정합니다.

예를 들어, 설정 파일에서 password 플러그인을 사용하려면 다음과 같이 지정합니다:

[section]
auth_url = http://keystone.example.com:5000/
auth_type = password
username = myuser
password = mypassword
project_name = myproject
default_domain_name = mydomain

3 CLI를 통한 플러그인 사용

os-client-config 또는 shade를 통해 CLI에서 인증 플러그인을 사용할 때는 환경설정에서 하이픈(-)을 언더스코어(_)로 바꾼 후, 매개변수 이름 앞에 OS_를 붙이는 패턴을 사용합니다.

예를 들어, 환경변수를 통해 password 플러그인을 사용하려면 다음과 같이 지정합니다:

export OS_AUTH_TYPE=password
export OS_AUTH_URL=http://keystone.example.com:5000/
export OS_USERNAME=myuser
export OS_PASSWORD=mypassword
export OS_PROJECT_NAME=myproject
export OS_DEFAULT_DOMAIN_NAME=mydomain

CLI 매개변수를 통해 지정된 작업은 환경 매개변수를 오버라이드합니다. 이러한 매개변수는 --os- 패턴과 매개변수 이름을 사용하여 지정됩니다. password 예제를 다시 사용하면 다음과 같습니다:

openstack --os-auth-type password \
          --os-auth-url http://keystone.example.com:5000/ \
          --os-username myuser \
          --os-password mypassword \
          --os-project-name myproject \
          --os-default-domain-name mydomain \
          operation

4 추가 로더

설정과 CLI 로더는 흔하게 사용되지만, 비슷한 개념이 다른 상황에서도 발견될 수 있습니다. 예를 들어, os-client-config에서는 clouds.yaml 파일에 인증 및 기타 클라우드 매개변수를 지정합니다.

이러한 로더는 동일한 플러그인 옵션을 사용하지만 각기 다른 메커니즘을 통해 동작합니다. os-client-config에서의 password 플러그인은 다음과 같습니다:

clouds:
  mycloud:
    auth_type: password
    auth:
      auth_url: http://keystone.example.com:5000/
      auth_type: password
      username: myuser
      password: mypassword
      project_name: myproject
      default_domain_name: mydomain

그러나 다른 서비스는 로더를 자체적으로 구현할 수 있으며, 해당 서비스의 관련 문서를 참조해야 합니다. 동일한 인증 옵션은 사용가능할 것입니다.

5 사용가능한 플러그인

다음은 포함된 모든 플러그인과 그 옵션의 목록입니다. 플러그인은 알파벳순으로 나열되어 있으며 우선순위와는 무관합니다.

5.1 admin_token

기존 토큰과 알려진 엔드포인트를 사용하여 요청을 수행합니다.

이 플러그인은 주로 개발 또는 identity 서비스 관리자 토큰을 사용하는 경우에 유용합니다. 이 토큰은 직접 사용되기 때문에 서비스 카탈로그를 가져오거나 스코프 정보를 결정할 수 없으므로, 이 스코프 정보를 기대하는 클라이언트에서는 사용할 수 없습니다.

서비스 카탈로그가 없기 때문에 초기화 시 제공된 엔드포인트가 수행되는 모든 작업에 사용되며, 실제 서비스에 대한 전체 기본 URL이어야 합니다.


  • endpoint: 항상 사용될 엔드포인트
  • token: 항상 사용될 토큰

5.2 http_basic

HTTP 기본 인증을 사용하여 요청을 수행합니다.

이 방법은 독립실행 모드로 배포된 서비스의 클라이언트를 인스턴스화하는 데 사용할 수 있습니다.

서비스 카탈로그를 가져오거나 스코프 정보를 결정할 수 없으므로 이러한 스코프 정보를 사용하려는 클라이언트에서는 사용할 수 없습니다.


  • username: 사용자명
  • password: 사용자의 패스워드
  • endpoint: 항상 사용될 엔드포인트

5.3 none

요청을 수행에 토큰을 사용하지 않습니다.

이 방법은 무인증/독립실행 모드로 배포된 서비스의 클라이언트를 인스턴스화하는 데 사용할 수 있습니다.

서비스 카탈로그를 가져오거나 스코프 정보를 결정할 수 없으므로 이러한 스코프 정보를 사용하려는 클라이언트에서는 사용할 수 없습니다.


  • endpoint: 항상 사용될 엔드포인트

5.4 password

사용자명과 패스워드를 통해 인증합니다.

내장된 사용자명과 패스워드를 사용하여 identity 서비스에 인증합니다. 이는 표준적이고 가장 일반적인 인증 방식입니다.

이 일반 플러그인은 버전에 독립적이며 사용 전에 사용가능한 버전을 발견합니다. 이는 작업할 버전이 없는 URL을 제공받는 것을 의미합니다.


  • auth-url: 인증 URL
  • system-scope: 시스템 작업에 대한 스코프
  • domain-id: 스코프로 지정할 도메인 ID
  • domain-name: 스코프로 지정할 도메인 이름
  • project-id: 스코프로 지정할 프로젝트 ID
  • project-name: 스코프로 지정할 프로젝트 이름
  • project-domain-id: 프로젝트를 포함하는 도메인 ID
  • project-domain-name: 프로젝트를 포함하는 도메인 이름
  • trust-id: 수탁자로 이용할 트러스트의 ID
  • default-domain-id: v3 및 v2 매개변수에 사용할 선택적 도메인 ID. v3에서는 사용자와 프로젝트 도메인에 모두 사용되며 v2 인증에서는 무시됩니다.
  • default-domain-name: v3 및 v2 매개변수에 사용할 선택적 도메인 이름. v3에서는 사용자와 프로젝트 도메인에 모두 사용되며 v2 인증에서는 무시됩니다.
  • user-id: 사용자 ID
  • username: 사용자명
  • user-domain-id: 사용자의 도메인 ID
  • user-domain-name: 사용자의 도메인 이름
  • password: 사용자의 패스워드

5.5 token

기존 토큰을 다른 대상으로 다시 스코프 지정(rescope)합니다.

이 플러그인은 Identity 서비스의 리스코프 메커니즘을 사용하여 기존 토큰을 기반으로 새 토큰을 가져옵니다. 인증 플러그인이 서비스 카탈로그 및 스코프 정보를 필요로 하기 때문에 이미 보유한 토큰을 검증하고 재사용하는 것보다 기존 토큰을 기반으로 새 토큰을 가져오는 것이 종종 더 쉽습니다.

이 플러그인은 일반 플러그인으로서, Identity 버전에 독립적이며 사용 전에 사용가능한 버전을 발견합니다. 따라서 작동하려면 버전이 없는 URL을 제공받아야 합니다.


  • auth-url: 인증 URL
  • system-scope: 시스템 작업에 대한 스코프
  • domain-id: 스코프로 지정할 도메인 ID
  • domain-name: 스코프로 지정할 도메인 이름
  • project-id: 스코프로 지정할 프로젝트 ID
  • project-name: 스코프로 지정할 프로젝트 이름
  • project-domain-id: 프로젝트를 포함하는 도메인 ID
  • project-domain-name: 프로젝트를 포함하는 도메인 이름
  • trust-id: 수탁자로 이용할 트러스트의 ID
  • default-domain-id: v3 및 v2 매개변수에 사용할 선택적 도메인 ID. v3에서는 사용자와 프로젝트 도메인에 모두 사용되며 v2 인증에서는 무시됩니다.
  • default-domain-name: v3 및 v2 매개변수에 사용할 선택적 도메인 이름. v3에서는 사용자와 프로젝트 도메인에 모두 사용되며 v2 인증에서는 무시됩니다.
  • token: 인증할 토큰

5.6 v2password

  • auth-url: 인증 URL
  • tenant-id: 테넌트 ID
  • tenant-name: 테넌트 이름
  • trust-id: 수탁자로 이용할 트러스트의 ID
  • username: 로그인할 사용자명
  • user-id: 로그인할 사용자 ID
  • password: 사용할 패스워드

5.7 v2token

  • auth-url: 인증 URL
  • tenant-id: 테넌트 ID
  • tenant-name: 테넌트 이름
  • trust-id: 수탁자로 이용할 트러스트의 ID
  • token: 토큰

5.8 v3adfspassword

  • auth-url: 인증 URL
  • system-scope: 시스템 작업에 대한 스코프
  • domain-id: 스코프로 지정할 도메인 ID
  • domain-name: 스코프로 지정할 도메인 이름
  • project-id: 스코프로 지정할 프로젝트 ID
  • project-name: 스코프로 지정할 프로젝트 이름
  • project-domain-id: 프로젝트를 포함하는 도메인 ID
  • project-domain-name: 프로젝트를 포함하는 도메인 이름
  • trust-id: 수탁자로 이용할 트러스트의 ID
  • identity-provider: Identity 제공자의 이름
  • protocol: 페더레이션 플러그인용 프로토콜
  • identity-provider-url: SAML 인증 요청을 보낼, Identity 제공자 URL
  • service-provider-endpoint: 서비스 제공자의 엔드포인트
  • service-provider-entity-id: 서비스 제공자의 SAML 엔티티 ID
  • username: 사용자명
  • password: 패스워드

5.9 v3applicationcredential

  • auth-url: 인증 URL
  • system-scope: 시스템 작업에 대한 스코프
  • domain-id: 스코프로 지정할 도메인 ID
  • domain-name: 스코프로 지정할 도메인 이름
  • project-id: 스코프로 지정할 프로젝트 ID
  • project-name: 스코프로 지정할 프로젝트 이름
  • project-domain-id: 프로젝트를 포함하는 도메인 ID
  • project-domain-name: 프로젝트를 포함하는 도메인 이름
  • trust-id: 수탁자로 이용할 트러스트의 ID
  • user-id: 사용자 ID
  • username: 사용자명
  • user-domain-id: 사용자의 도메인 ID
  • user-domain-name: 사용자의 도메인 이름
  • application_credential_secret: 애플리케이션 자격증명 인증 시크릿
  • application_credential_id: 애플리케이션 자격증명 ID
  • application_credential_name: 애플리케이션 자격증명 이름

5.10 v3fedkerb

  • auth-url: 인증 URL
  • system-scope: 시스템 작업에 대한 스코프
  • domain-id: 스코프로 지정할 도메인 ID
  • domain-name: 스코프로 지정할 도메인 이름
  • project-id: 스코프로 지정할 프로젝트 ID
  • project-name: 스코프로 지정할 프로젝트 이름
  • project-domain-id: 프로젝트를 포함하는 도메인 ID
  • project-domain-name: 프로젝트를 포함하는 도메인 이름
  • trust-id: 수탁자로 이용할 트러스트의 ID
  • identity-provider: Identity 제공자의 이름
  • protocol: 페더레이션 플러그인용 프로토콜
  • mutual-auth: Kerberos 상호 인증 설정

5.11 v3kerberos

  • auth-url: 인증 URL
  • system-scope: 시스템 작업에 대한 스코프
  • domain-id: 스코프로 지정할 도메인 ID
  • domain-name: 스코프로 지정할 도메인 이름
  • project-id: 스코프로 지정할 프로젝트 ID
  • project-name: 스코프로 지정할 프로젝트 이름
  • project-domain-id: 프로젝트를 포함하는 도메인 ID
  • project-domain-name: 프로젝트를 포함하는 도메인 이름
  • trust-id: 수탁자로 이용할 트러스트의 ID
  • mutual-auth: Kerberos 상호 인증 설정

5.12 v3multifactor

  • auth-url: 인증 URL
  • system-scope: 시스템 작업에 대한 스코프
  • domain-id: 스코프로 지정할 도메인 ID
  • domain-name: 스코프로 지정할 도메인 이름
  • project-id: 스코프로 지정할 프로젝트 ID
  • project-name: 스코프로 지정할 프로젝트 이름
  • project-domain-id: 프로젝트를 포함하는 도메인 ID
  • project-domain-name: 프로젝트를 포함하는 도메인 이름
  • trust-id: 수탁자로 이용할 트러스트의 ID
  • auth_methods: 인증할 방법

5.13 v3oauth1

  • auth-url: 인증 URL
  • consumer-key: OAuth 컨슈머 ID/키
  • consumer-secret: OAuth 컨슈머 시크릿
  • access-key: OAuth 액세스 키
  • access-secret: OAuth 액세스 시크릿

5.14 v3oauth2clientcredential

  • auth-url: 인증 URL
  • system-scope: 시스템 작업에 대한 스코프
  • domain-id: 스코프로 지정할 도메인 ID
  • domain-name: 스코프로 지정할 도메인 이름
  • project-id: 스코프로 지정할 프로젝트 ID
  • project-name: 스코프로 지정할 프로젝트 이름
  • project-domain-id: 프로젝트를 포함하는 도메인 ID
  • project-domain-name: 프로젝트를 포함하는 도메인 이름
  • trust-id: 수탁자로 이용할 트러스트의 ID
  • oauth2_endpoint: OAuth2.0용 엔드포인트
  • oauth2_client_id: OAuth2.0용 클라이언트 ID
  • oauth2_client_secret: OAuth2.0용 클라이언트 시크릿

5.15 v3oauth2mtlsclientcredential

  • auth-url: 인증 URL
  • system-scope: 시스템 작업에 대한 스코프
  • domain-id: 스코프로 지정할 도메인 ID
  • domain-name: 스코프로 지정할 도메인 이름
  • project-id: 스코프로 지정할 프로젝트 ID
  • project-name: 스코프로 지정할 프로젝트 이름
  • project-domain-id: 프로젝트를 포함하는 도메인 ID
  • project-domain-name: 프로젝트를 포함하는 도메인 이름
  • trust-id: 수탁자로 이용할 트러스트의 ID
  • oauth2-endpoint: OAuth2.0 상호-TLS 인가용 엔드포인트
  • oauth2-client-id: OAuth2.0 상호-TLS 인가용 클라이언트 자격증명 ID

5.16 v3oidcaccesstoken

  • auth-url: 인증 URL
  • system-scope: 시스템 작업에 대한 스코프
  • domain-id: 스코프로 지정할 도메인 ID
  • domain-name: 스코프로 지정할 도메인 이름
  • project-id: 스코프로 지정할 프로젝트 ID
  • project-name: 스코프로 지정할 프로젝트 이름
  • project-domain-id: 프로젝트를 포함하는 도메인 ID
  • project-domain-name: 프로젝트를 포함하는 도메인 이름
  • trust-id: 수탁자로 이용할 트러스트의 ID
  • identity-provider: Identity 제공자의 이름
  • protocol: 페더레이션 플러그인용 프로토콜
  • access-token: OAuth 2.0 액세스 토큰

5.17 v3oidcauthcode

  • auth-url: 인증 URL
  • system-scope: 시스템 작업에 대한 스코프
  • domain-id: 스코프로 지정할 도메인 ID
  • domain-name: 스코프로 지정할 도메인 이름
  • project-id: 스코프로 지정할 프로젝트 ID
  • project-name: 스코프로 지정할 프로젝트 이름
  • project-domain-id: 프로젝트를 포함하는 도메인 ID
  • project-domain-name: 프로젝트를 포함하는 도메인 이름
  • trust-id: 수탁자로 이용할 트러스트의 ID
  • identity-provider: Identity 제공자의 이름
  • protocol: 페더레이션 플러그인용 프로토콜
  • client-id: OAuth 2.0 클라이언트 ID
  • client-secret: OAuth 2.0 클라이언트 시크릿
  • openid-scope: 인가 서버에서 요청한 OpenID Connect 스코프입니다. 참고로 OpenID Connect 사양에는 "openid"가 항상 지정되어야 한다고 명시되어 있습니다.
  • access-token-endpoint: OpenID Connect 제공자 토큰 엔드포인트. 참고로 발견 문서가 전달되는 경우 이 옵션은 발견 문서에서 서버가 제공하는 엔드포인트를 오버라이드합니다.
  • discovery-endpoint: OpenID Connect 발견 문서 URL. 발견 문서는 액세스 토큰 엔드포인트와 인증 엔드포인트의 값을 얻는 데 사용됩니다. 이 URL은 https://idp.example.org/.well-known/openid-configuration 와 유사한 형식입니다.
  • access-token-type: OAuth 2.0 인가 서버 자체검사 토큰 유형으로, 토큰 자체검사를 처리할 때 사용할 토큰 유형을 결정하는 데 사용됩니다. 유효한 값은 "access_token" 또는 "id_token"입니다.
  • redirect-uri: OpenID Connect 리다이렉트 URL
  • code: OAuth 2.0 인가 코드

5.18 v3oidcclientcredentials

  • auth-url: 인증 URL
  • system-scope: 시스템 작업에 대한 스코프
  • domain-id: 스코프로 지정할 도메인 ID
  • domain-name: 스코프로 지정할 도메인 이름
  • project-id: 스코프로 지정할 프로젝트 ID
  • project-name: 스코프로 지정할 프로젝트 이름
  • project-domain-id: 프로젝트를 포함하는 도메인 ID
  • project-domain-name: 프로젝트를 포함하는 도메인 이름
  • trust-id: 수탁자로 이용할 트러스트의 ID
  • identity-provider: Identity 제공자의 이름
  • protocol: 페더레이션 플러그인용 프로토콜
  • client-id: OAuth 2.0 클라이언트 ID
  • client-secret: OAuth 2.0 클라이언트 시크릿
  • openid-scope: 인가 서버에서 요청한 OpenID Connect 스코프입니다. 참고로 OpenID Connect 사양에는 "openid"가 항상 지정되어야 한다고 명시되어 있습니다.
  • access-token-endpoint: OpenID Connect 제공자 토큰 엔드포인트. 참고로 발견 문서가 전달되는 경우 이 옵션은 발견 문서에서 서버가 제공하는 엔드포인트를 오버라이드합니다.
  • discovery-endpoint: OpenID Connect 발견 문서 URL. 발견 문서는 액세스 토큰 엔드포인트와 인증 엔드포인트의 값을 얻는 데 사용됩니다. 이 URL은 https://idp.example.org/.well-known/openid-configuration 와 유사한 형식입니다.
  • access-token-type: OAuth 2.0 인가 서버 자체검사 토큰 유형으로, 토큰 자체검사를 처리할 때 사용할 토큰 유형을 결정하는 데 사용됩니다. 유효한 값은 "access_token" 또는 "id_token"입니다.

5.19 v3oidcdeviceauthz

  • auth-url: 인증 URL
  • system-scope: 시스템 작업에 대한 스코프
  • domain-id: 스코프로 지정할 도메인 ID
  • domain-name: 스코프로 지정할 도메인 이름
  • project-id: 스코프로 지정할 프로젝트 ID
  • project-name: 스코프로 지정할 프로젝트 이름
  • project-domain-id: 프로젝트를 포함하는 도메인 ID
  • project-domain-name: 프로젝트를 포함하는 도메인 이름
  • trust-id: 수탁자로 이용할 트러스트의 ID
  • identity-provider: Identity 제공자의 이름
  • protocol: 페더레이션 플러그인용 프로토콜
  • client-id: OAuth 2.0 클라이언트 ID
  • client-secret: OAuth 2.0 클라이언트 시크릿
  • openid-scope: 인가 서버에서 요청한 OpenID Connect 스코프입니다. 참고로 OpenID Connect 사양에는 "openid"가 항상 지정되어야 한다고 명시되어 있습니다.
  • access-token-endpoint: OpenID Connect 제공자 토큰 엔드포인트. 참고로 발견 문서가 전달되는 경우 이 옵션은 발견 문서에서 서버가 제공하는 엔드포인트를 오버라이드합니다.
  • discovery-endpoint: OpenID Connect 발견 문서 URL. 발견 문서는 액세스 토큰 엔드포인트와 인증 엔드포인트의 값을 얻는 데 사용됩니다. 이 URL은 https://idp.example.org/.well-known/openid-configuration 와 유사한 형식입니다.
  • device-authorization-endpoint: OAuth 2.0 디바이스 인가 엔트포인트. 참고로 발견 문서가 전달되는 경우 이 옵션은 발견 문서에서 서버가 제공하는 엔드포인트를 오버라이드합니다.
  • code-challenge-method: PKCE 챌린지 메소드 ( RFC 7636 )

5.20 v3oidcpassword

5.21 v3password

  • auth-url: 인증 URL
  • system-scope: 시스템 작업에 대한 스코프
  • domain-id: 스코프로 지정할 도메인 ID
  • domain-name: 스코프로 지정할 도메인 이름
  • project-id: 스코프로 지정할 프로젝트 ID
  • project-name: 스코프로 지정할 프로젝트 이름
  • project-domain-id: 프로젝트를 포함하는 도메인 ID
  • project-domain-name: 프로젝트를 포함하는 도메인 이름
  • trust-id: 수탁자로 이용할 트러스트의 ID
  • user-id: 사용자 ID
  • username: 사용자명
  • user-domain-id: 사용자의 도메인 ID
  • user-domain-name: 사용자의 도메인 이름
  • password: 사용자의 패스워드

5.22 v3samlpassword

  • auth-url: 인증 URL
  • system-scope: 시스템 작업에 대한 스코프
  • domain-id: 스코프로 지정할 도메인 ID
  • domain-name: 스코프로 지정할 도메인 이름
  • project-id: 스코프로 지정할 프로젝트 ID
  • project-name: 스코프로 지정할 프로젝트 이름
  • project-domain-id: 프로젝트를 포함하는 도메인 ID
  • project-domain-name: 프로젝트를 포함하는 도메인 이름
  • trust-id: 수탁자로 이용할 트러스트의 ID
  • identity-provider: Identity 제공자의 이름
  • protocol: 페더레이션 플러그인용 프로토콜
  • identity-provider-url: SAML2 인증 요청을 보낼, Identity 제공자 URL
  • username: 사용자명
  • password: 패스워드

5.23 v3token

  • auth-url: 인증 URL
  • system-scope: 시스템 작업에 대한 스코프
  • domain-id: 스코프로 지정할 도메인 ID
  • domain-name: 스코프로 지정할 도메인 이름
  • project-id: 스코프로 지정할 프로젝트 ID
  • project-name: 스코프로 지정할 프로젝트 이름
  • project-domain-id: 프로젝트를 포함하는 도메인 ID
  • project-domain-name: 프로젝트를 포함하는 도메인 이름
  • trust-id: 수탁자로 이용할 트러스트의 ID
  • token: 인증할 토큰

5.24 v3tokenlessauth

  • auth-url: 인증 URL
  • domain-id: 스코프로 지정할 도메인 ID
  • domain-name: 스코프로 지정할 도메인 이름
  • project-id: 스코프로 지정할 프로젝트 ID
  • project-name: 스코프로 지정할 프로젝트 이름
  • project-domain-id: 프로젝트를 포함하는 도메인 ID
  • project-domain-name: 프로젝트를 포함하는 도메인 이름

5.25 v3totp

  • auth-url: 인증 URL
  • system-scope: 시스템 작업에 대한 스코프
  • domain-id: 스코프로 지정할 도메인 ID
  • domain-name: 스코프로 지정할 도메인 이름
  • project-id: 스코프로 지정할 프로젝트 ID
  • project-name: 스코프로 지정할 프로젝트 이름
  • project-domain-id: 프로젝트를 포함하는 도메인 ID
  • project-domain-name: 프로젝트를 포함하는 도메인 이름
  • trust-id: 수탁자로 이용할 트러스트의 ID
  • user-id: 사용자 ID
  • username: 사용자명
  • user-domain-id: 사용자의 도메인 ID
  • user-domain-name: 사용자의 도메인 이름
  • passcode: 사용자의 TOTP 패스코드
문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}