Volume transfers: Remove duplicate policy check
There is an initial policy check in the transfers accept API[1] which validates correctly if the user is authorized to perform the operation or not. However, we've a duplicate check in the volume API layer which passes a target object (volume) while authorizing which is wrong for this API. While authorizing, we enforce check on the project id of the target object i.e. volume in this case which, before the transfer operation is completed, contains the project id of source project hence making the validation wrong. In the case of transfers API, any project is able to accept the transfer given they've the auth key required to secure the transfer accept So this patch removes the duplicate policy check. [1] https://opendev.org/openstack/cinder/src/branch/master/cinder/transfer/api.py#L225 Closes-Bug: #1950474 Change-Id: I3930bff90df835d9d8bbf7e6e91458db7e5654be (cherry picked from commit7ba9935a6e
) (cherry picked from commit46415541a7
)
This commit is contained in:
parent
30578a728c
commit
b86da5d407
|
@ -51,7 +51,6 @@ from cinder.policies import snapshot_metadata as s_meta_policy
|
|||
from cinder.policies import snapshots as snapshot_policy
|
||||
from cinder.policies import volume_actions as vol_action_policy
|
||||
from cinder.policies import volume_metadata as vol_meta_policy
|
||||
from cinder.policies import volume_transfer as vol_transfer_policy
|
||||
from cinder.policies import volumes as vol_policy
|
||||
from cinder import quota
|
||||
from cinder import quota_utils
|
||||
|
@ -828,8 +827,6 @@ class API(base.Base):
|
|||
|
||||
def accept_transfer(self, context, volume, new_user, new_project,
|
||||
no_snapshots=False):
|
||||
context.authorize(vol_transfer_policy.ACCEPT_POLICY,
|
||||
target_obj=volume)
|
||||
if volume['status'] == 'maintenance':
|
||||
LOG.info('Unable to accept transfer for volume, '
|
||||
'because it is in maintenance.', resource=volume)
|
||||
|
|
|
@ -0,0 +1,8 @@
|
|||
---
|
||||
fixes:
|
||||
- |
|
||||
`Bug #1950474 <https://bugs.launchpad.net/cinder/+bug/1950474>`_: Fixed
|
||||
policy authorization for transfer accept API. Previously, if an operator
|
||||
had overridden the default transfer accept policy to something project
|
||||
specific in policy.yaml file, it would break the transfer accept API
|
||||
which is fixed in this release.
|
Loading…
Reference in New Issue