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

キーストーン ロール名。

各ルールでは、役割の一覧とそれに対応するアクセス許可を CRUD 操作のサブセットとして指定します。

例:ACL RBAC オブジェクト

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

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

Contrail のアクセス制御オブジェクトのルールセットの機能は次のとおりです。

  • 検証用のルール セットは、次の宛先にアタッチされた ACL のルールの和集合です。

    • ユーザープロジェクト

    • ユーザードメイン

    • 既定のドメイン

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

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

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

  • ACL オブジェクトは、ドメイン内で共有できます。したがって、複数のプロジェクトが同じ ACL オブジェクトを指す可能性があります。ACL オブジェクトをデフォルトにすることができます。

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

オブジェクトの permission プロパティを使用すると 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 Command から Contrail Networking をインストールする場合は、[ステップ 2 プロビジョニング オプション] ページの [Contrail の設定] セクションで、キーと値をAAA_MODErbacそれぞれ と に指定します。

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で設定する必要があります。

ユーザーが cloud_admin_role 1 つのテナントに を持ち、そのユーザーが他のテナントにロールを持っている場合、その 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

    • 中性子サーバー

      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 受信したユーザー トークンに基づきます。 /etc/neutron/api-paste.ini で以下の変更を行い、Neutron がリクエスト内のユーザートークンを Contrail API サーバーに渡すように強制する必要があります。

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

このパラメーターは 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 管理者ガイド 』を参照してください。