Kerangka kebijakan Role-Based Access Control (RBAC) mengaktifkan operator dan pengguna untuk memberikan akses ke sumber daya untuk proyek-proyek tertentu.
Saat ini, akses yang dapat diberikan penggunaan fitur ini didukung oleh:
Izin pembuatan port regular di jaringan (sejak Liberty).
Pengikatan izin kebijakan QoS ke jaringan atau port (sejak Mitaka).
Pelekatan router gateways untuk jaringan (sejak Mitaka).
Berbagi sebuah objek dengan proyek tertentu dilakukan dengan pembuatan entri kebijakan yang mengizinkan proyek target aksi `` access_as_shared`` pada objek itu.
Membuat jaringan untuk berbagi:
$ neutron net-create secret_network
Created a new network:
+---------------------------+--------------------------------------+
| Field | Value |
+---------------------------+--------------------------------------+
| admin_state_up | True |
| id | 6532a265-43fb-4c8c-8edb-e26b39f2277c |
| mtu | 1450 |
| name | secret_network |
| port_security_enabled | True |
| provider:network_type | vxlan |
| provider:physical_network | |
| provider:segmentation_id | 1031 |
| router:external | False |
| shared | False |
| status | ACTIVE |
| subnets | |
| tenant_id | de56db175c1d48b0bbe72f09a24a3b66 |
+---------------------------+--------------------------------------+
Buat entri kebijakan menggunakan perintah neutron rbac-create (dalam contoh ini, ID proyek yang kami ingin berbagi dengan adalah e28769db97d9449da658bc6931fcb683
):
$ neutron rbac-create --target-tenant e28769db97d9449da658bc6931fcb683 \
--action access_as_shared --type network 6532a265-43fb-4c8c-8edb-e26b39f2277c
Created a new rbac_policy:
+---------------+--------------------------------------+
| Field | Value |
+---------------+--------------------------------------+
| action | access_as_shared |
| id | 1edebaf8-3fa5-47b9-b3dd-ccce2bd44411 |
| object_id | 6532a265-43fb-4c8c-8edb-e26b39f2277c |
| object_type | network |
| target_tenant | e28769db97d9449da658bc6931fcb683 |
| tenant_id | de56db175c1d48b0bbe72f09a24a3b66 |
+---------------+--------------------------------------+
Parameter target-tenant
menentukan proyek yang membutuhkan akses ke jaringan. Parameter action
menentukan proyek apa yang diperbolehkan untuk dilakukan. Parameter type
mengatakan bahwa objek target adalah jaringan. Parameter terakhir adalah ID jaringan dimana kita memberikan akses ke.
Project e28769db97d9449da658bc6931fcb683
sekarang akan dapat melihat jaringan ketika menjalankan neutron net-list dan neutron net-show dan juga akan dapat membuat port pada jaringan itu. Tidak ada pengguna lain (selain admin dan pemilik) akan dapat melihat jaringan.
Untuk menghapus akses untuk proyek itu, hapus kebijakan yang mengizinkan penggunaan perintah neutron rbac-delete:
$ neutron rbac-delete 1edebaf8-3fa5-47b9-b3dd-ccce2bd44411
Deleted rbac_policy: 1edebaf8-3fa5-47b9-b3dd-ccce2bd44411
Jika proyek memiliki port pada jaringan, server akan mencegah kebijakan dari penghapusan sampai port itu telah dihapus:
$ neutron rbac-delete 1edebaf8-3fa5-47b9-b3dd-ccce2bd44411
RBAC policy on object 6532a265-43fb-4c8c-8edb-e26b39f2277c
cannot be removed because other objects depend on it.
Proses ini dapat diulang beberapa kali untuk berbagi jaringan dengan jumlah proyek berapapun.
Buat kebijakan QoS untuk berbagi:
$ neutron qos-policy-create secret_policy
Created a new policy:
+-------------+--------------------------------------+
| Field | Value |
+-------------+--------------------------------------+
| description | |
| id | e45e6917-3f3f-4835-ad54-d12c9151541d |
| name | secret_policy |
| rules | |
| shared | False |
| tenant_id | 5b32b072f8354942ab13b6decb1294b3 |
+-------------+--------------------------------------+
Buat entri kebijakan RBAC menggunakan perintah neutron rbac-create (dalam contoh ini, ID proyek dimana kami ingin berbagi dengan adalah a6bf6cfbcd1f4e32a57d2138b6bd41d1
):
$ neutron rbac-create --target-tenant a6bf6cfbcd1f4e32a57d2138b6bd41d1 \
--action access_as_shared --type qos-policy e45e6917-3f3f-4835-ad54-d12c9151541d
Created a new rbac_policy:
+---------------+--------------------------------------+
| Field | Value |
+---------------+--------------------------------------+
| action | access_as_shared |
| id | ec2e3db1-de5b-4043-9d95-156f582653d0 |
| object_id | e45e6917-3f3f-4835-ad54-d12c9151541d |
| object_type | qos_policy |
| target_tenant | a6bf6cfbcd1f4e32a57d2138b6bd41d1 |
| tenant_id | 5b32b072f8354942ab13b6decb1294b3 |
+---------------+--------------------------------------+
Parameter target-tenant
menentukan proyek yang membutuhkan akses ke kebijakan QoS. Parameter action
menentukan proyek apa yang diperbolehkan untuk dilakukan. Parameter type
mengatakan bahwa objek target adalah kebijakan QoS. Parameter terakhir adalah ID kebijakan QoS dimana kita memberikan akses ke.
Proyek a6bf6cfbcd1f4e32a57d2138b6bd41d1
sekarang akan dapat melihat kebijakan QoS ketika menjalankan neutron qos-policy-list dan neutron qos-policy-show dan juga akan dapat mengikat ke port atau jaringan. Tidak ada pengguna lain (selain admin dan pemilik) akan dapat melihat kebijakan QoS.
Untuk menghapus akses untuk proyek itu, hapus kebijakan RBAC yang mengizinkan menggunakan perintah neutron rbac-delete:
$ neutron rbac-delete e45e6917-3f3f-4835-ad54-d12c9151541d
Deleted rbac_policy: e45e6917-3f3f-4835-ad54-d12c9151541d
Jika proyek yang memiliki port atau jaringan dengan kebijakan QoS diterapkan kepada mereka, server tidak akan menghapus kebijakan RBAC sampai kebijakan QoS tidak lagi digunakan:
$ neutron rbac-delete e45e6917-3f3f-4835-ad54-d12c9151541d
RBAC policy on object e45e6917-3f3f-4835-ad54-d12c9151541d
cannot be removed because other objects depend on it.
Proses ini dapat diulang beberapa kali untuk berbagi qos-policy dengan jumlah proyek berapapun.
Untuk membuat sebuah jaringan tersedia sebagai jaringan eksternal untuk proyek-proyek tertentu bukan untuk semua proyek, gunakan aksi access_as_external
.
Buat jaringan dimana Anda menginginkan tersedia sebagai jaringan eksternal:
$ neutron net-create secret_external_network
Created a new network:
+---------------------------+--------------------------------------+
| Field | Value |
+---------------------------+--------------------------------------+
| admin_state_up | True |
| availability_zone_hints | |
| availability_zones | |
| created_at | 2016-04-30T06:51:46 |
| description | |
| id | f9e39715-f7da-4bca-a74d-fc3675321661 |
| ipv4_address_scope | |
| ipv6_address_scope | |
| mtu | 1450 |
| name | secret_external_network |
| port_security_enabled | True |
| provider:network_type | vxlan |
| provider:physical_network | |
| provider:segmentation_id | 1073 |
| router:external | False |
| shared | False |
| status | ACTIVE |
| subnets | |
| tags | |
| tenant_id | dfe49b63660e494fbdbf6ad2ca2a810f |
| updated_at | 2016-04-30T06:51:46 |
+---------------------------+--------------------------------------+
Buat entri kebijakan menggunakan perintah neutron rbac-create (dalam contoh ini, ID proyek dimana kami menginginkan berbagi dengan adalah e28769db97d9449da658bc6931fcb683
):
$ neutron rbac-create --target-tenant e28769db97d9449da658bc6931fcb683 \
--action access_as_external --type network f9e39715-f7da-4bca-a74d-fc3675321661
Created a new rbac_policy:
+---------------+--------------------------------------+
| Field | Value |
+---------------+--------------------------------------+
| action | access_as_external |
| id | c26b3b05-5781-48a1-a36a-fb63072b5e56 |
| object_id | f9e39715-f7da-4bca-a74d-fc3675321661 |
| object_type | network |
| target_tenant | e28769db97d9449da658bc6931fcb683 |
| tenant_id | dfe49b63660e494fbdbf6ad2ca2a810f |
+---------------+--------------------------------------+
Parameter target-tenant`
menentukan proyek yang membutuhkan akses ke jaringan. Parameter action
menentukan proyek apa yang diperbolehkan untuk dilakukan. Parameter type
menunjukkan bahwa objek target adalah jaringan. Parameter terakhir adalah ID jaringan dimana kami memberikan akses eksternal untuknya.
Sekarang proyek e28769db97d9449da658bc6931fcb683
mampu melihat jaringan ketika menjalankan neutron net-list dan neutron net-show dan dapat menghubungkan port gerbang router ke jaringan itu. Tidak ada pengguna lain (selain admin dan pemilik) dapat melihat jaringan.
Untuk menghapus akses untuk proyek itu, hapus kebijakan yang mengizinkan penggunaan perintah neutron rbac-delete:
$ neutron rbac-delete c26b3b05-5781-48a1-a36a-fb63072b5e56
Deleted rbac_policy: c26b3b05-5781-48a1-a36a-fb63072b5e56
Jika proyek yang memiliki port gerbang router terpasang ke jaringan itu, server akan mencegah kebijakan dari penghapusan sampai port telah dihapus:
$ neutron rbac-delete c26b3b05-5781-48a1-a36a-fb63072b5e56
RBAC policy on object f9e39715-f7da-4bca-a74d-fc3675321661
cannot be removed because other objects depend on it.
Proses ini dapat diulang beberapa kali untuk membuat jaringan yang tersedia sebagai eksternal sampai jumlah proyek berapapun.
Jika jaringan ditandai sebagai eksternal selama pembuatan, sekarang secara implisit hal itu menciptakan kebijakan RBAC wildcard memberikan akses setiap orang untuk menjaga tindakan sebelumnya sebelum fitur ini ditambahkan.
$ neutron net-create global_external_network --router:external
Created a new network:
+---------------------------+--------------------------------------+
| Field | Value |
+---------------------------+--------------------------------------+
| admin_state_up | True |
| availability_zone_hints | |
| availability_zones | |
| created_at | 2016-04-30T07:00:57 |
| description | |
| id | cb78991c-cdde-445b-a8ca-d819b9266756 |
| ipv4_address_scope | |
| ipv6_address_scope | |
| is_default | False |
| mtu | 1450 |
| name | global_external_network |
| port_security_enabled | True |
| provider:network_type | vxlan |
| provider:physical_network | |
| provider:segmentation_id | 1007 |
| router:external | True |
| shared | False |
| status | ACTIVE |
| subnets | |
| tags | |
| tenant_id | dfe49b63660e494fbdbf6ad2ca2a810f |
| updated_at | 2016-04-30T07:00:57 |
+---------------------------+--------------------------------------+
Pada contoh di atas standar atribut router:external
adalah True
seperti yang diharapkan. Sekarang kebijakan wildcard terlihat dalam daftar kebijakan RBAC:
$ neutron rbac-list --object_id=cb78991c-cdde-445b-a8ca-d819b9266756 \
-c id -c target_tenant
+--------------------------------------+---------------+
| id | target_tenant |
+--------------------------------------+---------------+
| 2b72fe2e-20cf-4856-af12-3ac0733604d8 | * |
+--------------------------------------+---------------+
Anda dapat mengubah atau menghapus kebijakan ini dengan kendala yang sama seperti kebijakan access_as_external
RBAC lainnya.
File policy.json
default tidak akan mengizinkan pengguna biasa untuk berbagi objek dengan proyek lainnya menggunakan wildcard; Namun, hal itu akan mengizinkan mereka untuk berbagi objek dengan ID proyek tertentu.
Jika operator ingin mencegah pengguna biasa melakukan ini, "create_rbac_policy":
entri dalam policy.json
dapat disesuaikan dari ""
menjadi "rule:admin_only"
.
Except where otherwise noted, this document is licensed under Creative Commons Attribution 3.0 License. See all OpenStack Legal Documents.