Do not allow a tenant to create a default SG for another one
The attempt to list security groups for a project, or any
random string, can create a default SG for it. Only allow if
privileges support it.
Closes-bug: #1988026
Change-Id: Ieef7011f48cd2188d4254ff16d90a6465bbabfe3
(cherry picked from commit 01fc2b9195
)
This commit is contained in:
parent
c72f1ce3d6
commit
717e3e0955
@ -931,6 +931,10 @@ class SecurityGroupDbMixin(ext_sg.SecurityGroupPluginBase,
|
||||
|
||||
:returns: the default security group id for given tenant.
|
||||
"""
|
||||
# Do not allow a tenant to create a default SG for another one.
|
||||
# See Bug 1987410.
|
||||
if tenant_id != context.tenant_id and not context.is_admin:
|
||||
return
|
||||
if not extensions.is_extension_supported(self, 'security-group'):
|
||||
return
|
||||
default_group_id = self._get_default_sg_id(context, tenant_id)
|
||||
|
@ -659,3 +659,15 @@ class SecurityGroupDbMixinTestCase(testlib_api.SqlTestCase):
|
||||
self.mixin._ensure_default_security_group(self.ctx, 'tenant_1')
|
||||
create_sg.assert_not_called()
|
||||
get_default_sg_id.assert_not_called()
|
||||
|
||||
def test__ensure_default_security_group_tenant_mismatch(self):
|
||||
with mock.patch.object(
|
||||
self.mixin, '_get_default_sg_id') as get_default_sg_id,\
|
||||
mock.patch.object(
|
||||
self.mixin, 'create_security_group') as create_sg:
|
||||
context = mock.Mock()
|
||||
context.tenant_id = 'tenant_0'
|
||||
context.is_admin = False
|
||||
self.mixin._ensure_default_security_group(context, 'tenant_1')
|
||||
create_sg.assert_not_called()
|
||||
get_default_sg_id.assert_not_called()
|
||||
|
Loading…
Reference in New Issue
Block a user