<div dir="ltr"><div dir="ltr">sorry, I lost the ML address again.</div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">Alex Xu <<a href="mailto:soulxu@gmail.com">soulxu@gmail.com</a>> 于2019年3月12日周二 下午10:55写道:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div dir="ltr">After review this patch <a href="https://review.openstack.org/630769" target="_blank">https://review.openstack.org/630769</a>, it probably leads me get some memory back.</div><div dir="ltr"><br></div><div>The reason we don't support user based policy and pass the instance's context as target is John and Sean mention that we don't have enough test to ensure all the APIs work correctly for cross the tenant user request.</div><div><br></div><div>Similar to the patch <a href="https://review.openstack.org/630769" target="_blank">https://review.openstack.org/630769</a> try to fix, that patch fix the case admin user to execute a shelve action on normal tenant user. If we enable a tenant user to execute an action on another tenant's server, that will extend the case of  <a href="https://review.openstack.org/630769" target="_blank">https://review.openstack.org/630769</a>, we need ensure it works for that case also.</div><div><br></div><div>So hope I remember correctly, just note at here, in case I forget mention that in the future.</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">melanie witt <<a href="mailto:melwittt@gmail.com" target="_blank">melwittt@gmail.com</a>> 于2019年2月20日周三 下午4:16写道:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">On Tue, 19 Feb 2019 10:42:32 -0600, Matt Riedemann <<a href="mailto:mriedemos@gmail.com" target="_blank">mriedemos@gmail.com</a>> <br>
wrote:<br>
> On 2/18/2019 8:22 PM, melanie witt wrote:<br>
>> Right, that is the proposal in this email. That we should remove<br>
>> project_only=True and let the API policy check handle whether or not the<br>
>> user from a different project is allowed to get the instance. Otherwise,<br>
>> users are not able to use policy to control the behavior because it is<br>
>> hard-coded in the database layer.<br>
> <br>
> I think this has always been the long-term goal and I remember a spec<br>
> from John about it [1] but having said that, the spec was fairly<br>
> complicated (to me at least) and sounds like there would be a fair bit<br>
> of auditing of the API code we'd need to do before we can remove the DB<br>
> API check, which means it's likely not something we can complete at this<br>
> point in Stein.<br>
> <br>
> For example, I think we have a lot of APIs that run the policy check on<br>
> the context (project_id and user_id) as the target before even pulling<br>
> the resource from the database, and the resource itself should be the<br>
> target, right?<br>
> <br>
> [1] <a href="https://review.openstack.org/#/c/433037/" rel="noreferrer" target="_blank">https://review.openstack.org/#/c/433037/</a><br>
<br>
Thanks for the link -- I hadn't seen this spec yet.<br>
<br>
Yes, Alex just pinged me in #openstack-nova and now I finally understand <br>
his point that I kept missing before. He tried a test with my WIP patch <br>
and a user from project A was able to 'nova show' an instance from <br>
project B, even though the policy was set to 'rule:admin_or_owner'. The <br>
reason is because when the instance project/user isn't passed as a <br>
target to the policy check, the policy check for the request context <br>
project_id won't do anything. There's nothing for it to compare <br>
project_id with. This is interesting because it makes me wonder, what <br>
does a policy check like that [2] do then? It will take more learning on <br>
my part about the policy system to understand it.<br>
<br>
-melanie<br>
<br>
[2] <br>
<a href="https://github.com/openstack/nova/blob/3548cf59217f62966a21ea65a8cb744606431bd6/nova/api/openstack/compute/servers.py#L425" rel="noreferrer" target="_blank">https://github.com/openstack/nova/blob/3548cf59217f62966a21ea65a8cb744606431bd6/nova/api/openstack/compute/servers.py#L425</a><br>
<br>
<br>
<br>
<br>
</blockquote></div>
</blockquote></div></div>