Rol-Tabanlı Erişim Kontrolü (RBAC) politika çerçevesi, belirli projeler için hem işleyicilere hem kullanıcılara kaynaklara erişim yetkisi verilmesini sağlar.
Mevcutta, bu özellik kullanarak verilebilecek erişim şunun tarafından desteklenmektedir:
Bir nesneyi belirli bir projeyle paylaşmak, hedef projeye o nesne üzerindeki access_as_shared
eylemine izin veren bir politika girişi oluşturarak gerçekleştirilir.
Paylaşmak için bir ağ oluştur:
$ openstack network create secret_network
+---------------------------+--------------------------------------+
| Field | Value |
+---------------------------+--------------------------------------+
| admin_state_up | UP |
| availability_zone_hints | |
| availability_zones | |
| created_at | 2017-01-25T20:16:40Z |
| description | |
| dns_domain | None |
| id | f55961b9-3eb8-42eb-ac96-b97038b568de |
| ipv4_address_scope | None |
| ipv6_address_scope | None |
| is_default | None |
| mtu | 1450 |
| name | secret_network |
| port_security_enabled | True |
| project_id | 61b7eba037fd41f29cfba757c010faff |
| provider:network_type | vxlan |
| provider:physical_network | None |
| provider:segmentation_id | 9 |
| qos_policy_id | None |
| revision_number | 3 |
| router:external | Internal |
| segments | None |
| shared | False |
| status | ACTIVE |
| subnets | |
| updated_at | 2017-01-25T20:16:40Z |
+---------------------------+--------------------------------------+
openstack network rbac create komutunu kullanarak politika girdisi oluştur (bu örnekte paylaşmak istediğimiz projenin ID’si b87b2fc13e0248a4a031d38e06dc191d
):
$ openstack network rbac create --target-project \
b87b2fc13e0248a4a031d38e06dc191d --action access_as_shared \
--type network f55961b9-3eb8-42eb-ac96-b97038b568de
+-------------------+--------------------------------------+
| Field | Value |
+-------------------+--------------------------------------+
| action | access_as_shared |
| id | f93efdbf-f1e0-41d2-b093-8328959d469e |
| name | None |
| object_id | f55961b9-3eb8-42eb-ac96-b97038b568de |
| object_type | network |
| project_id | 61b7eba037fd41f29cfba757c010faff |
| target_project_id | b87b2fc13e0248a4a031d38e06dc191d |
+-------------------+--------------------------------------+
target-project
parametresi, ağa erişim gerektiren projeyi belirtir. action
parametresi, projeye ne yapmaya izin verildiğini belirtir. ``type``parametresi, hedef nesnenin bir ağ olduğunu söyler. Son parametre, erişim izni verdiğimiz ağın kimliğidir.
b87b2fc13e0248a4a031d38e06dc191d
projesi openstack network list ve openstack network show komutlarını çalıştırırken ağları görebilir ve bu ağda bağlantı noktası oluşturabilir. Diğer kullanıcılar (yöneticiler ve sahiplerin dışındakiler) ağı görebileceklerdir.
Bu proje için erişimi kaldırmak için, openstack network rbac delete komutunu kullanarak erişim izni veren politikayı silin:
$ openstack network rbac delete f93efdbf-f1e0-41d2-b093-8328959d469e
Bu proje ağda bağlantı noktalarına sahipse, sunucu, bağlantı noktaları silinene kadar politikanın silinmesini önleyecektir:
$ openstack network rbac delete f93efdbf-f1e0-41d2-b093-8328959d469e
RBAC policy on object f93efdbf-f1e0-41d2-b093-8328959d469e
cannot be removed because other objects depend on it.
Bu süreç, keyfi sayıda projeyle bir ağ paylaşmak için herhangi bir sayıda tekrarlanabilir.
Paylaşmak için QoS politikası oluşturun:
$ openstack network qos policy create secret_policy
+-------------+--------------------------------------+
| Field | Value |
+-------------+--------------------------------------+
| description | |
| id | 1f730d69-1c45-4ade-a8f2-89070ac4f046 |
| name | secret_policy |
| project_id | 61b7eba037fd41f29cfba757c010faff |
| rules | [] |
| shared | False |
+-------------+--------------------------------------+
RBAC poltikasını openstack network rbac create komutunu kullanarak oluşturun (bu örnekte, politikayı paylaşmak istediğimiz projenin ID’si be98b82f8fdf46b696e9e01cebc33fd9
):
$ openstack network rbac create --target-project \
be98b82f8fdf46b696e9e01cebc33fd9 --action access_as_shared \
--type qos_policy 1f730d69-1c45-4ade-a8f2-89070ac4f046
+-------------------+--------------------------------------+
| Field | Value |
+-------------------+--------------------------------------+
| action | access_as_shared |
| id | 8828e38d-a0df-4c78-963b-e5f215d3d550 |
| name | None |
| object_id | 1f730d69-1c45-4ade-a8f2-89070ac4f046 |
| object_type | qos_policy |
| project_id | 61b7eba037fd41f29cfba757c010faff |
| target_project_id | be98b82f8fdf46b696e9e01cebc33fd9 |
+-------------------+--------------------------------------+
target-project
parametresi, QoS politikasına erişim gerektiren projeyi belirtir. action
parametresi, projenin neler yapmasına izin verildiğini belirtir. type
parametresi, hedef nesnenin QoS politikası olduğunu söyler. Son parametre, erişim izni verdiğimiz QoS politikasının kimliğidir.
be98b82f8fdf46b696e9e01cebc33fd9
projesi, openstack network qos policy list ve openstack network qos policy show komutları çalıştırılırken QoS politikalarını görebilecektir, ayrıca bağlantı noktalarına ve ağa bağlanabilir. Hiç bir kullanıcı (yöneticiler ve sahipler hariç) QoS politikalarını göremeyecektir.
Projeden erişimi kaldırmak için, buna izin veren RBAC politikasını openstack network rbac delete komutu kullanarak silin:
$ openstack network rbac delete 8828e38d-a0df-4c78-963b-e5f215d3d550
Bu projede QoS politikası uygulanmış bağlantı noktaları veya ağlar varsa, sunucu QoS ilkesi artık kullanılmayana kadar RBAC ilkesini silmeyecektir:
$ openstack network rbac delete 8828e38d-a0df-4c78-963b-e5f215d3d550
RBAC policy on object 8828e38d-a0df-4c78-963b-e5f215d3d550
cannot be removed because other objects depend on it.
Bu süreç, istenilen sayıda projeyle bir qos politikası paylaşmak için herhangi bir sayıda tekrarlanabilir.
Bir ağı tüm projeler yerine belirli projeler için harici bir ağ olarak kullanılabilir hale getirmek için access_as_external
eylemini kullanın.
Harici bir ağ olarak kullanılmasını istediğiniz bir ağ oluşturun:
$ openstack network create secret_external_network
+---------------------------+--------------------------------------+
| Field | Value |
+---------------------------+--------------------------------------+
| admin_state_up | UP |
| availability_zone_hints | |
| availability_zones | |
| created_at | 2017-01-25T20:36:59Z |
| description | |
| dns_domain | None |
| id | 802d4e9e-4649-43e6-9ee2-8d052a880cfb |
| ipv4_address_scope | None |
| ipv6_address_scope | None |
| is_default | None |
| mtu | 1450 |
| name | secret_external_network |
| port_security_enabled | True |
| project_id | 61b7eba037fd41f29cfba757c010faff |
| proider:network_type | vxlan |
| provider:physical_network | None |
| provider:segmentation_id | 21 |
| qos_policy_id | None |
| revision_number | 3 |
| router:external | Internal |
| segments | None |
| shared | False |
| status | ACTIVE |
| subnets | |
| updated_at | 2017-01-25T20:36:59Z |
+---------------------------+--------------------------------------+
openstack network rbac create komutunu kullanarak politika girdisi oluştur (bu örnekte, politikayı paylaşmak istediğimiz projenin ID’si 838030a7bf3c4d04b4b054c0f0b2b17c
)
$ openstack network rbac create --target-project \
838030a7bf3c4d04b4b054c0f0b2b17c --action access_as_external \
--type network 802d4e9e-4649-43e6-9ee2-8d052a880cfb
+-------------------+--------------------------------------+
| Field | Value |
+-------------------+--------------------------------------+
| action | access_as_external |
| id | afdd5b8d-b6f5-4a15-9817-5231434057be |
| name | None |
| object_id | 802d4e9e-4649-43e6-9ee2-8d052a880cfb |
| object_type | network |
| project_id | 61b7eba037fd41f29cfba757c010faff |
| target_project_id | 838030a7bf3c4d04b4b054c0f0b2b17c |
+-------------------+--------------------------------------+
target-project
parametresi, ağa erişim gerektiren projeyi belirtir. action
parametresi, projenin neler yapmasına izin verildiğini belirtir. type
parametresi, hedef nesnenin bir ağ olduğunu gösterir. Son parametre, harici erişim izni verdiğimiz ağın kimliğidir.
Şimdi 838030a7bf3c4d04b4b054c0f0b2b17c
projesi, openstack network list and openstack network show komutları çalıştırıldığında ağı görebilir ve yönlendirici geçit bağlantı noktalarını bu ağa bağlayabilir. Diğer kullanıcılar (yöneticiler ve sahipler dışındakiler) ağı göremezler.
Bu proje için erişimi kaldırmak için, openstack network rbac delete komutunu kullanarak erişim izni veren politikayı silin:
$ openstack network rbac delete afdd5b8d-b6f5-4a15-9817-5231434057be
Bu proje, o ağa bağlı yönlendirici ağ geçidi bağlantı noktalarına sahipse, sunucu, bağlantı noktaları silinene kadar politikanın silinmesini önler:
$ openstack network rbac delete afdd5b8d-b6f5-4a15-9817-5231434057be
RBAC policy on object afdd5b8d-b6f5-4a15-9817-5231434057be
cannot be removed because other objects depend on it.
Bu süreç, herhangi bir sayıda projeye harici olarak erişilebilmesi için tekrar edilebilir.
Oluşturma sırasında bir ağ, harici olarak işaretlenirse, artık bu özellik eklenmeden önceki davranışlarını korumak için herkesin erişim iznini veren bir joker karakter RBAC politikası oluşturur.
$ openstack network create global_external_network --external
+---------------------------+--------------------------------------+
| Field | Value |
+---------------------------+--------------------------------------+
| admin_state_up | UP |
| availability_zone_hints | |
| availability_zones | |
| created_at | 2017-01-25T20:41:44Z |
| description | |
| dns_domain | None |
| id | 72a257a2-a56e-4ac7-880f-94a4233abec6 |
| ipv4_address_scope | None |
| ipv6_address_scope | None |
| is_default | None |
| mtu | 1450 |
| name | global_external_network |
| port_security_enabled | True |
| project_id | 61b7eba037fd41f29cfba757c010faff |
| provider:network_type | vxlan |
| provider:physical_network | None |
| provider:segmentation_id | 69 |
| qos_policy_id | None |
| revision_number | 4 |
| router:external | External |
| segments | None |
| shared | False |
| status | ACTIVE |
| subnets | |
| updated_at | 2017-01-25T20:41:44Z |
+---------------------------+--------------------------------------+
Yukarıdaki çıktıda standart router:external
özniteliği beklendiği gibi External
dır. Artık bir jokerlik politikası RBAC politika listelerinde görünür:
$ openstack network rbac list --long -c ID -c Action
+--------------------------------------+--------------------+
| ID | Action |
+--------------------------------------+--------------------+
| b694e541-bdca-480d-94ec-eda59ab7d71a | access_as_external |
+--------------------------------------+--------------------+
Bu politikayı diğer RBAC access_as_external
politikasıyla aynı kısıtlamaları kullanarak değiştirebilir veya silebilirsiniz.
Varsayılan policy.json
dosyası, normal kullanıcıların nesnelere joker karakter kullanarak başka her projeyle paylaşmalarına izin vermez; Ancak, nesneleri belirli proje kimlikleri ile paylaşmalarına izin verir.
Eğer operator, normal kullanıcıların bunu yapmasını engellemek isterse, policy.json
dosyasındaki "create_rbac_policy":
girdisi ""
iken "rule:admin_only"
olarak ayarlanabilir.
Except where otherwise noted, this document is licensed under Creative Commons Attribution 3.0 License. See all OpenStack Legal Documents.