第14章 RBAC の設定
OpenStack Networking の Role-based Access Control (RBAC) により、細かな粒度で neutron 共有ネットワークを制御することができます。以前のリリースでは、ネットワークは全テナントで共有するか、全く共有しないかのいずれかでした。本リリースでは、OpenStack Networking は RBAC テーブルを使用してテナント間における neutron ネットワークの共有を制御するようになりました。
これにより、クラウド管理者は一部のテナントからネットワーク作成機能を削除し、逆にそのプロジェクトに対応した既存ネットワークへの接続を許可することができます。
14.1. 新規 RBAC ポリシーの作成
以下の手順では、RBAC ポリシーを使用してテナントに共有ネットワークへのアクセスを許可する方法の実例を紹介します。
利用可能なネットワークの一覧を表示します。
# neutron net-list +--------------------------------------+-------------+-------------------------------------------------------+ | id | name | subnets | +--------------------------------------+-------------+-------------------------------------------------------+ | fa9bb72f-b81a-4572-9c7f-7237e5fcabd3 | web-servers | 20512ffe-ad56-4bb4-b064-2cb18fecc923 192.168.200.0/24 | | bcc16b34-e33e-445b-9fde-dd491817a48a | private | 7fe4a05a-4b81-4a59-8c47-82c965b0e050 10.0.0.0/24 | | 9b2f4feb-fee8-43da-bb99-032e4aaf3f85 | public | 2318dc3b-cff0-43fc-9489-7d4cf48aaab9 172.24.4.224/28 | +--------------------------------------+-------------+-------------------------------------------------------+
テナントの一覧を表示します。
# openstack project list +----------------------------------+----------+ | ID | Name | +----------------------------------+----------+ | 4b0b98f8c6c040f38ba4f7146e8680f5 | auditors | | 519e6344f82e4c079c8e2eabb690023b | services | | 80bf5732752a41128e612fe615c886c6 | demo | | 98a2f53c20ce4d50a40dac4a38016c69 | admin | +----------------------------------+----------+
web-servers
ネットワークの RBAC エントリーを作成し、auditors テナント (4b0b98f8c6c040f38ba4f7146e8680f5
) にアクセスを許可します。# neutron rbac-create fa9bb72f-b81a-4572-9c7f-7237e5fcabd3 --type network --target-tenant 4b0b98f8c6c040f38ba4f7146e8680f5 --action access_as_shared Created a new rbac_policy: +---------------+--------------------------------------+ | Field | Value | +---------------+--------------------------------------+ | action | access_as_shared | | id | 314004d0-2261-4d5e-bda7-0181fcf40709 | | object_id | fa9bb72f-b81a-4572-9c7f-7237e5fcabd3 | | object_type | network | | target_tenant | 4b0b98f8c6c040f38ba4f7146e8680f5 | | tenant_id | 98a2f53c20ce4d50a40dac4a38016c69 | +---------------+--------------------------------------+
これにより、auditors プロジェクトでインスタンスを web-servers
ネットワークに接続できるようになります。
14.2. 設定したRBAC ポリシーの確認
既存の RBAC ポリシーの ID を取得するには、
neutron rbac-list
オプションを使用してください。# neutron rbac-list +--------------------------------------+-------------+--------------------------------------+ | id | object_type | object_id | +--------------------------------------+-------------+--------------------------------------+ | 314004d0-2261-4d5e-bda7-0181fcf40709 | network | fa9bb72f-b81a-4572-9c7f-7237e5fcabd3 | | bbab1cf9-edc5-47f9-aee3-a413bd582c0a | network | 9b2f4feb-fee8-43da-bb99-032e4aaf3f85 | +--------------------------------------+-------------+--------------------------------------+
neutron rbac-show
を使用して、特定の RBAC エントリーの詳細を表示します。# neutron rbac-show 314004d0-2261-4d5e-bda7-0181fcf40709 +---------------+--------------------------------------+ | Field | Value | +---------------+--------------------------------------+ | action | access_as_shared | | id | 314004d0-2261-4d5e-bda7-0181fcf40709 | | object_id | fa9bb72f-b81a-4572-9c7f-7237e5fcabd3 | | object_type | network | | target_tenant | 4b0b98f8c6c040f38ba4f7146e8680f5 | | tenant_id | 98a2f53c20ce4d50a40dac4a38016c69 | +---------------+--------------------------------------+
14.3. RBAC ポリシーの削除
既存の RBAC の ID を取得するには、
neutron rbac-list
オプションを使用してください。# neutron rbac-list +--------------------------------------+-------------+--------------------------------------+ | id | object_type | object_id | +--------------------------------------+-------------+--------------------------------------+ | 314004d0-2261-4d5e-bda7-0181fcf40709 | network | fa9bb72f-b81a-4572-9c7f-7237e5fcabd3 | | bbab1cf9-edc5-47f9-aee3-a413bd582c0a | network | 9b2f4feb-fee8-43da-bb99-032e4aaf3f85 | +--------------------------------------+-------------+--------------------------------------+
neutron rbac-delete
コマンドで対象の ID 値を使用して RBAC を削除します。# neutron rbac-delete 314004d0-2261-4d5e-bda7-0181fcf40709 Deleted rbac_policy: 314004d0-2261-4d5e-bda7-0181fcf40709
14.4. 外部ネットワークの RBAC
--action access_as_external
パラメーターを使用して、外部ネットワーク (ゲートウェイインターフェースがアタッチされているネットワーク) への RBAC アクセスを許可することができます。
たとえば、以下の手順では web-servers
ネットワークの RBAC を作成して、engineering テナント (c717f263785d4679b16a122516247deb
) へのアクセスを許可します。
1. --action access_as_external
を使用して新しい RBAC ポリシーを作成します。
# neutron rbac-create 6e437ff0-d20f-4483-b627-c3749399bdca --type network --target-tenant c717f263785d4679b16a122516247deb --action access_as_external Created a new rbac_policy: +---------------+--------------------------------------+ | Field | Value | +---------------+--------------------------------------+ | action | access_as_external | | id | ddef112a-c092-4ac1-8914-c714a3d3ba08 | | object_id | 6e437ff0-d20f-4483-b627-c3749399bdca | | object_type | network | | target_tenant | c717f263785d4679b16a122516247deb | | tenant_id | c717f263785d4679b16a122516247deb | +---------------+--------------------------------------+
2. 上記のコマンドを実行した結果、Engineering テナントのユーザーは、ネットワークの表示やそのネットワークへのインスタンスの接続が可能になります。
$ neutron net-list +--------------------------------------+-------------+------------------------------------------------------+ | id | name | subnets | +--------------------------------------+-------------+------------------------------------------------------+ | 6e437ff0-d20f-4483-b627-c3749399bdca | web-servers | fa273245-1eff-4830-b40c-57eaeac9b904 192.168.10.0/24 | +--------------------------------------+-------------+------------------------------------------------------+