第3回 Horizon、Keystoneの機能と役割

  • OpenStack

最終更新⽇:

掲載⽇:

こんにちは、京セラみらいエンビジョン株式会社のICTインフラソリューション部のグエンです。
前回は、OpenStackの概要、メリット・デメリット、コミュニティとエコシステムの全体像を説明しました。
今回は、各コンポーネントの機能と役割について具体的に説明しようと思います。

Horizon

Horizonは、WebベースのGUIを通じてOpenStackクラウドと対話し、インスタンス、ネットワーク、ボリューム、イメージなどのリソースを簡単に作成、管理、監視できます。同時に、IDやアクセス制御、請求、測定サービスの構成と管理もグラフィカルに行えるため、ユーザーフレンドリーで強力なクラウド管理ツールとなっています。

図 OpenStackログイン画面

ログイン画面

図 OverView

画面全体でコンピュート、容量、ネットワークなどの使用状況、上限などを確認できます。また、インスタンスの動作状況も確認できます。

図 Instances


Horizonの中でも注目すべき特徴の一つが「Network Topology(ネットワークトポロジー)」の表示機能です。ユーザーはこの機能を通じて、クラウド上で構築されたネットワークのトポロジーを視覚的に把握でき、仮想マシンやネットワークリソースの接続状態を図表で確認できます。これにより、クラウドネットワークの構造を理解しやすくなり、適切な管理やトラブルシューティングが容易になります。

図 Network Topology

Horizonでユーザー管理

HorizonはOpenStackのダッシュボードであり、OpenStack上のリソースの管理や追跡などのサービスを提供します。ただし、全てのユーザーが全てのリソースを表示できるわけではなく、リソースの管理を効果的・安全に行うため、ユーザーに権限を与えます。

openstack-0003_05.png

例えば、管理ユーザーはグループ、ドメイン、ロールなどへのアクセスが可能ですが、一般ユーザーにはこの機能が制限されています。また、管理ユーザーは複数のユーザーを編集、削除、無効化することができますが、一般ユーザーにはこれらの操作が許可されていません。ユーザーは特定のロールを持つことで、「パスワード変更可能」や「グループ変更の許可」、「ネットワークへの追加の拒否」など、細かい権限を制御できます。

openstack-0003_06.png

Keystone

KeystoneはOpenStackのアイデンティティサービスで、認証と厳格なアクセス管理を担当します。ユーザーの認証を行い、異なるサービスへのエントリーを提供します。具体的には、以下に説明します。

openstack-0003_07.png

①認証要求:

・ユーザーからの資格情報を使用して認証を要求します。
・Keystone(Identityサービス)はユーザーのために一時的なトークンを発行して、一般的なログを作成します。

②トークンの取得:

・Keystoneは一時的なトークンとユーザーがアクセス権を持つテナントのリストを返します。

③リクエストとトークンの送信:

・Keystoneはトークンが正しいこと、ユーザーが要求されたコンピュートサービスにアクセスする許可があることを確認します。
・コンピュートサービスはリクエストを完了するためにアクセスする必要がある他のサービスにもアクセスできることを確認します。

④トークンの確認:

・Identityサービスはユーザーをテナントに対して認可し、リクエストのトークンが正しいことを検証します。
・ユーザーの権限も、サービスのポリシーに基づいて検証します。

⑤認証許可、権限付与:

・ユーザーが認可されて、権限が確認されたら、サービスを利用することができます。
・コンピュートサービスはサービスに接続成功を通知します。

この流れは、Keystoneが提供する認証と認可の基本的な概要を示しています。ただし、実際の運用環境や設定によって、これらの手順に変更や拡張が加えられる可能性があります。

Keystoneはデータベースで情報を管理しています。データベースを使用することで、Keystoneは必要なユーザーやプロジェクト情報を安全・効率的に管理し、セキュリティとパフォーマンスの要件を満たすことができます。このコラムでは、データベースとしてMySQLを使用します。

KeystoneのMySQL設定

Keystone は、OpenStack のコア サービスの 1 つであり、認証と認可を担当します。以下に提供される MySQL コマンドのセットは、データベースを作成し、OpenStack の Keystone ID サービスに適切な権限を持つユーザー アカウントをセットアップするために使用されます。

openstack-0003_08.png

Keystoneデータベースでアクセスユーザーの表示

以下のコマンドは、OpenStack環境でKeystone IDサービス用の専用データベースをセットアップするために利用されます。このプロセスには、rootユーザーとしてMySQLインスタンスにアクセスし、「keystone」という名前のデータベースを作成し、関連する権限を持つ「keystone」という名前のユーザーアカウントを確立し、すぐに有効になるようにデータベース権限をフラッシュすることが含まれます。このコマンドは、Keystoneの認証および認可機能に合わせた特定のデータベース環境を作成することにより、セキュリティと効率を強化することを目的としています。

openstack-0003_09.png

Keystoneデータベースでユーザーのロール(アクセス制限)

具体的には以下の手順でCLIに入力します。

1. MySQL インスタンスにアクセスします。

mysql -u root -p

root ユーザーとして MySQLインスタンスにアクセスするために使用されます。root ユーザーのパスワードの入力を求められます。
※デフォルトパスワードが設定されていないため、-p を省いても問題がありません。

2. Keystone データベースを作成します。

CREATE DATABASE keystone;

Keystoneのデータを保存するために新しいデータベースを作成します。この新しいデータベースの名前は「keystone」となります。

3. Keystone ユーザー アカウントを作成します。

GRANT ALL ON keystone.* TO 'keystone'@'%' IDENTIFIED BY 'MY_KEYSTONE_DB_PASSWORD';

指定されたパスワードを持つ「keystone」という名前のユーザー アカウントを作成し、任意のホスト (「%」) から「keystone」データベースに対するすべての権限を付与します。 ※MY_KEYSTONE_DB_PASSWORDを適切なパスワードに置き換えます。

4. Keystone ユーザーにアクセスを許可します。

GRANT ALL ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY 'MY_KEYSTONE_DB_PASSWORD';

同じ権限を付与しますが、ローカルホスト (データベースが実行されているマシン) からのみ「keystone」データベースへのアクセスを制限します。 ※MY_KEYSTONE_DB_PASSWORDを適切なパスワードに置き換えます。

5. データベースのフラッシュ権限:

FLUSH PRIVILEGES;

このコマンドにより、権限の変更が即座に有効になります。

6. MySQL クライアントを終了します。

quit

これらの手順は、Keystone が専用のデータベースと、そのデータを管理するために必要な権限を持つユーザー アカウントを持つために必要な初期設定の一部です。 データベースとユーザー アカウントは、ローカルホストまたは特定のホストからのデータベースへのアクセスを制限するなど、セキュリティを考慮して作成されます。

第3回目でHorizonとKeystoneを紹介しました。次回、Novaを具体的に説明します。