第9章 アプリケーション認証情報

アプリケーション認証情報 を使用することで、設定ファイルにユーザーアカウントの認証情報を埋め込むことを回避できます。代わりに、ユーザーは、1 つのプロジェクトへのアクセスを委譲された、個別のシークレットを持つアプリケーション認証情報を作成します。ユーザーは、委譲されたアクセス権限をそのプロジェクト内の単一のロールに制限することもできます。これにより、すべてのプロジェクトおよびロールではなく、サービスが機能するのに必要な 1 つのプロジェクトおよびロールへのアクセス権限のみ付与でき、最小権限の原則に準拠できます。

この手法を使用すると、ユーザー認証情報を公開せずに API を消費することが可能になり、アプリケーションは埋め込まれたユーザー認証情報を必要とせずに Keystone に対して認証することができます。

アプリケーション認証情報を使用してトークンを生成し、アプリケーションの keystone_authtoken 設定を定義できます。これらのユースケースは、これ以降のセクションで説明します。

注記

アプリケーション認証情報は、その認証情報を作成したユーザーアカウントに従属します。したがって、そのアカウントが削除されたり、該当するロールにアクセスできなくなったりすると、アプリケーション認証情報は機能しなくなります。

9.1. アプリケーション認証情報を使用したトークンの生成

ユーザーは、Dashboard のセルフサービス機能として、アプリケーション認証情報を利用できます。以下の例は、ユーザーがアプリケーション認証情報を作成し、それを使用してトークンを生成する方法を示しています。

  1. テスト用プロジェクトおよびユーザーアカウントを作成します。

    1. AppCreds という名前のプロジェクトを作成します。

      $ openstack project create AppCreds
    2. AppCredsUser という名前のユーザーを作成します。

      $ openstack user create --project AppCreds --password-prompt AppCredsUser
    3. AppCredsUser に、AppCreds プロジェクトの member ロールへのアクセス権限を付与します。

      $ openstack role add --user AppCredsUser --project AppCreds member
  2. AppCredsUser として Dashboard にログインし アプリケーション認証情報を作成します。

    OverviewIdentityApplication Credentials+Create Application Credential に移動します。

    注記

    Your Application Credential ポップアップウィンドウを閉じると再アクセスできなくなるため、clouds.yaml ファイルの内容をダウンロードしてください。

  3. 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"
    注記

    これらの値は、実際のデプロイメントとは異なる場合があります。

  4. アプリケーション認証情報を使用してトークンを生成します。以下のコマンドを使用する場合、特定のユーザーとしてソースを提供しないでください。また、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 を実行します。