최신판 |
당신의 편집 |
3번째 줄: |
3번째 줄: |
| ;Authentication | | ;Authentication |
| ;인증 | | ;인증 |
| https://docs.openstack.org/python-openstackclient/2024.1/cli/authentication.html | | https://docs.openstack.org/python-openstackclient/latest/cli/authentication.html |
| ----
| | |
| OpenStackClient는 [[python-keystoneclient]] 인증 플러그인을 활용하여 다양한 인증 방법을 지원합니다. | | OpenStackClient는 [[python-keystoneclient]] 인증 플러그인을 활용하여 다양한 인증 방법을 지원합니다. |
|
| |
|
13번째 줄: |
13번째 줄: |
|
| |
|
| ==인증 플러그인== | | ==인증 플러그인== |
| Keystone 클라이언트 라이브러리는 기본 세트의 플러그인을 구현합니다. 추가 플러그인은 Keystone 프로젝트나 다른 소스에서 제공될 수 있습니다.
| |
|
| |
| 항상 사용가능한 인증 유형에는 크게 세 가지가 있습니다:
| |
| * '''패스워드''': 프로젝트, 사용자명, 패스워드를 사용하여 사용자를 식별합니다. 선택적으로 도메인도 포함될 수 있습니다. 이는 가장 일반적인 유형이며, 사용자명이 제공될 때 기본값으로 설정됩니다. Identity 서비스에 대한 인증 URL도 필요합니다. [필수: <code>--os-auth-url</code>, <code>--os-project-name</code>, <code>--os-username</code>; 선택: <code>--os-password</code>]
| |
| * '''토큰''': 일반적인 토큰 인증과 약간 다릅니다. 토큰과 인증 URL이 제공되면 플러그인이 새 토큰을 가져옵니다. [필수: <code>--os-auth-url</code>, <code>--os-token</code>]
| |
| * '''기타''': SAML, Kerberos, OAuth1.0과 같은 기타 인증 플러그인도 개발 중이며 지원됩니다. 이러한 플러그인을 사용하려면 <code>--os-auth-type</code> 옵션을 제공하여 선택해야 합니다.
| |
|
| |
| ==세부 과정== | | ==세부 과정== |
| OpenStackClient에서 인증 과정은 모두 <code>ClientManager</code> 객체에 의해 처리됩니다.
| |
|
| |
| * <code>api.auth</code>를 가져올 때:
| |
| ** Keystone 인증 플러그인의 목록을 <code>keystoneclient.auth.plugin</code> 엔트리 포인트에서 가져옵니다.
| |
| ** 플러그인에서 인증 옵션 목록을 작성합니다.
| |
| * 명령줄 인수가 처리되고 <code>--os-cloud</code>가 제공된 경우 <code>clouds.yaml</code>에서 설정이 로드됩니다.
| |
| * 새 <code>ClientManager</code>가 생성되어 명령줄, 환경변수 및/또는 <code>clouds.yaml</code>에서 제공된 옵션 세트가 공급됩니다:
| |
| ** '''<code>--os-auth-type</code>이 제공되고 유효한 사용가능한 플러그인인 경우, 그것이 사용됩니다.'''
| |
| ** <code>--os-auth-type</code>이 제공되지 않은 경우, 기존 옵션에 따라 인증 플러그인이 선택됩니다. 이는 단축 평가(short-circuit evaluation)로, 첫 번째 매치 항목이 선택됩니다.
| |
| *** <code>--os-username</code>이 제공된 경우 <code>password</code>가 선택됩니다.
| |
| *** <code>--os-token</code>이 제공된 경우 <code>token</code>이 선택됩니다.
| |
| *** 지금까지 선택이 이루어지지 않은 경우 오류로 종료됩니다.
| |
| ** 선택된 플러그인 클래스를 로드합니다.
| |
| * 인증이 필요한 작업이 시도될 때 <code>ClientManager</code>는 실제 초기 요청을 Identity 서비스에 보냅니다.
| |
| ** <code>--os-auth-url</code>이 Token/Endpoint 유형을 제외한 다른 유형에 대해 제공되지 않은 경우, 오류로 종료됩니다.
| |
|
| |
| ==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>
| |
| | |
| ==페더레이트 사용자 지원==
| |
| OpenStackClient는 페더레이트 사용자가 로그인하는 것도 허용합니다. 이를 통해 Keystone 자격증명 대신 Google이나 Facebook과 같은 ID 제공자의 자격증명을 사용하여 OpenStackClient에 로그인할 수 있습니다.
| |
| | |
| 이것은 페더레이트 환경에서 유용한데, 하나의 자격증명으로 페더레이션이 지원하는 여러 애플리케이션/서비스에 접근할 수 있기 때문입니다. 페더레이트 사용자가 로그인할 수 있도록 OpenStackClient를 설정하는 방법을 확인하려면 [[OpenStackClient 매뉴얼 페이지#페더레이션을 사용한 인증|페더레이션을 사용한 인증]]을 참조하십시오.
| |
| | |
| ==예시== | | ==예시== |
| ===v3password=== | | ===v3password=== |
| <code>[[clouds.yaml]]</code> 사용:
| |
|
| |
| <syntaxhighlight lang='yaml'>
| |
| clouds:
| |
| demo:
| |
| auth:
| |
| auth_url: http://openstack.dev/identity
| |
| project_name: demo
| |
| project_domain_name: default
| |
| user_domain_name: default
| |
| username: demo
| |
| password: password
| |
| auth_type: v3password
| |
| </syntaxhighlight>
| |
|
| |
| 또는, 명령줄 옵션 사용:
| |
|
| |
| <syntaxhighlight lang='console'>
| |
| $ openstack \
| |
| --os-auth-url "http://openstack.dev/identity" \
| |
| --os-project-name demo \
| |
| --os-project-domain-name default \
| |
| --os-user-domain-name default \
| |
| --os-auth-type=v3password \
| |
| --os-username demo \
| |
| --os-password password \
| |
| server list
| |
| </syntaxhighlight>
| |
|
| |
| 또는, 환경변수 사용:
| |
|
| |
| <syntaxhighlight lang='console'>
| |
| $ export OS_AUTH_URL="http://openstack.dev/identity"
| |
| $ export OS_PROJECT_NAME=demo
| |
| $ export OS_PROJECT_DOMAIN_NAME=default
| |
| $ export OS_AUTH_TYPE=v3password
| |
| $ export OS_USERNAME=demo
| |
| $ export OS_PASSWORD=password
| |
| $ openstack server list
| |
| </syntaxhighlight>
| |
|
| |
| {{NOTE}}
| |
| 패스워드가 제공되지 않은 경우, 입력을 요청받게 됩니다.
| |
| {{/NOTE}}
| |
|
| |
| ===v3applicationcredential=== | | ===v3applicationcredential=== |
| <code>clouds.yaml</code> 사용:
| |
|
| |
| <syntaxhighlight lang='yaml'>
| |
| clouds:
| |
| demo:
| |
| auth:
| |
| auth_url: http://openstack.dev/identity
| |
| application_credential_id: ${APP_CRED_ID}
| |
| application_credential_secret: ${APP_CRED_SECRET}
| |
| auth_type: v3applicationcredential
| |
| </syntaxhighlight>
| |
|
| |
| 또는, 명령줄 옵션 사용:
| |
|
| |
| <syntaxhighlight lang='console'>
| |
| $ openstack \
| |
| --os-auth-url "http://openstack.dev/identity" \
| |
| --os-auth-type=v3applicationcredential \
| |
| --os-application-credential-id=${APP_CRED_ID} \
| |
| --os-application-credential-secret=${APP_CRED_SECRET}
| |
| server list
| |
| </syntaxhighlight>
| |
|
| |
| 또는, 환경변수 사용:
| |
|
| |
| <syntaxhighlight lang='console'>
| |
| $ export OS_AUTH_URL="http://openstack.dev/identity"
| |
| $ export OS_AUTH_TYPE=v3applicationcredential
| |
| $ export OS_APPLICATION_CREDENTIAL_ID=${APP_CRED_ID}
| |
| $ export OS_APPLICATION_CREDENTIAL_SECRET=${APP_CRED_SECRET}
| |
| $ openstack server list
| |
| </syntaxhighlight>
| |
|
| |
| {{NOTE}}
| |
| '''[[openstack application credential create]]''' 명령어를 사용하여 애플리케이션 자격증명을 생성할 수 있습니다:
| |
|
| |
| <syntaxhighlight lang='console'>
| |
| $ readarray -t lines <<< $(openstack application credential create test -f value -c id -c secret)
| |
| $ APP_CRED_ID=${lines[0]}
| |
| $ APP_CRED_SECRET=${lines[1]}
| |
| </syntaxhighlight>
| |
| {{/NOTE}}
| |
|
| |
| ===v3token=== | | ===v3token=== |
| <code>clouds.yaml</code> 사용:
| |
|
| |
| <syntaxhighlight lang='yaml'>
| |
| clouds:
| |
| demo:
| |
| auth:
| |
| auth_url: http://openstack.dev/identity
| |
| project_name: demo
| |
| project_domain_name: default
| |
| token: ${TOKEN}
| |
| auth_type: v3token
| |
| </syntaxhighlight>
| |
|
| |
| 또는, 명령줄 옵션 사용:
| |
|
| |
| <syntaxhighlight lang='console'>
| |
| $ openstack \
| |
| --os-auth-url "http://openstack.dev/identity" \
| |
| --os-project-name demo \
| |
| --os-project-domain-name default \
| |
| --os-auth-type=v3token \
| |
| --os-token ${TOKEN} \
| |
| server list
| |
| </syntaxhighlight>
| |
|
| |
| 또는, 환경변수 사용:
| |
|
| |
| <syntaxhighlight lang='console'>
| |
| $ export OS_AUTH_URL="http://openstack.dev/identity"
| |
| $ export OS_PROJECT_NAME=demo
| |
| $ export OS_PROJECT_DOMAIN_NAME=default
| |
| $ export OS_AUTH_TYPE=v3token
| |
| $ export OS_TOKEN=${TOKEN}
| |
| $ openstack server list
| |
| </syntaxhighlight>
| |
|
| |
| {{NOTE}}
| |
| '''[[openstack token issue]]''' 명령어를 사용하여 토큰을 생성할 수 있습니다:
| |
|
| |
| <syntaxhighlight lang='console'>
| |
| $ TOKEN=$(openstack token issue -f value -c id)
| |
| </syntaxhighlight>
| |
| {{/NOTE}}
| |
|
| |
| ===v3totp=== | | ===v3totp=== |
| {{NOTE}} | | {{NOTE}} |