Github user bhaisaab commented on a diff in the pull request: https://github.com/apache/cloudstack/pull/1489#discussion_r60368615 --- Diff: engine/schema/src/org/apache/cloudstack/acl/RolePermissionVO.java --- @@ -0,0 +1,109 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + +package org.apache.cloudstack.acl; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.EnumType; +import javax.persistence.Enumerated; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.Table; +import java.util.UUID; + +@Entity +@Table(name = "role_permissions") +public class RolePermissionVO implements RolePermission { --- End diff -- @koushik-das okay I got what you're saying, but it's not possible. Also see we've to be backward compatible with the static checker, so (1) the order of processing of rules need to be similar to the static-checker which is first allow rules then deny checks, then finally annotation and lastly deny all, (2) rules can be both apiname or wildcards such as list\* therefore we cannot have the references reversed or what you're suggesting, (3) the model promotes explicit rules than implicit declarations for security and various use-case (so we don't assume anything), (4) if we want an API like deployVM to be available for all or some role types we can use the authorized field in the API annotation (for example using authorized={RoleType.Admin, RoleType.User ... etc} will enable this API for all when no explicit rules are set by the admin). I've thought this through but this is the best model we can have trading feature use, functionality and security. Provided this, do you have suggestion if we can improve this.?
--- If your project is set up for it, you can reply to this email and have your reply appear on GitHub as well. If your project does not have this feature enabled and wishes so, or if the feature is enabled but not working, please contact infrastructure at infrastruct...@apache.org or file a JIRA ticket with INFRA. ---