第9章 アプリケーション認証情報
アプリケーション認証情報 を使用することで、設定ファイルにユーザーアカウントの認証情報を埋め込むことを回避できます。代わりに、ユーザーは、1 つのプロジェクトへのアクセスを委譲された、個別のシークレットを持つアプリケーション認証情報を作成します。ユーザーは、委譲されたアクセス権限をそのプロジェクト内の単一のロールに制限することもできます。これにより、すべてのプロジェクトおよびロールではなく、サービスが機能するのに必要な 1 つのプロジェクトおよびロールへのアクセス権限のみ付与でき、最小権限の原則に準拠できます。
この手法を使用すると、ユーザー認証情報を公開せずに API を消費することが可能になり、アプリケーションは埋め込まれたユーザー認証情報を必要とせずに Keystone に対して認証することができます。
アプリケーション認証情報を使用してトークンを生成し、アプリケーションの keystone_authtoken
設定を定義できます。これらのユースケースは、これ以降のセクションで説明します。
アプリケーション認証情報は、その認証情報を作成したユーザーアカウントに従属します。したがって、そのアカウントが削除されたり、該当するロールにアクセスできなくなったりすると、アプリケーション認証情報は機能しなくなります。
9.1. アプリケーション認証情報を使用したトークンの生成
ユーザーは、Dashboard のセルフサービス機能として、アプリケーション認証情報を利用できます。以下の例は、ユーザーがアプリケーション認証情報を作成し、それを使用してトークンを生成する方法を示しています。
テスト用プロジェクトおよびユーザーアカウントを作成します。
AppCreds
という名前のプロジェクトを作成します。$ openstack project create AppCreds
AppCredsUser
という名前のユーザーを作成します。$ openstack user create --project AppCreds --password-prompt AppCredsUser
AppCredsUser
に、AppCreds
プロジェクトのmember
ロールへのアクセス権限を付与します。$ openstack role add --user AppCredsUser --project AppCreds member
AppCredsUser
として Dashboard にログインし アプリケーション認証情報を作成します。Overview
Identity
Application Credentials
+Create Application Credential
に移動します。注記Your Application Credential
ポップアップウィンドウを閉じると再アクセスできなくなるため、clouds.yaml
ファイルの内容をダウンロードしてください。CLI を使用して
/home/stack/.config/openstack/clouds.yaml
という名前のファイルを作成し、clouds.yaml
ファイルの内容を貼り付けます。# This is a clouds.yaml file, which can be used by OpenStack tools as a source # of configuration on how to connect to a cloud. If this is your only cloud, # just put this file in ~/.config/openstack/clouds.yaml and tools like # python-openstackclient will just work with no further config. (You will need # to add your password to the auth section) # If you have more than one cloud account, add the cloud entry to the clouds # section of your existing file and you can refer to them by name with # OS_CLOUD=openstack or --os-cloud=openstack clouds: openstack: auth: auth_url: http://10.0.0.10:5000/v3 application_credential_id: "6d141f23732b498e99db8186136c611b" application_credential_secret: "<example secret value>" region_name: "regionOne" interface: "public" identity_api_version: 3 auth_type: "v3applicationcredential"
注記これらの値は、実際のデプロイメントとは異なる場合があります。
アプリケーション認証情報を使用してトークンを生成します。以下のコマンドを使用する場合、特定のユーザーとしてソースを提供しないでください。また、
clouds.yaml
ファイルのディレクトリーを現在の作業ディレクトリーにする必要があります。[stack@undercloud-0 openstack]$ openstack --os-cloud=openstack token issue +------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Field | Value | +------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | expires | 2018-08-29T05:37:29+0000 | | id | gAAAAABbhiMJ4TxxFlTMdsYJpfStsGotPrns0lnpvJq9ILtdi-NKqisWBeNiJlUXwmnoGQDh2CMyK9OeTsuEXnJNmFfKjxiHWmcQVYzAhMKo6_QMUtu_Qm6mtpzYYHBrUGboa_Ay0LBuFDtsjtgtvJ-r8G3TsJMowbKF-yo--O_XLhERU_QQVl3hl8zmMRdmLh_P9Cbhuolt | | project_id | 1a74eabbf05c41baadd716179bb9e1da | | user_id | ef679eeddfd14f8b86becfd7e1dc84f2 | +------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
__init__() got an unexpected keyword argument 'application_credential_secret'
のようなエラーメッセージが表示される場合は、まだ以前の認証情報にソースを提供している可能性があります。新しい環境の場合は、sudo su - stack
を実行します。