Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

役割とリソースベースのアクセス コントロールの設定

Contrail の役割とリソースベースのアクセス(RBAC)の概要

Contrail Networking は、API 操作レベルのアクセス コントロールにより、役割およびリソースベースのアクセス コントロール(RBAC)をサポートします。

RBAC の実装は、API リクエストに存在するトークンから Keystone から取得したユーザー認証情報に依存します。認証情報には、ユーザー、ロール、テナント、ドメインの情報が含まれます。

API レベルのアクセスは、ルールのリストによって制御されます。ルールの添付ファイル ポイントには、 、ドメイン、およびプロジェクトが含まれます global-system-config。リソースレベルのアクセスは、オブジェクトに埋め込まれた権限によって制御されます。

APIレベルのアクセス制御

RBAC機能が有効になっている場合、APIサーバーは、受信するリクエストに有効なトークンが X-Auth-Token 存在する必要があります。APIサーバーは、Keystoneのユーザー認証情報(ロール、ドメイン、プロジェクトなど)のトークンを交換します。

トークンが見つからない場合、または無効な場合は、HTTP エラー 401 が返されます。

オブジェクトは api-access-list 、次のフォームのアクセス ルールを保持します。

<object, field> => list of <role:CRUD>

どこ:

object

ネットワークやサブネットなどの API リソース。

field

リソース内のすべてのプロパティまたは参照。たとえば、 オプションは field 複数レベルで、 network.ipam.host-routes 複数レベルを識別するために使用できます。は field オプションであるため、作成、読み取り、更新、および削除 (CRUD) 操作はリソース全体を参照します。

role

Keystone の役割名です。

各ルールは、CRUD 操作のサブセットとして、役割のリストとそれに対応する権限も指定します。

例:ACL RBAC オブジェクト

次に、管理者とロールを持つ Development ユーザーがプロジェクト内のネットワークで CRUD 操作を実行できるプロジェクトの ACL(アクセス制御リスト)オブジェクトの例を示します。ただし、ネットワーク内の admin ポリシーおよび IP アドレス管理(IPAM)に対して CRUD 操作を実行できるのはロールのみです。

ルール セットと ACL オブジェクト

Contrail のアクセス コントロール オブジェクトのルール セットの機能を次に示します。

  • 検証のルール セットは、 にアタッチされた ACL からのルールの和です。

    • ユーザープロジェクト

    • ユーザー ドメイン

    • デフォルト ドメイン

      プロジェクトまたはドメイン アクセス オブジェクトを空にする可能性があります。

  • アクセスは、結合されたルール セット内のルールがアクセスを許可している場合にのみ付与されます。

  • 明示的な拒否ルールはありません。

  • ACL オブジェクトはドメイン内で共有できます。そのため、複数のプロジェクトが同じ ACL オブジェクトを指すことができます。ACL オブジェクトをデフォルトにできます。

オブジェクトレベルのアクセス制御

perms2オブジェクトのパーミッション プロパティにより、リソースごとのきめ細かなアクセス制御が可能になります。

プロパティの perms2 フィールドは以下のとおりです。

owner

このフィールドには、作成時にトークンから抽出されたテナント UUID 値が入力されます。

share list

共有リストは、他のユーザーと共有するオブジェクトが選択されたときに作成されます。これは、オブジェクトが共有されるタプルのリストです。

フィールドには permission 、以下のオプションがあります。

  • R読み取りオブジェクト

  • Wオブジェクトの作成または更新

  • Xリンク(を参照)オブジェクト

アクセスは次のように許可されます。

  • ユーザーが所有者で許可されている場合(rwx)

  • または、ユーザーテナントが共有リスト内にあり、

  • または、ワールドアクセスが許可されている場合

構成

このセクションでは、Contrail RBAC で使用されるパラメーターについて説明します。

パラメーター: aaa モード

RBAC は、 という名前 aaa-modeのパラメーターによって制御されます。このパラメータは、以前のリリースのマルチテナンシー パラメータの代わりに使用されます。

aaa-mode 、以下の値に設定できます。

  • no-auth—認証は行われず、すべてに完全なアクセスが付与されます。

  • cloud-admin—認証が実行され、管理者ロールのみがアクセスできます。

  • rbac—認証が実行され、ロールに基づいてアクセスが許可されます。

    Contrail Ansible Deployer を使用して Contrail Networking をプロビジョニングする場合は、 の AAA_MODE 値を デフォルトで RBAC を有効にするように rbac 設定します。

    ContrailコマンドからContrail Networkingをインストールする場合は、ステップ2プロビジョニングオプションページのContrail設定セクションで、キーと値AAA_MODEをそれぞれ と rbacに指定します。

RBAC を有効にした後、変更を有効にするには、 コマンドを service neutron-server restart 実行して Neutron サーバーを再起動する必要があります。

メモ:

この multi_tenancy パラメータは、Contrail 3.0以降では非推奨です。このパラメータは、コンフィギュレーションから削除する必要があります。代わりに、RBAC を有効にするには、 aaa_mode パラメーターを使用します。

パラメータを multi_tenancy 削除しない場合、この aaa-mode 設定は無視されます。

パラメーター: cloud_admin_role

割り当てられた cloud_admin_role ユーザーは、すべてに完全にアクセスできます。

このロール名は、API サーバーの cloud_admin_role パラメーターで構成されます。パラメータのデフォルト設定は. adminデフォルト値を変更するには、Keystone でこのロールを構成する必要があります。

