Skip to content

Commit 8c04d19

Browse files
committed
Enabled new defaults and scope checks by default
Enabling the enforce scope and new defaults by default in glance Related blueprint secure-rbac Change-Id: I0808dc0b1b34b527e38aa137c1dd25e1fc06409f
1 parent 81da9cc commit 8c04d19

12 files changed

+177
-44
lines changed

.zuul.yaml

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -289,6 +289,20 @@
289289
glance_store:
290290
rbd_thin_provisioning: True
291291

292+
# TODO(pdeore): Remove this jobs once all the glance jobs will be tested
293+
# with new RBAC in integrated way and we do not need this separate job.
294+
- job:
295+
name: tempest-integrated-storage-enforce-scope-new-defaults
296+
parent: tempest-integrated-storage
297+
description: |
298+
This job runs the Tempest tests with scope and new defaults enabled
299+
Glance services.
300+
vars:
301+
devstack_localrc:
302+
NOVA_ENFORCE_SCOPE: true
303+
CINDER_ENFORCE_SCOPE: true
304+
GLANCE_ENFORCE_SCOPE: true
305+
292306
- project:
293307
templates:
294308
- check-requirements
@@ -319,6 +333,8 @@
319333
- ^\.zuul\.yaml$
320334
- tempest-integrated-storage:
321335
irrelevant-files: *tempest-irrelevant-files
336+
- tempest-integrated-storage-enforce-scope-new-defaults:
337+
irrelevant-files: *tempest-irrelevant-files
322338
- tempest-integrated-storage-import:
323339
irrelevant-files: *tempest-irrelevant-files
324340
- tempest-integrated-storage-import-standalone:
@@ -339,6 +355,8 @@
339355
- openstack-tox-functional-py39
340356
- tempest-integrated-storage:
341357
irrelevant-files: *tempest-irrelevant-files
358+
- tempest-integrated-storage-enforce-scope-new-defaults:
359+
irrelevant-files: *tempest-irrelevant-files
342360
- tempest-integrated-storage-import:
343361
irrelevant-files: *tempest-irrelevant-files
344362
- tempest-integrated-storage-import-standalone:

glance/api/policy.py

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -34,11 +34,15 @@
3434
_ENFORCER = None
3535

3636

37-
# TODO(gmann): Remove setting the default value of config policy_file
38-
# once oslo_policy change the default value to 'policy.yaml'.
39-
# https://github.com/openstack/oslo.policy/blob/a626ad12fe5a3abd49d70e3e5b95589d279ab578/oslo_policy/opts.py#L49
37+
# TODO(gmann): Remove overriding the default value of config options
38+
# 'policy_file', 'enforce_scope', and 'enforce_new_defaults' once
39+
# oslo_policy change their default value to what is overridden here.
4040
DEFAULT_POLICY_FILE = 'policy.yaml'
41-
opts.set_defaults(cfg.CONF, DEFAULT_POLICY_FILE)
41+
opts.set_defaults(
42+
cfg.CONF,
43+
DEFAULT_POLICY_FILE,
44+
enforce_scope=True,
45+
enforce_new_defaults=True)
4246

4347

4448
class Enforcer(policy.Enforcer):

glance/common/config.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -593,7 +593,7 @@
593593
594594
Related options:
595595
* [DEFAULT]/node_staging_uri""")),
596-
cfg.BoolOpt('enforce_secure_rbac', default=False,
596+
cfg.BoolOpt('enforce_secure_rbac', default=True,
597597
deprecated_for_removal=True,
598598
deprecated_reason=_("""
599599
This option has been introduced to require operators to opt into enforcing

glance/tests/functional/__init__.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -585,6 +585,9 @@ def __init__(self, test_dir, port, policy_file, delayed_delete=False,
585585
self.image_location_quota = 2
586586
self.disable_path = None
587587

588+
self.enforce_secure_rbac = True
589+
self.enforce_new_defaults = True
590+
588591
self.needs_database = True
589592
default_sql_connection = SQLITE_CONN_TEMPLATE % self.test_dir
590593
self.sql_connection = os.environ.get('GLANCE_TEST_SQL_CONNECTION',
@@ -626,9 +629,11 @@ def __init__(self, test_dir, port, policy_file, delayed_delete=False,
626629
location_strategy=%(location_strategy)s
627630
allow_additional_image_properties = True
628631
enabled_backends=file1:file,file2:file,file3:file
632+
enforce_secure_rbac=%(enforce_secure_rbac)s
629633
[oslo_policy]
630634
policy_file = %(policy_file)s
631635
policy_default_rule = %(policy_default_rule)s
636+
enforce_new_defaults=%(enforce_new_defaults)s
632637
[paste_deploy]
633638
flavor = %(deployment_flavor)s
634639
[store_type_location_strategy]

glance/tests/unit/test_cache_middleware.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -409,7 +409,8 @@ def fake_get_v2_image_metadata(*args, **kwargs):
409409
rules = {
410410
"restricted":
411411
"not ('test_1234':%(x_test_key)s and role:_member_)",
412-
"download_image": "role:admin or rule:restricted"
412+
"download_image": "role:admin or rule:restricted",
413+
"get_image": ""
413414
}
414415
self.set_policy_rules(rules)
415416
cache_filter.policy = glance.api.policy.Enforcer(

glance/tests/unit/test_policy.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -320,7 +320,8 @@ def test_policy_file_check(self):
320320
self.assertEqual(False, enforcer.check(context, 'get_image', {}))
321321

322322
def test_policy_file_get_image_default_everybody(self):
323-
rules = {"default": ''}
323+
rules = {"default": '',
324+
"get_image": ''}
324325
self.set_policy_rules(rules)
325326

326327
enforcer = glance.api.policy.Enforcer(

glance/tests/unit/utils.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import urllib
2121

2222
from oslo_config import cfg
23+
from oslo_policy import policy
2324

2425
from glance.async_.flows._internal_plugins import base_download
2526
from glance.common import exception
@@ -87,6 +88,14 @@ def get_fake_request(path='', method='POST', is_admin=False, user=USER1,
8788
return req
8889

8990

91+
def enforcer_from_rules(unparsed_rules):
92+
rules = policy.Rules.from_dict(unparsed_rules)
93+
enforcer = glance.api.policy.Enforcer(
94+
suppress_deprecation_warnings=True)
95+
enforcer.set_rules(rules, overwrite=True)
96+
return enforcer
97+
98+
9099
def fake_get_size_from_backend(uri, context=None):
91100
return 1
92101

0 commit comments

Comments
 (0)