Repository: cloudstack
Updated Branches:
  refs/heads/4.4 1aff3a5f0 -> c4ab1d577


CLOUDSTACK-6558 IAM - Admin user is able to deploy VM in a regular user's 
Security Group.

Changes:
- Even for SecurityGroup, go through IAM to do permission checks for all type 
of accounts


Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/33c3752d
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/33c3752d
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/33c3752d

Branch: refs/heads/4.4
Commit: 33c3752d0e08d29962762872da845b66b0c04339
Parents: 1aff3a5
Author: Prachi Damle <pra...@cloud.com>
Authored: Thu May 1 12:18:23 2014 -0700
Committer: Daan Hoogland <d...@onecht.net>
Committed: Fri May 2 18:50:52 2014 +0200

----------------------------------------------------------------------
 .../com/cloud/network/security/SecurityGroupManagerImpl.java    | 4 ++--
 server/src/com/cloud/user/AccountManagerImpl.java               | 5 ++++-
 2 files changed, 6 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/33c3752d/server/src/com/cloud/network/security/SecurityGroupManagerImpl.java
----------------------------------------------------------------------
diff --git 
a/server/src/com/cloud/network/security/SecurityGroupManagerImpl.java 
b/server/src/com/cloud/network/security/SecurityGroupManagerImpl.java
index b4c67b8..a666ecd 100755
--- a/server/src/com/cloud/network/security/SecurityGroupManagerImpl.java
+++ b/server/src/com/cloud/network/security/SecurityGroupManagerImpl.java
@@ -612,7 +612,7 @@ public class SecurityGroupManagerImpl extends ManagerBase 
implements SecurityGro
         }
 
         // Verify permissions
-        _accountMgr.checkAccess(caller, null, securityGroup);
+        _accountMgr.checkAccess(caller, AccessType.OperateEntry, 
securityGroup);
         Long domainId = owner.getDomainId();
 
         if (protocol == null) {
@@ -1120,7 +1120,7 @@ public class SecurityGroupManagerImpl extends ManagerBase 
implements SecurityGro
         }
 
         // check permissions
-        _accountMgr.checkAccess(caller, null, group);
+        _accountMgr.checkAccess(caller, AccessType.OperateEntry, group);
 
         return Transaction.execute(new 
TransactionCallbackWithException<Boolean, ResourceInUseException>() {
             @Override

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/33c3752d/server/src/com/cloud/user/AccountManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/user/AccountManagerImpl.java 
b/server/src/com/cloud/user/AccountManagerImpl.java
index b5fdc3a..301dde4 100755
--- a/server/src/com/cloud/user/AccountManagerImpl.java
+++ b/server/src/com/cloud/user/AccountManagerImpl.java
@@ -102,6 +102,7 @@ import com.cloud.network.dao.NetworkVO;
 import com.cloud.network.dao.RemoteAccessVpnDao;
 import com.cloud.network.dao.RemoteAccessVpnVO;
 import com.cloud.network.dao.VpnUserDao;
+import com.cloud.network.security.SecurityGroup;
 import com.cloud.network.security.SecurityGroupManager;
 import com.cloud.network.security.dao.SecurityGroupDao;
 import com.cloud.network.vpc.Vpc;
@@ -497,7 +498,8 @@ public class AccountManagerImpl extends ManagerBase 
implements AccountManager, M
 
             for (ControlledEntity entity : entities) {
                 if (entity instanceof VirtualMachineTemplate || entity 
instanceof Network
-                        || entity instanceof AffinityGroup) {
+                        || entity instanceof AffinityGroup || entity 
instanceof SecurityGroup) {
+                    // Go through IAM (SecurityCheckers)
                     for (SecurityChecker checker : _securityCheckers) {
                         if (checker.checkAccess(caller, accessType, apiName, 
entity)) {
                             if (s_logger.isDebugEnabled()) {
@@ -540,6 +542,7 @@ public class AccountManagerImpl extends ManagerBase 
implements AccountManager, M
 
             }
         } else {
+            // Go through IAM (SecurityCheckers)
             for (SecurityChecker checker : _securityCheckers) {
                 if (checker.checkAccess(caller, accessType, apiName, 
entities)) {
                     if (s_logger.isDebugEnabled()) {

Reply via email to