ユーザーが 1 つのテナントに cloud_admin_role があり、ユーザーが他のテナントにロールを持っている場合は、 cloud_admin_role そのロールを他のテナントに含める必要があります。を cloud_admin_role 持つユーザーはすべてのテナントにロールを持つ必要はありません。ただし、そのユーザーが別のテナントに任意のロールを持っている場合、そのテナント cloud_admin_roleには.

クラウド管理者の資格情報を持つ設定ファイル

以下の設定ファイルには認証情報が含まれています cloud_admin_role

  • /etc/contrail/contrail-keystone-auth.conf

  • /etc/neutron/plugins/opencontrail/ContrailPlugin.ini

  • /etc/contrail/contrail-webui-userauth.js

クラウド管理設定ファイルの変更

ロールが変更された場合は、クラウド管理者の資格情報ファイルを cloud_admin_role 変更します。

  1. 設定ファイルを新しい情報で変更します。

  2. 以下を再起動します。

    • API サーバー

      service supervisor-config restart

    • Neutron サーバー

      service neutron-server restart

    • Webui

      service supervisor-webui restart

グローバル読み取り専用ロール

グローバル読み取り専用ロール(global_read_only_role)を設定できます。

A global_read_only_role は、すべての Contrail リソースへの読み取り専用アクセスを許可します。は global_read_only_role Keystone で設定する必要があります。デフォルト global_read_only_role は、任意の値に設定されていません。

ユーザーは global_read_only_role Contrail Web Ui を使用して、Contrail のデフォルト設定のグローバル構成を表示できます。

グローバル読み取り専用ロールの設定

グローバル読み取り専用ロールを設定するには、以下の手順にしたがっています。

  1. ユーザーは cloud_admin Contrail API で を global_read_only_role 設定します。

    /etc/contrail/contrail-api.conf

    global_read_only_role = <new-admin-read-role>

  2. サービスを再起動します。contrail-api

    service contrail-api restart

/etc/neutron/api-paste.ini のパラメータ変更

Contrail RBAC 操作は、API リクエストのヘッダーで受信したユーザー トークンに X-Auth-Token 基づいています。Neutron が Contrail API サーバーへのリクエストでユーザー トークンを渡すようにするには、 /etc/neutron/api-paste.ini で 以下の変更を行う必要があります。

以前のリリースからのアップグレード

このパラメータは multi_tenancy 非推奨です。.このパラメータは、コンフィギュレーションから削除する必要があります。代わりに、RBAC を有効にするには、 aaa_mode パラメーターを使用します。

パラメータを multi_tenancy 削除しない場合、この aaa-mode 設定は無視されます。

Contrail ユーザー インターフェイスを使用した RBAC の設定

RBAC で Contrail UI を使用するには、次の手順にしたがっています。

  1. aaa_modeをno_authに設定します。

    /etc/contrail/contrail-analytics-api.conf

    aaa_mode = no-auth

  2. サービスを再起動します analytics-api

    service contrail-analytics-api restart

  3. コンテナを再起動してサービスを再起動します。

Contrail UI を使用して、API レベルとオブジェクト レベルの両方で RBAC を構成できます。APIレベルのアクセス制御は、グローバルレベル、ドメインレベル、プロジェクトレベルで設定できます。オブジェクト レベルへのアクセスは、Contrail UI の作成画面または編集画面の大半から利用できます。

グローバルレベルでの RBAC の設定

グローバル レベルで RBAC を構成するには、「 > インフラストラクチャの構成>グローバル構成> RBAC」に移動します。 図 1 を参照してください。

図 1:RBAC グローバル レベル RBAC Global Level

ドメインレベルでの RBAC の設定

ドメインレベルで RBAC を構成するには、「 RBAC >ドメイン>構成する」に移動します。 図 2 を参照してください。

図 2:RBAC ドメイン レベル RBAC Domain Level

プロジェクトレベルでの RBAC の設定

プロジェクト レベルで RBAC を構成するには、RBAC > プロジェクト>構成に移動します。 図 3 を参照してください。

図 3:RBAC プロジェクト レベル RBAC Project Level

RBAC の詳細の構成

RBAC の設定は、すべてのレベルで同様です。APIアクセスリストを追加または編集するには、グローバル、ドメイン、またはプロジェクトページに移動し、プラス(+)アイコンをクリックしてリストを追加するか、ギアアイコンをクリックして編集、後に挿入、または削除から選択します。 図4を参照してください。

図 4:RBAC の詳細 API アクセス RBAC Details API Access

API レベル アクセスの作成または編集

[API アクセスの編集] ポップアップ ウィンドウをアクティブにした後に作成、編集、または挿入をクリックすると、API アクセス ルールの詳細が入力されます。[ロール] フィールドにユーザー タイプを入力し、ファイルされたアクセスで [+ ] アイコンを使用して、作成、読み取り、更新、削除など、ロールに許可されるアクセスタイプを入力します( 図 5 を参照)。

図 5:API アクセス Edit API Accessの編集

オブジェクト レベル アクセスの作成または編集

リソースごとにきめ細かなアクセス制御を設定できます。 アクセス許可 タブは、リソースのポップアップを作成または編集する際に使用できます。所有者権限とグローバル共有 権限 を設定するには、権限ポップアップを使用します。リソースは、共有リストで構成することで他のテナントと 共有することもできます( 図 6 を参照)。

図 6:オブジェクト レベル アクセス Edit Object Level Accessの編集

RBAC リソース

RBACの詳細については、 OpenStack管理者ガイド を参照してください。