役割とリソースベースのアクセス コントロールの設定
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 |
リソース内のすべてのプロパティまたは参照。たとえば、 オプションは |
role |
Keystone の役割名です。 |
各ルールは、CRUD 操作のサブセットとして、役割のリストとそれに対応する権限も指定します。
例:ACL RBAC オブジェクト
次に、管理者とロールを持つ Development
ユーザーがプロジェクト内のネットワークで CRUD 操作を実行できるプロジェクトの ACL(アクセス制御リスト)オブジェクトの例を示します。ただし、ネットワーク内の admin
ポリシーおよび IP アドレス管理(IPAM)に対して CRUD 操作を実行できるのはロールのみです。
<virtual-network, network-policy> => admin:CRUD <virtual-network, network-ipam> => admin:CRUD <virtual-network, *> => admin:CRUD, Development: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_configuration: . . . AAA_MODE: 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
変更します。
設定ファイルを新しい情報で変更します。
以下を再起動します。
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 のデフォルト設定のグローバル構成を表示できます。
グローバル読み取り専用ロールの設定
グローバル読み取り専用ロールを設定するには、以下の手順にしたがっています。
ユーザーは
cloud_admin
Contrail API で をglobal_read_only_role
設定します。/etc/contrail/contrail-api.conf
global_read_only_role = <new-admin-read-role>
サービスを再起動します。
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 で 以下の変更を行う必要があります。
keystone = user_token request_id catch_errors .... ... ... [filter:user_token] paste.filter_factory = neutron_plugin_contrail.plugins.opencontrail.neutron_middleware:token_factory
以前のリリースからのアップグレード
このパラメータは multi_tenancy
非推奨です。.このパラメータは、コンフィギュレーションから削除する必要があります。代わりに、RBAC を有効にするには、 aaa_mode
パラメーターを使用します。
パラメータを multi_tenancy
削除しない場合、この aaa-mode
設定は無視されます。
Contrail ユーザー インターフェイスを使用した RBAC の設定
RBAC で Contrail UI を使用するには、次の手順にしたがっています。
aaa_modeをno_authに設定します。
/etc/contrail/contrail-analytics-api.conf
aaa_mode = no-auth
サービスを再起動します
analytics-api
。service contrail-analytics-api restart
コンテナを再起動してサービスを再起動します。
Contrail UI を使用して、API レベルとオブジェクト レベルの両方で RBAC を構成できます。APIレベルのアクセス制御は、グローバルレベル、ドメインレベル、プロジェクトレベルで設定できます。オブジェクト レベルへのアクセスは、Contrail UI の作成画面または編集画面の大半から利用できます。
グローバルレベルでの RBAC の設定
グローバル レベルで RBAC を構成するには、「 > インフラストラクチャの構成>グローバル構成> RBAC」に移動します。 図 1 を参照してください。
![RBAC Global Level](/documentation/us/en/software/contrail-networking20/contrail-install-and-upgrade-guide/images/s018760.png)
プロジェクトレベルでの RBAC の設定
プロジェクト レベルで RBAC を構成するには、RBAC > プロジェクト>構成に移動します。 図 3 を参照してください。
![RBAC Project Level](/documentation/us/en/software/contrail-networking20/contrail-install-and-upgrade-guide/images/s018762.png)
RBAC の詳細の構成
RBAC の設定は、すべてのレベルで同様です。APIアクセスリストを追加または編集するには、グローバル、ドメイン、またはプロジェクトページに移動し、プラス(+)アイコンをクリックしてリストを追加するか、ギアアイコンをクリックして編集、後に挿入、または削除から選択します。 図4を参照してください。
![RBAC Details API Access](/documentation/us/en/software/contrail-networking20/contrail-install-and-upgrade-guide/images/s018763.png)
API レベル アクセスの作成または編集
[API アクセスの編集] ポップアップ ウィンドウをアクティブにした後に作成、編集、または挿入をクリックすると、API アクセス ルールの詳細が入力されます。[ロール] フィールドにユーザー タイプを入力し、ファイルされたアクセスで [+ ] アイコンを使用して、作成、読み取り、更新、削除など、ロールに許可されるアクセスタイプを入力します( 図 5 を参照)。
![Edit API Access](/documentation/us/en/software/contrail-networking20/contrail-install-and-upgrade-guide/images/s018764.png)
オブジェクト レベル アクセスの作成または編集
リソースごとにきめ細かなアクセス制御を設定できます。 アクセス許可 タブは、リソースのポップアップを作成または編集する際に使用できます。所有者権限とグローバル共有 権限 を設定するには、権限ポップアップを使用します。リソースは、共有リストで構成することで他のテナントと 共有することもできます( 図 6 を参照)。
![Edit Object Level Access](/documentation/us/en/software/contrail-networking20/contrail-install-and-upgrade-guide/images/s018765.png)