「Keystone」は、各種サービスに対する認証(Authentication)、認可(Authorization)を提供するコンポーネントです。OpenStackはそのアーキテクチャ上、複数コンポーネントをRESTやAMQPで接続するようになっています、この中で、認証はKeystoneが一括して行う仕組みです。
OpenStack上でさまざまな処理を行いたい場合には、ユーザーはまずKeystoneで認証を行います。手続きはユーザー名、パスワードによる、一般的な認証をイメージすれば良いでしょう。認証に成功すると、Keystoneからトークンとエンドポイントが与えられます。そのトークンを使って、その他のコンポーネントに対してリクエストを送ります。
リクエストの送り先がエンドポイントです。エンドポイントはREST APIとして、URLで渡されます。このようにAPIの送り先をその都度渡してくれるので、Keystoneはサービスカタログ的な機能も持っていると考えてよいでしょう。
例えば、Novaに対してインスタンスの起動をリクエストするとします。NovaのAPIエンドポイントに対してトークンと一緒にリクエストをHTTPで送信します。Novaは渡されたトークンを元にKeystoneに問い合わせを行い、そのリクエストがユーザーに対して許可されている処理かどうかを確認します。これが認可です。
Keystoneでは、認証認可のための情報として、ユーザー、グループ、テナント(以前はプロジェクトと呼ばれていた)、ロールなどで管理されています。ユーザーが行えることを定義するのがロールで、主なロールとしては管理者としてふるまえるadminロール、一般ユーザーのMemberロールなどがあらかじめ定義されています。認可する権限をカスタマイズしたい場合には、JSONファイルを修正する必要があります。この方式は柔軟にカスタマイズできますが、作業を行う管理者としてはやや大変かもしれません。
Keystoneはその名の通り「要石」として、OpenStack全体に関わる重要なコンポーネントです。規模が大きなクラウドを構築する場合には、冗長化を行うなどの耐障害性アップの対策が必要になるでしょう。
Copyright © ITmedia, Inc. All Rights Reserved.